EnterpriseZine(エンタープライズジン)

EnterpriseZine(エンタープライズジン)

テーマ別に探す

007 データベースとHadoopの連携

  2012/04/26 00:00

Greeplum DBのHadoop連携における外部テーブルの定義とデータ移動のしくみ

 リレーショナルデータベースとHadoopの間の連携にはさまざまなパターンがあります。最近ではどのデータベース/データウェアハウスベンダーもHadoopとの連携に力を入れて機能を用意しておりますが、製品によってそのしくみは異なるため、実際にはデータの転送時間や使い勝手で差が出てきます。特に両者間でデータアクセスを行う場合にどのような連携方法があるか、以下の3つのパターンを見てみましょう。

 1. データベースからデータをファイルにダンプし、Hadoopの転送コマンド(実質的にはJava APIを経由)でファイルをHadoopのファイルシステムに投入する

 どの製品でも対応可能な非常にシンプルな方法ですが、データを一時格納するためのファイルシステム領域が必要です。また、データベースからのデータのダンプ、Hadoopへの転送の両方がボトルネックとなり得るため(特にJavaプロセスがボトルネックとなりがち)、性能はあまりよくありません。

 2. Hadoop上でSqoopを利用して並列にデータを転送する

 Hadoopで動作するデータのインポート/エクスポートツールSqoopを利用してデータを転送する方法です。データベース製品側でSqoop対応を明示している場合もありますし、JDBCで接続することも可能です。データの一時ストレージが不要で、MapReduceジョブとして多数のプロセスで並列にデータアクセスを行うため、効率的に転送を行うことができます。ただし、データベース側の処理が完全には並列化されていないケースも多く、さらにMapReduceジョブが起動されるため一定の時間的なオーバーヘッドを計算に入れておく必要があります。

 3. Hadoopファイルシステムを対象としたGreenplum DBのパラレルローディング

 Greenplum DBはHadoopのHDFS上にあるデータのアクセスに、通常のデータのパラレルローディングと同じしくみを利用します。Greenplum DBの複数のセグメントサーバは、HDFS内部で分散配置されているデータブロックをHDFS APIを介して並列に直接アクセスするため、ボトルネックのない効率的なデータアクセスを実現しています。データベース上ではHDFS上のファイルは外部テーブルのデータソースとして抽象化されているため、開発者はSQLで外部テーブルに対する処理を記述するだけで、Hadoopを意識することなくデータを利用できます。

Greenplum DBとHadoopの連携
Greenplum DBとHadoopの連携

 このように、Greenplum DBのユニークなHadoop連携機能を利用することで、データベースとHadoopをシームレスに連携することが可能になり、データ活用の幅が大きく広がります。

さて、次回はいよいよ連載最終回。高度な統計解析分析を可能にし、処理のスケーラビリティを向上させるIn-Database分析技術について触れてみたいと思います。



著者プロフィール

バックナンバー

連載:ビッグデータのリーサルウェポン!徹底解析GreenplumDB

もっと読む

All contents copyright © 2007-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5