Tezについて解説します。MapReduceは,MapとReduceからなる単純なインタフェースを有し,多くのデータ処理を記述できる汎用的な並列データ処理系(フレームワーク)である反面,その単純さによりいくつかの性能的な課題が存在すると考えられます。複雑なジョブをMapReduceで実行する場合,MapとReduceからなるMapReduceジョブを複数段連ねて実行する必要があります(図1⁠)⁠。当該ケースにおいては,MapReduceジョブの間において,分散ファイルシステムを介したデータの入出力が行われてしまい,当該入出力は,性能の観点においてはオーバーヘッドであるため,ジョブの実行時間を長くする原因の1つとなりえます。複数のMapReduceジョブから構成される複雑な処理をMapReduce上で動作させた際の実行例また,複数のMapReduceジョブの間においては,前段のMapReduceジョブが完了するまで後段のMapReduceジョブを開始することができません。このアーキテクチャでは,当然,パイプライン並列性(第5回)を活用するようなデータ処理方式をとることはできません。加えて,MapReduceは一種の整列(ソート)処理フレームワークであることから(第7回⁠)⁠,必ずしも整列が必要でない処理においても整列処理をしてしまう可能性があり,当該ケースにより性能が低下する場合があります。処理するデータ量が小さい場合においては,MapReduceジョブの起動と終了のオーバーヘッドは無視できないものとなります。近年,MapReduceはHiveやPigを始めとするMapReduce上で動作するSQL処理系やDSLから用いられることが多く,当該ケースにおいて生成されるジョブは多くの場合複数のMapReduceジョブから構成されるため,上述のMapReduceの制約は,性能的に大きな問題となる可能性があります。Tez[1]と称される汎用的な並列データ処理系の開発が始まりました。Graph,以下DAG)なるグラフ構造により表現するため(図2⁠)⁠,ジョブをMapReduceジョブの木構造で構成するMapReduce(図1)よりもジョブを直感的に記述することが可能です(※1⁠)⁠。Tezのジョブにおいては,グラフの頂点が処理の内容を表わし,グラフの枝が頂点間のデータの流れを表します。頂点においては,基本的には任意の処理を記述することができます。枝においては,頂点間のデータの移動を柔軟に記述することができます。データをどの頂点からどの頂点に転送するかに関する設定や,頂点間の中間データをどのように永続化させるかに関する設定を記述することができます。Tezのこのような特徴により,たとえば,複数のMapReduceジョブで構成されていたジョブを,1つのTezのジョブとして表すことができます(図2⁠)⁠。複数のMapReduceジョブから構成されるジョブと比較して,(⁠ジョブの記述方法によるものの)分散ファイルシステムへの入出力回数は削減され,パイプライン並列性を活用できるなど,MapReduceの制約に起因する多くの性能的な課題を改善することができます。既存のMapReduceジョブを高速化すべく,Tezを用いたMapReduceランタイムの開発も進められています。MapReduceでは後方互換性のために加えられなかったさまざまな改良が加えられています。※1)木はグラフのサブセットであるため,TezはMapReduceよりも汎用であるといえ,当然,Tezを用いてMapReduce処理系を作ることができます。Sparkにもよく似ています。Sparkの両方がMicrosoftにより提案されたDryadというシステムの影響を受けているためです[2]。Tezと,Tezが高速に動作する仕組みについて概要を説明しました。次回からは,Clouderaの矢野さんが,並列データ処理系であるImpalaについて解説していきます。MapReduce著者プロフィール小沢健史(おざわつよし)2010年日本電信電話(株)に入社。2013年度コンピュータサイエンス領域奨励賞受賞。2014年第9回日本OSS奨励賞受賞。Hadoopコミッタとして活動中。ソフトウェアイノベーションセンタ所属。山田浩之(やまだひろゆき)日本アイ・ビー・エム株式会社を経て,ヤフー株式会社にて分散型全文検索エンジンの研究開発に従事。おいて高性能分散型検索エンジンの開発によりスーパークリエータに認定。高性能並列データ処理系の研究開発に従事。著書に『検索エンジン自作入門』。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。