背景と定義
HDFS:ファイルを保存するための分散ファイルシステムは、主な機能は、そのクラスタ内の各サーバーの役割が持っている、多くのサーバーがその機能を達成するために一緒に働くことを、配布されます
- データ量の増加、オペレーティングシステムでは、すべてのより多くのディスク・オペレーティング・システムの管理に配布、その後、任意のデータを保存しますが、管理やメンテナンス、非常に不便のため、緊急の複数を管理するシステムの必要性マシン上のファイルの分散管理システムで、HDFSは1です。
- HDFSが使用され、一度、何度も読んで書き込み、シーン、およびドキュメントに直接変更をサポートしていないだけで、ファイルの追加の端部を支持します
- 使用してHDFS ストリーミングデータのアクセス方法を:データが終わっていないが、データの処理を少し超える「フロー」により、少しは少し処理したら機能は、水のようなものです。それだけ超えるすべてのデータの後に処理される場合、遅延は素晴らしいものだ、と多くのメモリを消費します。
長所と短所
- 高い耐障害性
- データは、耐障害性を向上させる方法のコピーを追加することによって、複数のコピーを自動的に保存されます
- 一つのコピーが失われた後ならば、それは自動的に新しいコピーとして、他のノードに割り当てることができます
- 大規模なデータ
- データ・スケール:GBまで処理できるデータのサイズ、TB、PB及びデータの偶数レベル
- ファイルサイズ:ファイルサイズの百万人以上の数を扱うことができる、数は非常に大きいです
- これは、信頼性を向上させるマルチコピー機構を介して、低コストのマシン上に構築することができます
コンポーネントアーキテクチャ
namenode(nn)
:マスターである、マネージャー、メタデータストアであります- HDFSの名前空間の管理
- ポリシーのコピーを設定します
- 地図情報管理ブロック
- クライアントの要求に読み込みと書き込み
datanode(dn)
:スレーブは、ファイルを保存するための本当の場所です- 実際のデータブロックを格納
- データブロックの読み取り操作と書き込み
secondarynamenode(2nn)
:名前ノードがハングする場合、ホットスタンバイを名前ノードはない、と名前ノードを交換し、すぐに出すことはできません- 補助名前ノードとして、そのような定期的な合併Fsimageや編集などの作業負荷を、(後ろの記事では、これら二つのことについてお話します)を共有し、そして名前ノードにプッシュ
- 緊急の場合には、回復の名前ノードを助けるかもしれないが、一部だけを復元することができ、すべてではない回復が
client
:クライアント- その後、セグメンテーションブロックのカットにHDFS、クライアントのファイルをアップロードする前に、ファイル、およびアップロードする一つずつ
- 名前ノード情報ファイルのデータノードにアクセスできる、との対話
- データノードデータを読み書き、との対話
- クライアントは、名前ノードのフォーマットとして、HDFSを管理するためのコマンドを提供します
- HDFS改革およびその他を検索するために、このような追加や削除などの一部のコマンドを介して、HDFSにアクセスするためのクライアント
ファイルのブロックサイズ
なぜ抽象化ブロックブロックストレージを提出する必要がありますか?
- 単一のブロックは、ディスク全体のファイル容量の大きさよりも大きくすることができるように分割され、ブロック構成ファイルは理論的には、単一のディスク・ファイル・クラスタは、すべてのマシンを占めることができる、クラスタに分散されてもよいです。
- ブロックの抽象化は、(これらの要素は、ファイルレベルで制御されている)など、所有者、その権利の内容に注意を払うことなく、ブロックのためのストレージシステムを簡素化します。
- 耐障害性と高可用性機構としてのブロックは、ブロック内での複製の単位、すなわち単位をコピー。
HDFSのファイルは64M、128Mは、なぜそれがさ、Hadoop2.x版で128Mにブロック(ブロック)、ブロックサイズのデフォルトを刻まれた物理メモリに古いバージョンを保存しますか?
実際には、ブロックのサイズが提供されるHDFSディスク転送速度は、主に依存し、以下のように:
- HDFSは、シーク時間は10msである場合は、それが目標時間を見つけるために、ある10msのブロックであり、
- 専門家は言う:操作のための最高の条件のアドレッシング時間が伝送時間の1%で、1秒の伝送時間
- 現在のディスクの転送速度は、一般的に100M / sであります
ブロック・サイズが小さすぎる設定されていないなぜ、それがあまりにも大きく設定することはできませんか?
- プログラムはブロックの開始位置を探していることができるように小さすぎる設定HDFSのブロックは、アドレス時間は、増加します
- セットが大きすぎると非常に遅くなり、ディスク転送時間は、ブロックアドレス時間を見つけるために必要なデータよりもかなり大きくなり、これは、データを処理するプログラムを引き起こし
HDFSデータ・ストリーム
HDFS書き込みデータの流れ
- 名前ノードアップロードファイルを要求するクライアントによるファイルシステムモジュールは、ターゲットファイルが既に存在するかどうかを確認する名前ノード、分散、親ディレクトリが存在します。
- それはアップロードすることができる場合に返さ名前ノード。
- サーバーにアップロードするには、いくつかのデータノード上の最初のブロッククライアント要求。
- 名前ノードは、三個のデータノードのノードは、それぞれ、DN1、DN2、DN3、戻り距離及び負荷に応じて複数のノードがある場合、コピーの実際の数を返す、そして計算されます
- クライアントがFSDataOutputStreamモジュールを介してDN1アップロードデータを要求し、要求のDN1領収書は、DN2コールDN3、その後、DN2を呼び出していきます通信パイプラインが完成される確立します。
- DN1、DN2、ステップ応答クライアントによってDN3段階。
- クライアントは最初、DN1のパケットが通過DN2、DN3 DN2通過を受信するユニットをパケットに(ディスクで開始するローカルメモリキャッシュにデータを読み出す)ブロックDN1アップロードし始め、DN1が各パス応答パケットは、応答を待つキューに配置されます。
- ブロック転送が完了すると、クライアント要求は再び名前ノードブロック第二のサーバにアップロードしました。(繰り返しは3-7ステップ)。
距離計算ノードのトポロジー---
HDFSへのデータ書き込みの過程では、名前ノードは、受信したデータデータノードの最も近い距離からのデータをアップロードすることを選択します、そして、最も近い距離は、それを計算する方法ですか?
結論:2つのノードが最も近い到達するための共通の祖先の距離の合計は、ノードの距離です。
図に示すように:
- 0の同じノード距離にプロセス・ノード
- 一般的なラックR1の二つのノードまでの距離の和と同じラック上の異なるノードから、2
- クラスタの距離d1は、4つのノードの共通祖先と同じデータセンターのノード距離異なるラック
- 二つのデータセンタの共通の祖先までの距離のノードと、6のデータセンター間距離の異なるノード
ラック意識(ノード選択コピーが格納されています)
私たちは、HDFSはそれのコピーを格納する方法であるノードを選択し、設定ファイルからのコピーの数を設定することができますか?
上記のように、フォールトトレランス、次の設定を改善するために、追加の3つのコピーがあります。
- クライアントは、クラスタ外のクライアントは、次いで、ランダムに選択された場合、ノード上の最初のコピー
- そして、同じラック内の最初のコピーの2番目のコピー、ランダムなノード
- 別のフレームに位置する第3のコピー、ランダムなノード
その目的は、耐障害性を向上させることです。
HDFSは、データフローを読みます
- ブロックが配置されているファイルのデータノードのアドレスを見つけるために、メタデータを照会することにより、名前ノード、名前ノードにファイルをダウンロードするためのクライアントによる分散ファイルシステム要求。
- 選択DataNodes(近接の原理は、ランダムに)サーバは、要求は、データを読み出します。
- クライアントへのデータ転送を開始するデータノード(較正ユニットパケットを行うために、入力ストリーム内のディスクからデータを読み出します)。
- ユニット、ローカルキャッシュに最初に、次に先のファイルに書き込まれたパケット受信するクライアント。