「Hadoopの処理の流れ」を理解し、実践する:きょうから試せる Hadoop“スモールスタート”ガイド(2)(2/3 ページ)
実際にHadoopで処理を実装していきながら「Hadoopは、誰にだって扱える」を体感しましょう。今回は「Hadoopの処理の流れ」を解説します。
さて、Mapperの処理をイメージするために、具体的に幾つかMapperの処理を考えてみましょう。例えば、アクセスログから必要な情報だけを残して不要な情報は取り除く、というのはよくある例です。Mapperの出力はReducerにネットワークを介して渡されるので、不要なデータはなるべく渡さないほうが高速に処理することができます(図2-3)。
また、処理の開始時間と終了時間から、その処理に何秒かかったかを計算するような処理は値を別の形式に変換するMapperでしょう(図2-4)。
Hadoop Streamingで処理をする場合には出力は必ず“key<タブ>value”という形式にする必要があります。この形式で出力しないとShuffleフェーズでの振り分け処理が正しく動作しないので気を付けてください。
Shuffleフェーズ
次はShuffleフェーズでデータがShuffle & Sortされます。通常はMapフェーズの出力がそのままShuffleフェーズにデータが渡されますが、Combinerという処理を指定すると、Mapフェーズの出力がCombinerで処理された後、Shuffleフェーズへとデータが渡されます。
Combinerは主にMapフェーズの同一keyに対する出力件数が多い場合に、出力サイズを減らして全体の処理を高速化させるためなどに利用されます。Shuffleフェーズはネットワーク越しに別のノードへのアクセスが発生するため、場合によってはこの段階のデータ量をCombinerで減らしておくことで大幅な高速化が見込めます(図2-5)(図2-6)。
CombinerはそれぞれのMapperに対して独立で実行されるので、複数のMapperの出力がまとめて1つのCombinerへと渡るわけではありません。また、1つのMapperの処理が完全に終了する前に実行されることもあります。Combinerが実行されるタイミングをユーザー側は制御することができないので使う場合は注意してください。
なお、ShuffleフェーズではMapperの出力のkeyに注目し、同じkeyのデータは必ず同じReducerへと渡してくれるように設計されています(図2-7)。
もっと一般的に、Reducerの数よりもkeyの数の方が多い場合には、このように1つのReducerに複数のkeyが渡されます(図2-8)。
さらに、各ReducerではSortまで行ってくれるため、そのあとのReducerの処理が大変やりやすくなります。これらの処理は自動的に行われるため、ユーザー側で何かしなければいけないわけではありませんが、この挙動を利用する形でMapperやReducerを記述する必要があります。Hadoopを利用するために最低限把握しておかないといけない仕様だといってもよいでしょう(図2-9)。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- もし、あなたが「“ビッグデータプロジェクト”を任せる。何とかするように」と言われたら
「ビッグデータプロジェクトを始めることになった」ら、具体的に何をするのか。本連載は、「ビッグデータプロジェクトの“進め方”」を業務視点/ビジネス視点の両面から体系的に理解し、具体的に実践していく方のためのナレッジアーカイブです。第1回目は、「ビッグデータとは何か」の基礎と、「ビッグデータ基盤の概要とメリット」を解説します。 - Hadoopは「難しい・遅い・使えない」? 越えられない壁がある理由と打開策を整理する
ブームだったHadoop。でも実際にはアーリーアダプター以外には、扱いにくくて普及が進まないのが現状だ。その課題に幾つかの解決策が出てきた。転換期を迎えるHadoopをめぐる状況を整理しよう。 - いまさら聞けないHadoopとテキストマイニング入門
Hadoopとは何かを解説し、実際にHadoopを使って大規模データを対象にしたテキストマイニングを行います。テキストマイニングを行うサンプルプログラムの作成を通じて、Hadoopの使い方や、どのように活用できるのかを解説します - 欧米の金融業界は今、どうHadoopを活用しているか
Hadoopは、欧米の金融関連サービス業界でどう活用されているか。米Hortonworksの金融サービス業界担当ゼネラルマネージャーへのインタビューで得た情報を、2回に分けてお届けする。今回は金融業界におけるHadoopのユースケースを概観する。