分はじめに今回は,Hadoopの構成要素である並列データ処理フレームワークMapReduceにおける実装アーキテクチャの特徴について解説します。加えて,類似のシステムである並列データベースを取り上げ,想定するワークロードなどの違いについて解説します。Negotiator(YARN)から構成されます。ここでは,それぞれのコンポーネント間に存在するアーキテクチャの特徴と,各コンポーネントの実装について述べます。・スレーブ型のアーキテクチャを採ります。マスタ・スレーブ型のシステムは,クラスタ全体を管理・統括するマスタと,マスタから命令に従い実際の仕事を行うスレーブから構成されます。Failure)となり可用性が低下する場合や,マスタがボトルネックとなり高いスケーラビリティが実現できない場合があります(図1⁠)⁠。Zookeeperや専用のストレージを利用してマスタの冗長構成を取ることで,システムの可用性を高める取り組みが行われています。これらにより,数千台から数万台規模まで性能をスケールすることが可能となっています。以降において,各コンポーネントの実装について述べます(※1⁠)⁠。Cassandraなどで利用され,おもに,データの一貫性を犠牲にしてスケーラビリティを重視するようなシステムにおいて利用されています。GoogleおよびHadoop関連のシステムの多くはマスタ・スレーブ型で構成されており,スケーラビリティよりも一貫性や単純さを重視する傾向があるといえるでしょう。HDFS,YARN,MapReduceの実装HDFSの実装HDFSの概要を図2に示します。HDFSは,データの位置などのメタデータを管理するNameNodeと,実際にデータを保持するDataNodeから構成されます。HDFSを用いてファイルにアクセスする場合は,ファイルを構成するデータの塊(ブロック)の位置情報などをNameNodeに問い合わせ,当該情報を用いてDataNodeにブロックのアクセスを依頼し,ブロックを取得します。NameNodeとDataNodeは定期的に情報を交換し,その際にDataNodeの死活監視や,ディスク容量の検査などを行います。DataNodeに保存されるブロックは,DataNodeが故障しても失われないよう,基本的に複数の計算機にコピーして配置されます。前回述べたように,HDFSでは,ファイル走査において高い性能を実現するために,ファイルを数十MBから数百GBからなるブロックに分割して管理を行います。HDFSのアーキテクチャの概要NameNodeにおいて発生する状態変更は,ファイルおよびディレクトリの作成や削除の際に発生し,大量の一貫性を要するトランザクションとなることが想定されます。Paxos)を実装して用いることにより,メッセージ数の削減による高性能化を実現しています([1],※2⁠)⁠。Zookeeperは,NameNodeにおける故障検出とNameNodeの切り替え時のロックサービスとして利用されています。次に,YARNの概要を図3に示します。YARNは,ResourceManagerなるマスタと,NodeManagerなるスレーブから構成されます。YARNでは,マスタはスレーブからクラスタ全体の計算リソースの情報を収集し,その情報を元に,クライアントからの計算リソースの要求に応じて、スレーブにおけるリソース確保のスケジューリングを行います。スレーブは,各ノードのローカルの保持する計算リソースを管理します。現在使用中の計算リソースと未使用の計算リソースを逐次マスタに報告し,マスタからの計算リソースの要求に応じて計算リソースを確保します。YARNのマスタも高可用構成を取ることができます。YARNのマスタが任意のタイミングで切り替わっても動作が停止しないようにするために,管理情報(ジョブの投入状況および進捗状況の変更)をZooKeeperに保持します。ZooKeeper内に保存されます。MapReduceでは,マスタはジョブの進捗状況を管理し,ジョブを分割し,部分ジョブ(タスク)をスレーブに割り当てます(図4⁠)⁠。YARNに対してリソースの要求を行うことに加えて,プロセス故障や計算機故障に備えて,タスクを再実行するために必要な情報なども管理します。実際には,マスタとスレーブは定期的にheartbeatと呼ばれるデータを交換します。heartbeatの中には,スレーブ内の進捗情報や,スレーブ内で動作しているプロセスの生存情報に加えて,マスタからスレーブへの指示などが含まれます。MapReduceとYARNとの関係については,次回にて詳しく述べます。MapReduceのアーキテクチャの概要MapReduceと並列データベースMapReduceは,第一部で述べたように,並列データベースの技術を基本としているため,並列データベースの設計や実装において類似している特徴が多く見られます。すべてが類似しているわけではありません。想定するジョブのワークロードを見てみると,並列データベースはいわゆる分析クエリに代表されるようなデータを絞り込んで詳細に見ていくような処理を想定しているのに対し,MapReduceは,いわゆるETL(Extract-Transform-Load)と称される,データを加工する処理を想定しています。MapReduceは前者をおもな対象として設計されており,並列データベースは後者をおもな対象として設計されていると見ることができます。用途が異なるため,当然,それぞれの目的は異なり,MapReduceはおもに処理のスループットの向上を目的として設計されているのに対し,並列データベースは処理のレイテンシの低下を目的として設計されていることが一般的です。MapReduceを用いたETLでは,レコードのすべての要素を処理することが通例であるため,HDFSにおいてはレコードごとにデータを管理し,すなわちレコード指向(行指向)のデータレイアウトを用います。並列データベースにおいては,レコードにおけるすべての要素(属性)を必ずしもすべて必要としないため,列ごとにデータを構成する列指向データレイアウトを用い,問い合わせに必要なレコードのみの入出力を行います。ETLと分析においては,明確な定義や境界があるわけではなく,それらの中間的なものも存在します。ORCFile([3])のようなHDFS上の列指向データレイアウトを採用する取り組みが見られます。並列データベースにおいても,JSONのような構造が緩いデータ(準構造化データ)を管理する機能を取り込む流れも見られつつあり,双方において多様なワークロードに対応する取り組みが広く見られます。MapReduceにおける実装の特徴について説明しました。次回は,Hadoopのリソース管理フレームワークであるYARNについて説明する予定です。YARN著者プロフィール小沢健史(おざわつよし)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.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。