実例で学ぶAWS入門:オーディエンスデータプラットフォーム「cosmi」を例に

第4回 Amazon Elastic MapReduceを学ぶ(後編)

この記事を読むのに必要な時間:およそ 2.5 分

CloudFrontのログ形式

実際のCloudFrontのログはテキスト形式ではなく,gzip形式です。HadoopのTextInputFormatを使う場合,gzip形式の圧縮テキストファイルの内容を透過的に扱うことができますので,プログラムの変更は必要ありません。

ロギングを有効にするには,CloudFrontのDistribution作成ウィザードのDistribution Detailsの画面でLoggingをOnにし,保存先のS3バケットを選択してください。

なお,CloudFrontにアクセスがあってからログが収集されるまでには,数時間のタイムラグが発生する場合もありますので覚えておきましょう。

EMRでのデバッグ

--enable-debuggingオプションを有効にしてEMRでのデバッギングを有効にすると,標準出力と標準エラーをマネジメントコンソールから確認することができます。

$ elastic-mapreduce \
--create --name "access counter" \
--enable-debugging \
--num-instances 1 \
--instance-type m1.small \
--jar s3://cflog-testxxx/daily-access-counter.jar \
--arg s3://cflog-testxxx/input \
--arg s3://cflog-testxxx/output \
--log-uri s3://cflog-testxxx/logs

ただし,デバッグツールの初期化には時間がかかります。デバッグ時には,--aliveオプションを加えてインスタンスを立ち上げっぱなしにしておくのがおすすめです。同じインスタンス群を使って,再度計算を実行することができます。

実行時に出力されるjobflowidを控えておきましょう。

EMRではジョブとステップという2つのライフサイクルがあります。インスタンス群が起動して終了するまでをジョブ,1回のMapReduceをステップと呼びます。したがって,1つのジョブにはひとつ以上のステップが含まれることになります。

既存のジョブにステップを追加するには下記のようにします。

$ elastic-mapreduce \
--jobflow ジョブフローID \
--enable-debugging \
--jar s3://cflog-testxxx/daily-access-counter.jar \
--arg s3://cflog-testxxx/input \
--arg s3://cflog-testxxx/output3 \
--log-uri s3://cflog-testxxx/logs

EMRの導入費用

EMRの費用はインスタンスタイプと「のべ」のインスタンス起動時間によって決まります。

cosmiのシステムは現在1日に600MBほどのファイルを処理しています。内容の異なるEMRバッチを4本実行しており,それぞれm1.smallインスタンス1台を使って,20~30分で済んでしまいます。時間のかかる月次バッチ1本だけはインスタンス数を5台に増やしても2時間ほどの時間を必要とします。

トータルで概ね130インスタンス時間,m1.smallインスタンス費用は0.1USドル, EMR追加料金が0.015USドルですので,ひと月あたり約15USドルの費用が掛かっています。

cosmiの場合,いざやってみるとほとんどのバッチがクラスタ1台の規模で足りてしまったわけですが,月に1度の高負荷バッチや,今後のサービス拡大にも稼働台数を変更するだけで対応できるので,便利に感じています。

EMRの導入に際しては,まずは1台ではじめ,必要に応じてインスタンス数を調整するのがオススメです。なお,EMRの実行時間がたとえ1分であったとしても,1時間とカウントされます。1回のバッチが極端に短い場合には1つのジョブで複数のステップを実行すると良いでしょう。

終わりに

前後編に分けて,Amazon EMRとCloudFrontを組み合わせたデータ処理アプリケーションの実装に取り組みました。EMRの最大の強みは,システムの性能を簡単に拡大・縮小できることです。それにより,開発者は影も形もないサービス,1行も書かれていないアプリケーションの負荷を予測するという,難仕事から解放されるわけです。

EMRはすぐに始められます。EMRを武器にして,あなたのサービスに大規模解析を取り入れてみてはいかがでしょうか。

著者プロフィール

小澤昇歩(こざわしょうほ)

株式会社adingo取締役。

2008年adingo設立にエンジニアとして参加。以降同社の技術・プロダクト部門を担当。技術者と事業者という2つの顔を持ちながら,サービスや事業の成長に日々奮闘中。好きな本は『小さなチーム,大きな仕事』。

ブログ:SHOHOKOZAWA

Twitter:@s_kozawa


岩川建彦(いわかわたけひこ)

株式会社adingoエンジニア。鹿児島大学大学院卒。工学博士。

「分散アプリケーションのためのプログラミング言語開発」をテーマに2007年IPA未踏ユース・スーパークリエータに認定された。現在はクラウド環境を活かしたcosmiのシステム開発に従事している。

著書に『Python入門』(共著,秀和システム)がある。