良いプログラマビッグデータはルートシェア学習のMapReduce 、構文解析のプロセス全体をモバイルデータとモバイルコンピューティング
モバイルデータとにさらされる大規模なデータを検討すると、モバイルコンピューティングこれらの二つの密接に関連し、また地元のモバイル・コンピューティング・コンピューティングと呼ばれる非常に異なる概念を持っています。
以前のデータを処理するときに使用される移動データは、実際に処理されたデータ転送は、異なるノードそれぞれのデータ処理モードロジックに格納する必要があります。特にデータに大量のデータが大きいので、非効率的な実行、少なくとも全て GB 以上、よりはTB 、PB も大きく、およびディスクI / O 、ネットワークI / Oの効率は非常に低い、長い時間がかかりますので、それらを扱う、我々は我々の要求を満たすことができません。モバイルコンピューティングが浮上しています。
また、ローカル・コンピューティング、データが格納されていると呼ばれるモバイルコンピューティングは、ノード上の変更はもはやありませんが、各ノード上のデータへの処理ロジックプログラム。処理プログラムのサイズ確かに特に大きくはないので、これは迅速に達成各ノードにデータを格納するためのプログラムを転送し、ローカルデータ処理、高効率化を行うことができます。ビッグデータ処理技術は、このように使用されています。
簡潔に言いました:
地図の段階:
。1 、リードデータソースを読み出し、データフィルタの1つにK / V
2 、地図:地図機能、パースのプロセスK / Vを、そして新しいK / V
。3 、収集:リングバッファに記憶された出力、
4は、流出:メモリ領域がいっぱいになると、データはローカルディスクに書き込まれ、一時ファイルが生成されます
5 、コンバインなどのデータファイルの生産を確保するために、一時ファイルをマージ:
削減ステージを:
1は、シャッフル:コピーフェーズは、タスクを減らし種々にマップ作業データのコピーのために、データのリモート複製分 2 、その大きさが一定のしきい値を超えた場合、その後、ディスクを書き込み、それ以外の場合、メモリに
3 、マージ:過度の消費あまりにも多くのメモリやディスクファイルを防ぐために、メモリとディスク上のファイルをマージ
4 、並び替え:マップ作業段階半順序、削減タスクのマージソートを行う段階
。5 、削減:データのために減らす機能を
。6 、書き込み:軽減機能を、計算書かれた結果HDFS 上
深さ分析、言いました:
MapTaskの段階
( 1)リードステージ:書き込むことによりMapTaskユーザRecordReader 、入力 InputSplit いずれかで解析されたキー/値。
( 2)地図の相:主ノードが解析され、ユーザに書き込まキー/値のマップ()関数を処理するための新しい組のキー/値。
( 3)収集収集段階:ユーザの調製マップ()関数、データ処理が完了した後、通常呼び出しOutputCollector.collect()を出力。関数の内部で、それが生成されます(呼び出しキー/値のパーティションをパーティション分割する)、および書き込みをリングバッファメモリをに。
( 4)流出ステージは:リングバッファがいっぱいになると、MapReduceはにデータを書き込みます「オーバーフローは、書いた」ローカルディスク、上の一時ファイルを作成します。ローカルディスクにデータを書き込む前に、データが最初に行わなければならない、ということに注意してください地元のソートやデータ、必要に応じて統合、圧縮や他の操作を。
位相オーバーフローの詳細を記述します。
ステップ 1:使用するクイックソートアルゴリズムを最初のパーティション番号に基づいていることを注文し、キャッシュ領域にデータをソートするパーティションその後、ソートされ、続くキーの並べ替えを。このように、ソート後に、データパーティションは、同じパーティションキーと秩序に従い、すべてのデータを単位として一緒に来て、とします。
ステップ 2:各パーティション内のデータを回すには、一時ファイルを書き込む出力/ spillN.outで昇順で作業ディレクトリパーティション番号の任務(Nは、書き込み電流のオーバーフローの数を表している)に従ってインチ ユーザーが設定した場合コンバイナがあるファイルを書き込む前に、集計作業に一度、各パーティション内のデータ。
ステップ 3:メモリパーティションインデックスデータ構造に書き込まれたデータのメタ情報SpillRecord ここで一時ファイル内のオフセットを含む各パーティションのメタ情報、圧縮前のデータサイズと圧縮後のデータサイズ。現在のインデックスのメモリサイズを超える場合は 1メガバイトを、次いで、メモリは、インデックスに書き込まれるファイルの部分の出力/ spillN.out.index。
(5) 。のCombin Eの段階:すべてのデータ処理が完了すると、 MapTaskすべての一時ファイルを一度組み合わせ終わりがあることを確認するために、1つのデータファイルになります。場合は、すべてのデータを処理した後、 MapTask意志一つの大きなファイルにすべての一時ファイル、およびファイル保存し、出力/ file.outを、対応する生成しながら、インデックスファイルの出力/ file.out.indexを。マージプロセス、中にファイル単位としてパーティションをマージするMapTask。パーティションの場合は、使用する再帰的なマージ複数回の道を。ラウンド合わせ、最終的に大きなファイルを取得するまでio.sort.factor(デフォルト100)ファイル、およびファイルを生成再マージリスト、ソート・ファイルに追加する、上記のプロセスが繰り返されます。各MapTaskが最終的にだけデータファイルを生成してみましょう、あなたは同時に開いて読むために同時にたくさんのファイルを避けることができ、小さなランダムリード多数のファイルを費やします生成。一時ファイル、圧縮前のデータサイズと圧縮後のデータサイズなどの情報を相殺しました。現在のインデックスメモリのサイズは1MBを超える場合は、メモリがでインデックスファイル出力/ spillN.out.indexに書き込まれます。
シャッフルステージを(マッピングする出力端子を削減入力)
1)に、出力の私達の地図()KV方法を収集maptask メモリバッファに
2)継続的にメモリバッファオーバーフローローカルディスクファイルから、複数のファイルがオーバーフローすることができます
3)多个溢出文件会被合并成大的溢出文件
4)在溢出过程中,及合并的过程中,都要调用partitioner进行分区和针对key进行排序
5)reducetask根据自己的分区号,去各个maptask机器上取相应的结果分区数据
6)reducetask会取到同一个分区的来自不同maptask的结果文件,reducetask会将这些文件再进行合并(归并排序)
7)合并成大文件后,shuffle的过程也就结束了,后面进入reducetask的逻辑运算过程(从文件中取出一个一个的键值对group,调用用户自定义的reduce()方法)
3)注意Shuffle中的缓冲区大小会影响到mapreduce程序的执行效率,原则上说,缓冲区越大,磁盘io的次数越少,执行速度就越快。缓冲区的大小可以通过参数调整,参数:io.sort.mb默认100M。
ReduceTask阶段
(1)Copy阶段:ReduceTask从各个MapTask上远程拷贝一片数据,并针对某一片数据,如果其大小超过一定阈值,则写到磁盘上,否则直接放到内存中。
(2)Merge阶段:在远程拷贝数据的同时,ReduceTask启动了两个后台线程对内存和磁盘上的文件进行合并,以防止内存使用过多或磁盘上文件过多。
(3)Sort阶段:按照MapReduce语义,用户编写reduce()函数输入数据是按key进行聚集的一组数据。为了将key相同的数据聚在一起,Hadoop采用了基于排序的策略。由于各个MapTask已经实现对自己的处理结果进行了局部排序,因此,ReduceTask只需对所有数据进行一次归并排序即可。
(4)Reduce阶段:reduce()函数将计算结果写到HDFS上。