PHPはじめにこんにちは、t_oookaです。Streamingを使用して、PHPでmap,reduce処理を実装してみます。扱える)などでmap,reduce処理を記述することができるようになります。完全分散モードで、管理ノード(hadoop-master)1台、計算ノード(hadoop-slave)1台及びクライアント(hadoop-client)1台の合計3台の構成です。ジョブの投入などはクライアント(hadoop-client)から実行することとします。jarコマンドに「hadoop-streaming.jar」を指定します。その他のオプションについては、以下の通りです。hadoopのクラスタへコピーするファイルを指定します。今回は、AWSのELBのアクセスログからELBのステータスコード毎の件数を集計する処理を実装して動作を確認します。ELBのアクセスログは、1行がスペースを区切り文字として13項目で構成されます。アクセスログをご参照ください。map処理の実装map処理では、hadoopの仕組みにより標準入力へELBのアクセスログが行単位で渡されてくるため、1行ごとに標準入力より読み取り、"ステータスコード"<TAB>"件数"を出力するようにしています。今回の場合は、アクセスログ1行につき1件のため"件数"は1固定にしています。[/php]reduce処理の実装reduce処理では、map処理での出力が"ステータスコード"でソートされた状態で、標準入力に渡されてきます。今回はステータスコード毎の件数を取得したいため、単純に件数分を合計する実装としています。Streamingの仕組みに、わかりやすい解説がありますので、こちらをご参照ください。Streamingで、MapReduce処理を実行してみます。S3上に保存されたELBのアクセスログ(100ファイル、8,014,771行)を解析し、結果をHDFS上へ出力します。[/bash]解析結果を確認します。S3も利用できるようになっています。S3を利用するために、以下の設定を追加しています。[/java]パッケージング(jarの生成)hadoopで実行するため、Javaによる実装をjarファイルへパッケージングします。Antを利用しました。[/xml]antでパッケージングを実行します。jarコマンドにパッケージングしたjarファイルを指定します。そのあとの引数は、順に、ジョブの設定を記述したmainメソッドをもつクラス名、map処理に入力元、reduce処理の出力先を指定します。Streamingを使用すれば、簡単なものであればシェルやコマンドで十分実装できてしまうので、お手軽に分散処理を実装したい場合は、アリだなと思いました。Streamingの仕組み上のオーバヘッドなのかどうかはソースコードを調べるなど今後の課題にしたいと思います。Streamingを選択するなどの考え方ができそうです。SDK担当のt_kinamiです。Sparkを使って、メモリ使用量が大きいバッチ処理をスケールアウトこんにちは、弊社で1ヶ月半ほどインターンとして働いているt_s...2014-10-14PHPのジェネレータを使おうこんにちは。最近、都内を離れると行くとこ...2014-07-29MongoDBとHiveでごにょごにょ事始めこんにちは、s_mamedaifukuです。...2014-03-28MuninでELBのメトリクスをモニタリングするこんにちは、t_oookaです。Are青山のアドテク会社。アドネットワークやDSPを開発・運用。サーバを止めてみたよ。インターン:実業務体験編インターンでCTR予測をしましたSearchArchiveスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。