HadoopDBのアーキテクチャ
7/24にpostした「HadoopDB」の続きです。
■HadoopDBのアーキテクチャについて
より、
HadoopDBのアーキテクチャに関する章から、Hadoopに追加された4つのコンポーネントについて順に読んできます。

The Architecture of HadoopDB
▼Database Connector
Database Connectorは、クラスタの各ノードにある個別のデータベースとTaskTrackerの間のインタフェースで、
HadoopのInputFormatクラスを拡張することによって実装されています。MySQLとPostgreSQLのConnectorが実装済みで、MonetDBやInfoBrightといったオープンソースのcolumn-storeデータベースについても実装の計画があるそうです。
InputFormatを拡張することによって、データベースをHDFS上のデータブロックと同じように扱うことができると説明しています。
▼Catalog
Catalogは、データベースのメタ情報を管理するコンポーネントで、以下の情報を持ちます。
1.データベースの場所、ドライバクラス、証明書等のパラメータ
2.クラスタ、レプリカの場所やデータパーテショニング情報等のメタデータ
現在の実装では、これらのメタデータをHDFS上にXMLファイルとして保持します。
▼Data Loader
Data Loaderは、以下の3項目について管理を行います。
1.ロードされているパーティショニングkeyに対するデータの再配分を実行します。
2.単一ノードに格納されてるデータを複数の同じパーティションやチャンクに分割します。
3.最後に、ある単一ノードのDBにチャンクをBulk-Loadingします。
Data LoaderはGlobal HasherとLocalHasherの大きく2つのコンポーネントからなっています。
Global Hasherは、Hadoop上で動くMapReduceのカスタムモードJobとして実行され、HDFSに格納されているrawデータを読み込み、再分割を行います。
Local Hasherは、HDFSから、各ノードのローカルファイルシステムにデータのコピーを行い、Maxチャンクサイズ設定に基づき、ファイルサイズが同一になるよう分割します。
チャンクが同一サイズになるようにするため、Global Hasher, Local Hasherでは異なるHash関数を使用しています。
▼SQL to MapReduce to SQL (SMS) Planner
HadoopDBは並列DBにSQLで問い合わせをするインタフェースを提供します。
SMS PlannerはHiveを拡張したもので、HiveはHiveQLというSQLの一種をMapReduceのジョブに変換し、
HDFSに格納されたテーブルを操作します。
(a) MapReduce job generated by Hive (b) MapReduce job generated by SMS assuming sales is partitioned by YEAR(saleDate). This feature is still unsupported (c) MapReduce job generated by SMS assuming no partitioning of sales
上図の(a)がHiveでのデータ処理、(b)がHadoopDBでの処理で、論文ではHiveとの処理の違いが詳細に述べられています。
SELECT YEAR(saleDate), SUM(revenue)
FROM sales GROUP BY YEAR(saleDate);上記SQLを実行する際、HadoopDBでは各データノードにあたる部分にDBMSが配置されているため、SQLを実行して、次に結果を出力するだけという非常にシンプルな実行プロセスになっています。Hiveの処理フローにくらべ相当簡単なのが図でわかります。
論文を読む限り、HadoopDBとは、Hadoopのもつ耐障害性、スケーラビリティを生かして超大規模データを格納・処理するための仕組みで、HadoopのMapReduceフレームワークにRDBMSをくっつけて並列DBにしてしまうというもののようです。
時間ができたら実際に試してみたいとおもいます。
combined users scientists models northern panel 180 [url=http://web.mit.edu]population external[/url] http://library.thinkquest.org