HDFSとMapReduceの機能上のHadoopプラットフォーム

1.原理とプロセスの作業、プラットフォームのHadoop HDFSとMapReduceの機能に明確にするために、あなた自身の言葉を使用してください。

 HDFS

(1)まず、名前ノードのフォーマットを開始fsimageを作成し、ファイルを編集します。これはあなたが初めて起動されていない場合、ログインして画像を直接メモリにファイルをロードして編集します。
(2)クライアントは、追加および削除のメタデータを要求します。
(3)名前ノードのレコード操作ログを、ローリングログを更新します。
(4)名前ノード欠失データは、メモリチェックの変化します。

2)第二段階:二名前ノードの作業は
、(1)二次名前ノードは、チェックポイントを必要と名前ノードかどうかを尋ねました。名前ノードは、直接戻るかどうかの結果を確認します。
チェックポイントの(2)二次名前ノード要求の実行。
(3)名前ノードスクロール書き込まれている編集はログインします。
(4)ミラーファイルとセカンダリ名前ノードにコピースクロールする前に、編集ログ。
(5)二次名前ノード負荷と画像メモリにログファイルを編集し、そしてプールしました。
(6)新たな画像ファイルfsimage.chkpointを生成します。
(7)fsimage.chkpoint名前ノードをコピーします。
名前ノードはfsimageに改名さfsimage.chkpointます。

データノード:

メタデータは、データブロックの長さを備え、二つのファイル、データ自体のものを含め、ディスク上に格納され、チェックサム・データ・ブロック、およびタイムスタンプ。
情報ブロック名前ノードの全てを報告する周期(1時間により、登録を開始した後、2)データノードの名前ノード)。
3)結果と心拍毎に3秒は、複写機、またはデータ・ブロックを削除するように、他のブロックにデータにハートビート名前ノードのデータノードコマンドを返しました。10分以上は、ハートビートデータノードを受信しなかった場合は、ノードが使用できないと考えられています。
4)クラスタ操作が安全に参加し、いくつかのマシンを残すことができる
のMapReduceを:

シャッフル工程:
1)MapTaskは、メモリバッファに、出力の私たちのマップ()KV方法を収集
メモリ・バッファ・オーバーフローのローカルディスクファイルから連続的に)2、複数のファイルがオーバーフローすることができます
3)複数の予備ファイルになります大予備ファイルにまとめ
オーバーフロー工程4)、そして合わせたプロセス、我々は分割して、キーをソートするためのパーティを呼び出す必要があり
、そのパーティション番号ReduceTaskに応じ。5)、各マシンmaptaskに対応する結果データパーティションを取ります
6)reducetaskは、ReduceTask次いで(ソートマージ)ファイルをマージします異なるmaptaskから結果ファイルの同じパーティションに取られる
論理ReduceTaskに戻し、処理が終わってシャッフル、結合ファイルより7)拡大操作
(グループのための鍵の抜き出し減らす()メソッドは、ファイルからユーザ定義のコール)

 

maptask

(1)ステージを読む:マップ作業RecordReaderは、入力InputSplitから一つのキー/値を解析し、ユーザーによって書かれました。
(2)地図の相:メインノードは、ユーザマップ()関数ハンドルに書き込まれたキー/値を構文解析し、キー/値の新しいセットを生成します。
(3)収集ステージを収集:ユーザマップ()関数、データ処理が完了したとき、通常OutputCollector.collect()を呼び出し出力の調製。関数の内部で、それはキー/値のパーティション(パーティション分割コール)を生成し、リングバッファメモリに書き込まれます。
(4)流出段階:リングバッファがいっぱいになったとき、MapReduceのは一時ファイルを作成し、ローカルディスクにデータを書き込みます「オーバーフローは、書きました」。ローカルディスクにデータを書き込む前に、データが最初に地元のソート、およびデータの統合、必要に応じて、圧縮や他の操作を行わなければならない、ということに注意してください。
書き込みフェーズ・オーバーフローの詳細:
ステップ1:使用クイックソートアルゴリズムは、最初のパーティション番号に基づいていることを注文し、キャッシュ領域にデータをソートし
、次にソートパーティション、およびキーに従ってソートされました。このように、ソート後に、データパーティションは、同じパーティションキーと秩序に従い、すべてのデータを単位として一緒に来て、とします。
ステップ2:各パーティション内のデータを回すには、一時ファイルを書き込む出力/ spillN.outで昇順で作業ディレクトリパーティション番号の任務(Nは、書き込み電流のオーバーフローの数を表している)に従ってインチ ユーザーがコンバイナを設定した場合、集約操作と、各パーティション内のデータを、ファイルを書き込む前に、です。
ステップ3:パーティションデータメタ情報は、メモリSpillRecordインデックスデータ構造で記述される一時ファイル内のオフセットを含む各パーティションのメタ情報、圧縮前のデータサイズと圧縮後のデータサイズ。現在のインデックスメモリのサイズは1MBを超える場合は、メモリがでインデックスファイル出力/ spillN.out.indexに書き込まれます。
(5)相を組み合わせる:すべてのデータ処理が完了すると、MapTask合併一度すべての一時ファイルのために、それが最終的にデータファイルを生成することを確実にするために。
場合は、すべてのデータを処理した後、MapTaskは、すべての一時ファイル意志一つの大きなファイルに変換し、インデックスファイルは、対応する出力/ file.out.indexを生成しながら、ファイル出力/ file.outを保存します。
マージ処理中にファイル、MapTaskは、ユニットとしてのパーティションをマージします。パーティションの場合、それは再帰的に複数サイクルを使用していますマージ。最終的には大きなファイルを取得するまでio.sort.factor(デフォルト100)ファイル、および生成された再マージリストに追加するファイル、ソートファイル、上記のプロセスが繰り返されるラウンド組み合わせます。
各MapTaskが最終的にだけデータファイルを生成してみましょう、あなたは同時に開いて読むために同時にたくさんのファイルを避けることができ、小さなランダムリード多数のファイルを費やします生成。

reducetask:

(1)コピーステージを各MapTaskからReduceTaskデータのリモートコピーと、ある1つのデータを、そのサイズが一定の閾値を超えた場合、ディスクに書き込まれる、又はメモリに直接。
(2)段階をマージ:データのリモートコピーながら、ReduceTaskのバックグラウンドスレッドが過度の使用大量のメモリやディスクファイルを防止するために、ディスクとメモリの統合に2つのファイルを開始しました。
(3)ソート相:調製係るMapReduceのセマンティクスを低減する、入力データのユーザ()関数は、キーによって収集されたデータの集合です。一緒に同じ鍵データに、Hadoopをベース仕分け戦略を採用します。各MapTaskが自分の治療結果は、ローカルの一種だった達成しているので、それゆえ、ReduceTaskは一度だけ、すべてのデータをソートすることができマージ。
(4)ステージの削減:削減()関数は、HDFS上の計算結果を書き込みます。

 

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/destinymingyun/p/10993295.html