2016-05-12 2 views
2

問題は次のとおりです。クラスタを作成すると3つのデータノードがあり、数日前に別の2つのデータノードが追加されました。hadoopのデータノードで新しいノードを追加したあとに帯域幅が多すぎる

私がこれをした後、私はバランサーを走らせ、バランサーはすぐに終了し、クラスターはバランスがとれていたと言いました。

しかし、データ(約30MB)をクラスタに入れると、データノードは古いデータノードと新しいデータノードの間でデータを送受信するために多くの帯域幅(約400Mbps)を使用していました。

誰かが原因を教えてください。

おそらく私はあなたに2つの写真(zabbixから)、hadoop-02は "古いデータノード"の1つで、hadoop-07は "新しいデータノード"の1つです。 enter image description here enter image description here

答えて

0

ホールドオン!!データ転送中に帯域幅が過度に使用されている、またはバランサがクラスタ内のノードに存在するデータ量のバランスを取るために、データを配置した後にDNが平衡していないと言います。

+0

ご返信ありがとうございます!私は、帯域幅がデータ転送中に過度に利用されていることを意味します。 – zhaozhi

1
  1. ネットワークトラフィックを意味する場合。 Hdfsは書き込みパイプラインを使用します。複製因子が3であると仮定し、データフローは

    クライアントである - データサイズが30メガバイトであれば、全体のトラフィックは(90メガバイトのためにプラスわずかなオーバーヘッドである> Datanode_3

    - > Datanode_1 - > Datanode_2パケットヘッダ、パケットのデータチェックサム)

  2. トラフィックレートを意味する場合。私は現在、Hdfsにはクライアント< - > DNとDN < - > DNの間に帯域幅のスロットルがないと考えています。それはできるだけ多くの帯域幅を使用します。

古いデータノードと新しいデータノードの間にさらに多くのデータフローがあることに気づいた場合。いくつかのブロックが以前に複製されていない場合に発生する可能性があります。新しいノードを追加すると、NameNodeは定期的に古いDNから他のDN(必ずしも新しいものではない)への複製タスクをスケジュールします。

+0

ご返信ありがとうございます!私はネットワークトラフィックを意味します。そして、私はこのアプローチに従うことで、複製されていないブロックの問題を修正しました: – zhaozhi

+0

あなたが投稿した命令は:間違っている。 setrepは、複製されていないブロックを修正しません。ファイルに3つのreplがすでにある場合は、replFactor = 3と設定すると、当然のことながら複製が解決されます。しかし、ファイルのレプリケート数が2以下で、デフォルトではreplFactorが3の場合、replFactor = 3に設定するとnoopになります。まだ複製されていません。 NameNodeは古いDNから新しいDNへの複製タスクをゆっくりスケジューリングします。あなたの投稿写真から、私は正しいと確信しています。私はHDFSコードに精通しています。 2つのDN間の唯一の巨大なトラフィックは、パイプライン書き込みまたはブロック複製タスクです。 – waltersu

+0

私の前のコメントを続けてください:バランサーのコピーと削除はブロック複製のようです。しかし、バランサーはすぐに終了しました。したがって、バランサーが異常に停止していない限り、バランサーが実行されているときのみコピーが行われるため、この可能性は除外されます。私はデータの流れがhadoop-02からhadoop-07までであることを見た。 DNログをチェックして何が起きているのかを確認したい場合があります。 – waltersu

関連する問題