-
HDFSは、A.TXT 300Mをアップロードファイルをシェル
-
-
シェルは、ファイルをアップロードするための要求を送信します名前ノード
-
名前ノードアップロードできるかどうかを確認し、ファイルシステムのディレクトリツリーを検出
-
シェルをアップロードできるようにする名前ノードの送信通知
-
アップロードブロック1シェルは名前ノード、バックアップ通知3に送信します。
-
以下のメカニズムを見つけるためのIP、IPの3つのデータノードのための名前ノード検出データノード情報プール:
-
(最小経験スイッチ)最寄りのネットワークトポロジ
-
シェル自体はデータノードがある場合は、ローカルバックアップコピーはなります。
-
バックアップと同じラック(ラックの検出、下記を参照してください)
-
別のシャーシのバックアップ
-
-
検出された名前ノードIPは、シェルに戻りました
-
IP最近シェル、例えばDataNode1、データ伝送接続確立要求、パイプラインの確立を検出します
-
Hadoopのパイプラインは、パイプライン配達と類似オブジェクトにデータを送信するために使用されます。
-
DataNode2にDataNode1ビルドパイプライン
-
DataNode3にDataNode2ビルドパイプライン
-
-
成功した通知は、バックステップ2-1,1-シェルを構築するためのDataNode3 DataNode2リターンパイプライン。
-
OutputStreamのシェルによって、DataNode1にデータを送信し、徐々に発行する手段としてパケット(64K)へ。
-
ローカルデータノードレベル、ストアデータを受信した後。
-
-
データノードは、保存した後のデータは、データ転送が完了したことを確認するために、逆方向パケットデータチェックを送信するカスケードます。
-
転送が近いパイプラインは、5-11を繰り返し、完成されています。
検出ラック
以下は、議論のURLの内容に基づいています。
https://blog.csdn.net/w182368851/article/details/53729790
https://www.cnblogs.com/zwgblog/p/7096875.html
ラック検出原理は、実際にあるコア-site.xml構成ファイルはオプションです。
< プロパティ> < 名前> topology.script.file.name </ 名前> < 値> /home/bigdata/apps/hadoop-talkyun/etc/hadoop/topology.sh </ 値> </ プロパティ>
-
この設定オプションの値は、実行可能プログラム、通常はスクリプトとして指定されています。
-
スクリプトは、1つのパラメータの出力値をとります。
-
パラメータは、通常、データノード・マシンのIPアドレステーブルであり、出力の値は、一般的に対応するには、データノード(ラック)に配置されているIPアドレスのラック。
-
プロセス:
-
名前ノードが起動すると、それが空でない場合、それはラック構成の認識が有効になっていることを意味し、設定オプションが空であるかどうかを判断します。
-
この時点で、スクリプトは構成に応じて名前ノードになります。
-
スクリプトへのパラメータとして心拍任意のデータノード(ハートビート)、データノードのIPアドレスを受信すると、データノードは、このマシンは、各かどうかを知ることができるであろうように、マップがメモリに格納され、各ラック得ることができます同じラックに。
-
-
簡単な例をプロフィール:
#は/ usr / binに/!のpython # - * -コーディング:UTF- 8を - * - インポートsysが ラック = { " NN01 ":" RACK2 " 、 " NN02 ":" rack3 " 、 " DN01 ":" rack4 " 、 " DN02 ":" rack4 " " DN03 ":" RACK1 」、 " DN04 ":" rack3 " 、 " DN05 ":" RACK1 " 、 " DN06 ":" rack4 " 、 " DN07 ":" RACK1 " 、 " DN08 ":" RACK2 " 、 " DN09 ":" RACK1 " 、 " DN10 ":"RACK2 」、 " 172.16.145.32 ":" RACK2 " 、 " 172.16.145.33 ":" rack3 " 、 " 172.16.145.34 ":" rack4 " 、 " 172.16.145.35 ":" rack4 " 、 " 172.16.145.36 ":" RACK1 " 、 " 172.16.145.37 ":" rack3 "、 "172.16.145.38 ":" RACK1 " " 172.16.145.39 ":" rack4 " " 172.16.145.40 ":" RACK1 " " 172.16.145.41 ":" RACK2 " " 172.16.145.42 ":" RACK1 " " 172.16.145.43 ":" RACK2 」、 } 場合 __name __ == " __main__ " : 印刷" / " + rack.get(sys.argvの[ 1 ]、" rack0 " )