「Oracle Big Data Connectors」はHadoopとOracle Databaseをどうつなぐのか?

人々が各種のコンピュータを使って社会活動を営むのに伴って生成される多種多様なデータ、いわゆるビッグデータをビジネスで有効活用しようという機運が高まっている。ただし、忘れてはならないのが、顧客情報や商品情報など、企業にとって最も重要なデータはRDBMSに格納されており、それらのデータとともに活用しなければ、ビッグデータは価値を生まないということだ。RDBMSのトップ・ベンダーとしての自負から、オラクルは企業にとって最も現実的かつ実用的なビッグデータ・ソリューションを提供すべく、製品の拡充を進めている。その核となるソリューションの1つが、ビッグデータの分散処理基盤であるHadoopとOracle Databaseを結ぶ「Oracle Big Data Connectors」である。(沙倉芽生)

ビッグデータから価値を引き出すにはRDBが不可欠

日本オラクル テクノロジー製品事業本部 ソリューション本部 基盤技術部の能仁信亮氏
  2012年10月に都内で開催された日本オラクルのプライベート・カンファレンス「Oracle Days Tokyo 2012」には、オラクルが矢継ぎ早に発表する新機軸のITソリューションと、それがもたらすビジネス価値を自分の目と耳で確かめようと、5,000名を超える参加者が来場した。

  このOracle Days Tokyo 2012において、多くの聴衆を引き付けたのが、ビッグデータ関連のセッションだ。なかでも、日本オラクルの能仁信亮氏(テクノロジー製品事業本部 ソリューション本部 基盤技術部)によるセッション「HadoopとデータベースをつなぐOracle Big Data Connectors」には、ビッグデータの分散処理基盤として多くの関心を集めるHadoopとOracle Databaseの連携を実現するOracle Big Data Connectorsの全容を知ろうと、多くの参加者が詰めかけた。以下に同セッションの要旨を紹介しよう。

 Hadoopのことを、RDBMSなど従来のデータ・ストアとは無縁の存在だと考える方もおられるかもしれないが、能仁氏によれば、「FacebookのようにHadoopを多用している企業でも、最終的にはRDBMSにデータを格納して活用している。つまり、HadoopとRDBMSを連携させたいというニーズは極めて高い」という。その理由は、Hadoopがリアルタイム検索やアドホック検索に弱いため、処理の種類に応じてRDBMSと使い分けられているためだ。

 ただし、HadoopとRDBMSをうまく使い分けるには1つの課題がある。Hadoopからデータベースにデータをロードする際のパフォーマンスが問題となるのだ。「Hadoopにもデータベースにもそれぞれ利点があるが、組み合わせて使うのは意外と大変。多くのHadoopユーザーがHadoopとRDBMSの連携に課題を抱えている」と能仁氏は説明する。

 「オラクルが今、ビッグデータに関して実現したいと考えていることの1つは、HadoopとRDBMSを統合的に1つのパッケージとして利用できる環境。HadoopとRDBMSを合わせた総合的なデータ処理基盤の整備を進めているのはそのためだ」(能仁氏)

 この基盤の中で、HadoopクラスタとOracle Databaseおよび統計解析言語Rを連携させるためのツール群として用意されているのが、Oracle Big Data Connectorsである。

 このOracle Big Data Connectorsは、次の4つのコンポーネントで構成される。

  • Oracle Direct Connector for Hadoop Distributed File System(HDFS):Oracle DatabaseからHDFS(Hadoopのファイルシステム)上のデータに外部表としてSQLでアクセスするためのツール
  • Oracle Loader for Hadoop:Hadoop環境からプッシュ型でOracle Databaseに高速にデータをロードするためのユーティリティ
  • Oracle Data Integrator Application Adapters for Hadoop:HadoopクラスタからOracle Databaseへのロード処理をGUIで定義/実行するためのツール


  • Oracle R Connector for Hadoop:HDFS上のデータに対してR言語による処理を可能にするコンポーネント


 これらのうち、Oracle Databaseとの連携で中心的な役割を果たすのが、Oracle Direct Connector for HDFSとOracle Loader for Hadoopである。以降では、能仁氏が語った両ツールの詳細を紹介する。

Oracle DatabaseからHadoopへの柔軟なアクセスを可能にするOracle Direct Connector for HDFS

 Oracle Direct Connector for HDFSは、HDFS上のデータをOracle Databaseから参照するためのツールであり、HDFS上のファイルに外部表としてSQLでアクセスする。SQLでアクセスすることにより、「柔軟な操作が可能となり、HDFS上のデータに対してクエリやジョインを実行できるようになるほか、SQLを使ってOracle Databaseにデータをロードできるようになる。また、SQLを使って能動的にデータを取得するため、Oracle Database自身がリソースの使用状況などを管理しながらロード処理を実行する。つまり、Oracle Databaseのリソースをフルに使い、適切なロード・バランシングが行える」(能仁氏)という。

 Oracle Direct Connector for HDFSの利用の流れは、初めに外部表を作成し、HDFS上のファイルと外部表の間の対応関係を設定したら、後はSQLを使ってデータにアクセスするか、もしくはOracle Databaseにデータをロードするだけだ。能仁氏は、ロードする際に使うコマンドを示しながら、「相手がHadoopであっても、通常の外部表のロードと何も変わらない」と説明した。

 パフォーマンスについても、「Oracle Big Data ApplianceからOracle Exadataへのロード速度は12TB/時間と、他社製品と比べて5~20倍以上も高速」と能仁氏。Oracle Database内ですべてが完結するので、Oracle Databaseの管理者にとって非常に扱いやすいツールであることを強調した。

HadoopからOracle Databaseのデータをプッシュで取得するOracle Loader for Hadoop

 一方のOracle Loader for Hadoopは、「Oracle Direct Connector for HDFSとは逆に、Hadoop側からOracle Databaseのデータをプッシュでロードするためのツール」(能仁氏)である。内部的にはMapReduceの仕組みを使っているという。

 「Oracle Loader for Hadoopは、まずOracle Databaseからロード対象の表のメタデータを取得する。次に、MapReduceのMap段階で、パーティションごとにデータを分割してOracle Databaseのデータ型に変換する。そしてReduceの段階では、パーティションに分割されたデータをそれぞれのReducerがOracle Databaseのパーティションごとにロードする」(能仁氏)

 ただし、パーティション間のデータ量に偏りが生じることがあるため、各Reducerに均等な数のパーティションを割り当てた場合、データ量が多いパーティションを担当するReducerに負荷が集中し、全体のパフォーマンスが悪くなる恐れがある。そこで、Oracle Loader for Hadoopには、データ量の偏りを自動的に平準化する仕組みが用意されている。最適な負荷分散を行うために、処理前にデータのサンプリングを行ってデータの偏り具合を自動検知し、割り当てるReducerの数を調整することにより、各Reducerの処理量を平準化してトータルの処理時間を短縮化するのである。

 能仁氏は、実際に特定のパーティションのデータ量が他のパーティションのデータ量の10倍になる例を使って検証を行ったという。その結果、「サンプリング機能なしでOracle Databaseにロードした場合、データ量に偏りがないケースと比べ、偏りのあるケースでは明らかにロード時間が長くなった。一方、サンプリング機能を使った場合、データ量に偏りがないケースとほぼ同じロード時間で処理できた」とサンプリング機能の有効性を示した。

 Oracle Loader for Hadoopの使い方はシンプルで、ロード対象の表を生成し、Oracle Loader for HadoopのジョブをHadoopクラスタで実行するだけでよい。能仁氏は、Oracle Loader for Hadoopの性能をサードパーティ製品と比較した結果を示し、「実際に1時間当たり2TBのデータをロードできたが、これはサードパーティ製品の約10倍のパフォーマンス。しかも、ロード前にMapReduceによる前処理が終わっているので、Oracle Databaseにかかる負荷が減り、ロード時に裏で動作するアプリケーションへの影響も小さくなる」と説明した。

 最後に能仁氏は、これら2つのツールの特徴をそれぞれ次のようにまとめた。

 「Oracle Direct Connectors for HDFSの特徴はとにかく高速なこと。SQLによるロード処理が可能なため、ロード時にデータ形式の変換を組み込むなど柔軟な処理が行える。

 一方、Oracle Loader for Hadoopは、ロードの前処理をHadoop側で実行するため、Oracle Database側には負荷がかからない点が大きな特徴となる。HiveやAvroなど、さまざまなデータソースから直接データをロードできる点も強みだ」

 これらのツールを搭載するOracle Big Data Connectorsの性能や機能について現在、NTTデータとJSOL、そして日本オラクルの3社が共同で検証に取り組んでいる。今回紹介した2つ以外のツールについても連携方式の特徴や使い分け方の確認を進めており、その結果はいずれ一般に公開される予定だ。

Comments:

Post a Comment:
Comments are closed for this entry.
About

Twitter
Facebook

Search

Recent Posts
Archives
« 4月 2014
  
1
2
3
4
5
6
7
9
10
11
12
13
16
17
18
19
20
22
23
24
25
26
27
28
29
30
   
       
Today