Hadoopの(3)は、データの書き込みの基本的なプロセスをHDFS

HDFS書き込みデータの流れ

 

 

  • HDFSは、A.TXT 300Mをアップロードファイルをシェル

  1. ファイルのブロック、すべてのブロックのデフォルトの128M。

  2. シェルは、ファイルをアップロードするための要求を送信します名前ノード

  3. 名前ノードアップロードできるかどうかを確認し、ファイルシステムのディレクトリツリーを検出

  4. シェルをアップロードできるようにする名前ノードの送信通知

  5. アップロードブロック1シェルは名前ノード、バックアップ通知3に送信します。

  6. 以下のメカニズムを見つけるためのIP、IPの3つのデータノードのための名前ノード検出データノード情報プール:

    • (最小経験スイッチ)最寄りのネットワークトポロジ

    • シェル自体はデータノードがある場合は、ローカルバックアップコピーはなります。

    • バックアップと同じラック(ラックの検出、下記を参照してください)

    • 別のシャーシのバックアップ

  7. 検出された名前ノードIPは、シェルに戻りました

  8. IP最近シェル、例えばDataNode1、データ伝送接続確立要求、パイプラインの確立を検出します

    • Hadoopのパイプラインは、パイプライン配達と類似オブジェクトにデータを送信するために使用されます。

    • DataNode2にDataNode1ビルドパイプライン

    • DataNode3にDataNode2ビルドパイプライン

  9. 成功した通知は、バックステップ2-1,1-シェルを構築するためのDataNode3 DataNode2リターンパイプライン。

  10. OutputStreamのシェルによって、DataNode1にデータを送信し、徐々に発行する手段としてパケット(64K)へ。

    • ローカルデータノードレベル、ストアデータを受信した後。

  11. データノードは、保存した後のデータは、データ転送が完了したことを確認するために、逆方向パケットデータチェックを送信するカスケードます。

  12. 転送が近いパイプラインは、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 " 

 

おすすめ

転載: www.cnblogs.com/renzhongpei/p/12590328.html