分12はじめにこんにちは,adingoの岩川です。ビッグデータという言葉が浸透して,実際に向き合う機会も増えてきていると感じます。ビッグなデータを処理するには相応の計算パワーが必要です。MapReduceベースのシステムが広く利用されています。MapReduceにおいては,ユーザはMapReduceと呼ばれる計算モデルに従って,Map処理,Reduce処理と呼ばれる計算内容のコア部分だけを書けばよく,タスク配分や通信などをケアする必要がありません。これによって,プログラミングのコストを大幅に減らすことが可能なのです。実はHadoopクラスタの管理は決してラクなものではありません。何台ものサーバをセットアップし,Hadoopをインストールしてやり,動作確認をする......非常に骨の折れる作業です。そもそも,何台のクラスタが必要なのか。やってみないとわからないというのが正直なところではないでしょうか。我々(cosmi開発チーム)もまた,データ分析システムを開発するにあたって,そういった問題を抱えていたのです。MapReduce(EMR)とよばれるPaaSスタイルのHadoop環境を利用することにしました。「実例で学ぶAWS」第3回と第4回は,少し予定を変更して2回ともEMRについて解説していきます。cosmiのケースで起こった,下記のパターンでのMapReduceアプリケーション開発手順を追っていきます。MapReduceプログラムのコンパイルから,ローカル環境で実行して動作確認するところまでを追っていきます。CloudFrontのログを解析するプログラムを作成します。CloudFrontとEMRは相性がよく,CloudFrontのログをそのままEMRで処理することができるようになっています。CloudFrontは静的コンテンツの配信だけではなく,情報を記録するために利用することができます。記録したい情報をGETパラメータに含めたリクエストを行うことで,情報をCloudFrontのログとして貯蔵しておくわけです。cosmiでも,パートナー様から送信されるデータを記録するために,CloudFrontを利用しています。Streamingなどのツールを使えば,Java以外の言語でもMapReduceの処理を書くことが可能です⁠)⁠。Commonのライブラリが必要です。ダウンロードして,解凍しておきましょう。執筆時点(2011年12月1日)での安定版は0.20.203.0です。ローカル環境だけでの簡単な動作確認なら,それほど面倒な設定をせずとも実行可能です。自前の分散実行環境を用意するのであれば,別途チュートリアル等をご参照ください(もっとも,分散環境を作るのは面倒だからEMRを使おうという,本記事の趣旨からは外れますが!⁠)⁠。MapReduceのプログラムを書く前に,MapReduceについて抑えておく必要があるでしょう。MapReduceは分散コンピューティングのための計算モデルです。入力となるキーと値のペアを,1つ,あるいは複数の別のキーと値のペアにマップするMap処理,Map処理の結果をキーごとにまとめるShuffle処理,キーごとにまとまった複数の値を計算して結果を得るReduce処理からなります。Map処理とReduce処理はそれぞれキーの種類ぶん複数回実施されます。それぞれの処理は入力に応じた出力さえ算出すればいいので,並列化しやすいのです。複数回のMapReduceを組み合わせることで,複雑な計算も可能です。Shuffle処理はHadoopに組み込まれており,ユーザが記述する必要はありません。ビッグデータ著者プロフィール小澤昇歩(こざわしょうほ)株式会社adingo取締役。2008年adingo設立にエンジニアとして参加。以降同社の技術・プロダクト部門を担当。技術者と事業者という2つの顔を持ちながら,サービスや事業の成長に日々奮闘中。好きな本は『小さなチーム,大きな仕事』。アプリケーションのためのプログラミング言語開発」をテーマに2007年IPA未踏ユース・スーパークリエータに認定された。現在はクラウド環境を活かしたcosmiのシステム開発に従事している。著書に『Python入門』(共著,秀和システム)がある。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。