近年、大規模データ処理の新たな潮流として話題になることの多い分散処理プラットフォームHadoopですが、企業の中でどのようにHadoopを活用し、既存システムとの連携を考えるかということが大きな検討のテーマになってきています。HadoopはこれまでのRDB中心のデータ処理基盤とは異なるアプローチのシステムですが、両者を補完的に組み合わせることで、これまでは不可能であった大規模かつ柔軟なデータ活用の道が開けます。今回はGreenplum DBのHadoopとの連携機能をデータベース/Hadoopのアーキテクチャや用途の違いの観点を含めて解説します。
データベースとHadoopの連携
Hadoopのしくみとデータベースシステムとの対比
HadoopはGoogleの分散処理基盤システムを紹介した論文をもとに、Apacheコミュニティにて開発されたオープンソースの分散処理システムです。分散処理環境の構築に汎用ハードウェアを活用し、MapReduceと呼ばれる比較的シンプルな分散処理フレームワークを導入することにより、これまでは困難であった分散処理アプリケーション構築のハードルを大きく下げ、大規模データ処理の基盤として活用する事例も増えてきています。
Hadoopのコアの部分は、Hadoop Distributed File System (HDFS) という分散ファイルシステムと、MapReduce分散処理フレームワークが密接に組み合わされて構成されています。Hadoopでデータを処理する場合には、まずデータはファイルとしてHDFS上に格納されますが、HDFSはデータを固定長のブロックに分割した上で複数のノードに分散して配置します。そしてHadoopジョブの実体であるJavaで記述されたMapReduceプログラムが各ノードに送られ、各ノードに配置されたデータブロックを入力として並列に処理を行います。
ところでこのようなHadoopの処理のしくみを読んで、HadoopとGreenplum DBは結構似ているのではないかと思われる方がいるかもしれません。実際、汎用ハードウェアやLinuxをベースにスケールアウト型の処理基盤を構築する点や、データを完全分散するシェアードナッシング型のアーキテクチャに基づいている点、バッチ系の処理に大きな効果がある点などは共通しています。その意味で、両者ともビッグデータ時代の大規模データ処理基盤にふさわしい技術をベースにしていると言えます。
一方で、大きく異なる点もあります。Greenplum DBはリレーショナルデータベースなので、テーブル構造や処理クエリをあらかじめ設計した上でデータをそれに合わせて格納するのが一般的です。また、すべての処理はトランザクションとして扱われ、データベースゆえにACIDの性質をもつことは大前提です。しかしながらHadoopでは、データ格納時は単にファイルとして扱われるだけなので、特に構造を定義しておく必要はありません。そしてMapReduceプログラムの実行時に初めてデータをどのように解釈して処理して行くかということが示されます。さらに、Hadoopの処理はACIDの性質を捨てることで分散処理における可用性や効率性を追求しています。
この記事は参考になりましたか?
- ビッグデータのリーサルウェポン!徹底解析GreenplumDB連載記事一覧
-
- データ分析プロセスを高速化するIn-Database分析技術
- データベースとHadoopの連携
- Greenplum DBの柔軟なシステム拡張の話
【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社
この記事は参考になりましたか?
この記事をシェア