1 Copyright © 2012, Oracle and/or its affiliates. All...

50
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 1

Transcript of 1 Copyright © 2012, Oracle and/or its affiliates. All...

Page 1: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 1

Page 2: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Oracle Big Data Connectors HadoopとOracle Databaseの世界をつなぐ架け橋

日本オラクル株式会社

製品事業統括 テクノロジー製品事業統括本部

ソリューション本部 基盤技術部

能仁 信亮

Page 3: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 3

以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。

OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。

Page 4: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 4

本日、お伝えしたい内容

Oracle Big Data Connectorsの概要

HadoopとOracle Databaseの連携方式

– 連携の方式

Oracle Direct Connectors for HDFS

Oracle Loader for Hadoop

– アーキテクチャ

– 連携のパフォーマンス

– デモ

Page 5: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 5

Facebook – HadoopとRDBMSの連携

主な利用用途

• 定期的なレポート生成 • 広告キャンペーンの効果測定 • ページビュー、滞在時間等の集計 • リコメンド情報の生成

• ログデータの長期保持

• ログデータを利用したスパムボットからのユーザの保護

RDBMSとの併用

Hadoop単体では、リアルタイム処理に弱いため、高速なレスポンスが求められるデータに関しては、RDBMS(Oracle

/ MySQL)に最終的に格納

FacebookのようなHadoopを多用している企業でも、最終的にRDBMSにデータを格納して活用

HadoopとRDBMSの連携の需要は大きい

出典 Apache Hadoop FileSystem and its Usage in Facebook

Dhruba Borthakur

http://cloud.berkeley.edu/data/hdfs.pdf

Page 6: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 6

Big Data Appliance General Usage Model

Oracle

Big Data Appliance Oracle

Exadata

InfiniBand

Acquire Organize Analyze

Oracle

Exalytics

InfiniBand

Page 7: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 7

Hadoopの環境 Hadoopを動かすためのHWおよびSW

Oracle

Big Data Appliance Oracle

Exadata

InfiniBand

Acquire Organize Analyze

Oracle

Exalytics

InfiniBand Oracle Big Data

Appliance

Page 8: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 8

データを連係する機能 HadoopとOracle Databaseの連携

Oracle

Big Data Appliance Oracle

Exadata

InfiniBand

Acquire Organize Analyze

Oracle

Exalytics

InfiniBand

Oracle Loader

for Hadoop

Oracle Direct

Connector for

HDFS

ODI Application

Adapter for

Hadoop

Page 9: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 9

データを利活用する機能 統計処理 (データマイニング 他)

Oracle

Big Data Appliance Oracle

Exadata

InfiniBand

Acquire Organize Analyze

Oracle

Exalytics

InfiniBand Oracle R

Connector for

Hadoop

Oracle R

Enterprise

Page 10: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 10

Oracle Big Data Connectors

HadoopクラスタとOracle DatabaseおよびR言語と連携させるためのツール群

Big Data Connector 利用用途

Oracle Loader for Hadoop Hadoop 環境から Oracle Database へ高速にデータをロードするためにオラクルが提供するユーティリティ

Oracle Direct Connector for Hadoop

Distributed File System

Oracle Databaseから、HDFS上のデータに外部表としてSQLでアクセスするためのツール

Oracle Data Integrator Application

Adapters for Hadoop

HadoopクラスタからOracle Databaseへのロード処理をGUI

で定義、実行するためのツール

Oracle R Connector for Hadoop HDFS 上のデータに対する R 言語処理を可能にするオラクル提供のコンポーネント

Page 11: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 11

Oracle Data Integrator Application Adapters for Hadoop

データ連携ツールであるOracle Data Integratorを使って、Hiveを使ったHadoop内でのデータ変換とOracle Databaseの連携をGUIで定義、実行するためのアダプタ

Hadoop Cluster

MapReduce(HIVE)

による変換

ロード

起動

Oracle

Loader for

Hadoop

Oracle Data

Integrator

Oracle Exadata

機能 • HDFSへのロード

• HDFS内での変換

• HDFSとOracle Databaseの連携

特徴 • Big Dataの変換処理の生産性を向上

• Oracle Loader for Hadoopを利用してBig Dataのロード処理を最適化

• GUIでの定義によりHadoop内での処理の複雑さを低減

• 一般のデータ連係と同一のツールを利用可能

Page 12: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 12

Oracle Data Integrator Application Adapters for Hadoop

Page 13: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 13

Oracle R Connector for Hadoop HadoopとHDFSを有効活用してRによる分析を実行

Rのインターフェースから、HDFS、Database、ファイルシステムへのデータアクセス/生成が可能 RのインターフェースからMapReduceを記述および実行可能

HDFS

Hadoop

Oracle R Client

MAP MAP MAP MAP

REDUCE REDUCE

Page 14: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 14

(ご参考) Oracle R Enterprise

データベース内でRと同等の統計機能を提供

–データフレーム上またはOracle表/View上でRを実行可能

– コマンド、コンソール、ワークスペースはRと同じものを提供

RをEnterpriseで利用するための課題を解決

–データベース内のデータに対してダイレクトかつ透過的に処理

– Rのメモリサイズの制約を排し、大規模データセットを扱うことが可能

– プログラミングレスで、並列処理をDB内にて実装

R

Page 15: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 15

Oracle Big Data Connectors

ORACLE LOADER FOR HADOOP ORACLE DIRECT CONNECTOR FOR HDFS

Page 16: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 16

Hadoopからのデータのロードおよび参照

SHUFFLE

/SORT

SHUFFLE

/SORT

MAP

MAP

MAP

MAP

SHUFFLE

/SORT

REDUCE

REDUCE

INPUT 2

INPUT 1

MAP

MAP

MAP

MAP

MAP

REDUCE

REDUCE

MAP

MAP

MAP

MAP

MAP

REDUCE

REDUCE

REDUCE

Oracle Big Data

Connectors

Oracle Database

LOG FILEなど

Page 17: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 17

HadoopとOracle Databaseを連携させる際の課題と解決策

• HadoopからOracle Databaseへのロードでは、Hadoop側で処理を並列化し、分散処理によりロードを高速に行うアプローチが一般的にとられる

• Oracle Database側で並列処理を効率に行うためには、Databaseが持つロード処理を効率よく行う仕組み(Direct Path Load/Insert, Parallel Query/DMLなど)を活用する必要があるが、既存の連係ツールでは、そういった仕組みを十分に活用できていない

Oracle Databaseが持つ並列処理の仕組みを活用した、高速な連携ツール = Oracle Big Data Connectors

Page 18: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 18

Oracle Big Data Connectorsの性能

1時間に最大12TBのロード性能 DBサーバーのCPU時間は50分の1

Big Data ApplianceとExadata X2-8を利用して計測

詳細は、以下のホワイトペーパーをご参照ください http://www.oracle.com/technetwork/bdc/hadoop-loader/connectors-hdfs-wp-1674035.pdf

※ Oracle Loader for Hadoopおよび、サードパーティ製品は、

Exadata X2-8の2台のデータベースサーバーのうち一台のみ利用

Page 19: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 19

従来のデータロード手法との対応

従来のデータロード手法 Oracle Big Data Connectors

SQL*Loader

従来型パス・ロード

Oracle Loader for Hadoop

JDBC Output

SQL*Loader

ダイレクト・パス・ロード

Oracle Loader for Hadoop

OCI Direct Path Output

外部表ロード Oracle Direct Connector for HDFS

Page 20: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 20

Oracle Direct Connector for HDFS HDFS上のデータをOracle Databaseから参照

外部表

ODCH ODCH

ODCH

SQL Query

HDFS

Client

HDFS

Oracle Database

特徴

Oracle Databaseから、 HDFS上のデータに外部表としてSQLでアクセス HDFS上のデータに対してクエリや、ジョインが可能 SQLを利用して、Databaseにデータをロード可能 最大のパフォーマンスを得るために適切なロードバランスが実行される

外部表の仕組みを利用して、パラレルに問合せやロードを実行

Page 21: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 21

外部表とは? ファイルに対して、通常のテーブルのようにSQLによってアクセス

Databaseサーバ

外部表

データを含むファイル

1.クエリ発行

2. ファイルからデータを読み込み

※ファイルは、Oracle

Database Serverか

らアクセスできる位置にある必要がある

課題 HDFSは(通常) 直接OSにマウントすることができないため、HDFS上のファイルは、このままでは外部表として扱うことができない

Page 22: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 22

Oracle Direct Connector for HDFS 動作概要

Hadoop クライアント

ODCH バイナリ

Databaseサーバ

Hadoopクラスタ

外部表

Location File

HDFS上のファイルのPathが指定されている hdfs://nn.example.com:54310/data/s2/sales.csv

2. Location Fileで、HDFS上の対象ファイルのパスを確認し、ODCH

を呼び出し

3. HDFSのAPIを利用してデータを取得

1.クエリ発行 Database サーバー

Page 23: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 23

外部表の作成

Oracle Direct Connector for

HDFSユーティリティを利用して、HDFS上のファイルと外部表の対応を設定

SQLをつかって、データアクセ

ス、もしくはデータベースにロード

シンプルな3つの手順

Oracle Direct Connector for HDFS

>hadoop jar ¥

$ODCH_HOME/jlib/orahdfs.jar ¥

oracle.hadoop.hdfs.extab.ExternalTable¥

-conf MyConf.xml ¥

-publish

Page 24: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 24

Oracle Direct Connector for HDFSの設定 Step 1:外部表の作成

HDFS上のデータに対して外部表を作成

– CREATE TABLEの際にPREPROCESSOR句を利用

PREPROCESSOR "HDFS_BIN_PATH:hdfs_stream"

HDFS_BIN_PATH はOracle Direct Connectorのバイナリが含まれるディレクトリをDatabaseのdirectoryとして作成

SQL> CREATE OR REPLACE DIRECTORY hdfs_bin_path AS '/opt/orahdfs-1.0.0.0.0/bin‘;

SQL> EXECUTE ON DIRECTORY hdfs_bin_path TO hdfsuser;

Page 25: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 25

Oracle Direct Connector for HDFSの設定 Step 1: 外部表の作成 Create Table example: HDFS上のCSVファイル

CREATE TABLE SALES_HDFS_EXT_TAB

(PROD_ID NUMBER(6),

CUST_ID NUMBER,

TIME_ID DATE,

CHANNEL_ID CHAR(1),

PROMO_ID NUMBER(6),

QUANTITY_SOLD NUMBER(3),

AMOUNT_SOLD NUMBER(10,2))

ORGANIZATION EXTERNAL (

TYPE ORACLE_LOADER

DEFAULT DIRECTORY "SALES_EXT_DIR"

ACCESS PARAMETERS (

RECORDS DELIMITED BY NEWLINE

PREPROCESSOR "HDFS_BIN_PATH:hdfs_stream"

FIELDS TERMINATED BY ',‘

(PROD_ID DECIMAL EXTERNAL,

TIME_ID CHAR DATE_FORMAT TIMESTAMP MASK "...", . . . )

)

LOCATION ('sales1','sales2')

) PARALLEL ;

STEP2で発行されるファイルが配置される

ディレクトリ • STEP2で生成するLocation File

•STEP2で指定するDataPathの数だけ指定

•名称は任意 ※CSVファイルのファイル名を指定するわけではない

Page 26: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 26

Oracle Direct Connector for HDFSの設定 Step 2: HDFS Data Pathの発行

CREATE TABLEで指定したLocation Fileはこの時点では存在しない

Oracle Direct ConnectorのExternalTable コマンドラインツールを利用して、HDFS上のファイルのURIを含んだLocation Fileを生成する

外部表にクエリを発行するとODCH preprocessor (hdfs_stream)がLocation Fileの情報を利用して、HDFS上のデータをデータベースに流し込む

Page 27: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 27

Oracle Direct Connector for HDFSの設定 Step 2: HDFS Data Pathの発行

ExternalTableコマンドは、指定されたプロパティ情報をもとにlocation fileを生成

– プロパティはXMLファイルで指定するか、コマンドラインで個々に設定するかのいずれか

ExternalTable コマンド:

– bin/hadoop jar orahdfs.jar oracle.hadoop.hdfs.exttab.ExternalTable [-conf config_file

| -D property=value] -publish [--noexecute]

-conf config_file: XMLの設定ファイル(次ページにサンプル)

-D property=value: プロパティを指定

--noexecute: 実際には実行せずに、(どいいったファイルが生成されるかなどの)実行計画のみを表示させる

Page 28: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 28

Oracle Direct Connector for HDFSの設定 Step 2: HDFS Data Pathの発行

Example Configuration File:

<?xml version="1.0"?> <configuration>

<property>

<name>oracle.hadoop.hdfs.exttab.tableName</name>

<value>SH.SALES_EXT_DIR</value>

</property>

<property>

<name>oracle.hadoop.hdfs.exttab.datasetPaths</name>

<value>/data/s1/*.csv,/data/s2/*.csv</value>

</property>

<property>

<name>oracle.hadoop.hdfs.exttab.datasetCompressionCodec</name>

<value>org.apache.hadoop.io.compress.DefaultCodec</value> </property>

次ページに続く

STEP1で作成した 外部表名

HDFS上のファイルのパスを指定。

Page 29: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 29

Oracle Direct Connector for HDFSの設定 Step 2: HDFS Data Pathの発行

Example Configuration File(前ページからの続き)

<property>

<name>oracle.hadoop.hdfs.exttab.connection.url</name>

<value> jdbc:oracle:thin:@example.com:1521/example.example.com

</value>

</property>

<property>

<name>oracle.hadoop.hdfs.exttab.connection.user</name>

<value>SH</value>

</property>

</configuration>

外部表を作成したデータベースへの接続情報を指定

Page 30: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 30

Oracle Direct Connector for HDFSを利用したロード

通常の外部表ロードと同様にINSERT SELECTでロード

Oracle Databaseが持つ、並列処理の仕組み(パラレルクエリ、パラレルDML)を活用し、高速なOracle Databaseへのロードが可能

APPENDヒントを利用してDirect Path Insertを利用することで高速なロードを実現

実行例

SQL> ALTER SESSION FORCE PARALLEL DML;

SQL> ALTER SESSION FORCE PARALLEL QUERY;

SQL> INSERT /*+ append */

INTO <ターゲット表> SELECT * FROM <外部表>;

Page 31: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 31

Performance 比較

0

1

2

3

4

5

6

Fuse-DFS Oracle Direct Connector for HDFS

単位時間あたりのロード量(TB/hour)

ロードスピードの比較 CPU利用の比較

Fuse DFSとの比較

0

20

40

60

80

100

120

140

160

180

Fuse-DFS Oracle Direct Connector for HDFS

CP

U s

eco

nd

s u

sed

per

GB

CPU 時間

Page 32: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 32

Oracle Direct Connectors for HDFSの利点

HDFS上のデータを Oracle Database からアクセス可能にする

パフォーマンス

– 12 TB/hour (Oracle Big Data Appliance から Oracle Exadata)

– サードパーティの製品と比べて、5倍から20倍以上高速

SQLによる柔軟な操作

Oracleの データベース管理者にとって扱いやすい

Oracleによる開発とサポート

Page 33: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 33

Oracle Loader for Hadoop

SHUFFLE

/SORT

SHUFFLE

/SORT

REDUCE

REDUCE

REDUCE

MAP

MAP

MAP

MAP

MAP

MAP

REDUCE

REDUCE

ORACLE LOADER FOR HADOOP 機能 • データの前処理を、データベースから、Hadoopにオフロード

• Direct Path Loadを利用した高速なロードが可能

• さまざまな入力フォーマットに対応

• オンラインモードとオフラインモード (オフライン: HDFS上にData Pumpファイルを生成)

• パフォーマンスを最適化するためにパーティションごとのデータの偏りを平準化

Reducerがデータベースに接続し、パーティションごとに並列にデータベースにロード(Direct Path Load/JDBC)

データベースから、ロード対象の表のメタデータを取得

パーティションごとにデータを分割し、Oracle Databaseのデータ型に変換

Page 34: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 34

Input Format

Delimited text InputFormat

Hive table InputFormat

Avro record InputFormat

独自開発したInputFormat

(提供予定) Regular expression InputFormat

(提供予定) Oracle NoSQL Database InputFormat

Oracle Loader for Hadoop

Page 35: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 35

入力データの偏りを自動的に平準化

• パーティションごとのデータに偏りがある場合でもパーティションに割り当てるReducerの数を調整して負荷分散

• 最適な、負荷分散を行うために、処理前にデータのサンプリングを行い、データの偏り具合を自動検知

時間

Reduce1

Reduce2

Reduce3

Reduce4

Partitionごとにロードを行う場合でも、Partition間のデータの偏りをサンプリングで検知して、割り当てるReducerの数を調整することにより、各Reducerの処理量を平準化し、トータルの処理時間の短縮を図る

Reducer間の負荷分散

Page 36: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 36

平準化 (サンプリング)の効果 Oracle Loader for Hadoop

方式 100GBの

ロード時間

偏りのあるデータをサンプリングなしで実行 週末のデータ量が10倍

サンプリング:なし

00:13:58.50

偏りのあるデータをサンプリングありで実行 週末のデータ量が10倍

サンプリング:あり

00:11:54.22

データの偏りがないデータを利用 対照試験: データの偏りなし

00:11:50.76

サンプリングを行うと

偏りがない場合の

ロード時間とほぼ

変わらない

試験実施環境

Hadoop Cluster : Big Data Appliance (v1.0.3)

Database Server : Cisco UCS B200 M1 CPU: Xeon 5570 2.93GHz (4コア) x 2 / Memory: 96GB/ Network: 10GbE

Database Storage : NetApp FAS3170

Page 37: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 37

ロード対象の表を生成

Oracle Loader for

Hadoop のJobをHadoop

クラスタで実行

シンプルな2つの手順

Oracle Loader for Hadoop

>hadoop jar ¥

$OLH_HOME/jlib/oraloader.jar ¥

oracle.hadoop.loader.OraLoader ¥

-conf MyConf.xml

Page 38: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 38

Oracle Loader for Hadoopの設定 Step 1: Input Formatの選択/実装

HiveToAvroInputFormat Class:

– Reads data from a Hive 表からデータの読み取り

– HiveMetaStoreClientを使って、Hive表の列、ファイルの所在、InputFormatなどを取得

– Hive表の行は、Avroレコードに変換される

DelimitedTextInputFormat Class:

– CSV,TSVといったデリミタ区切りのファイルを読み込み

– レコードは、改行で区切られており、フィールドの区切り文字は一文字である必要がある

Page 39: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 39

Oracle Loader for Hadoopの設定 Step 2: LoaderMap ファイルの作成

LoaderMap ファイルの例

ロード元ファイルのフィールドとデータベースの列名とのマッピング <?xml version="1.0" encoding="UTF-8"?>

<LOADER_MAP>

<SCHEMA>HR</SCHEMA>

<TABLE>EMPLOYEES</TABLE>

<COLUMN field="empId">EMPLOYEE_ID</COLUMN>

<COLUMN field="lastName">LAST_NAME</COLUMN>

<COLUMN field="email">EMAIL</COLUMN>

<COLUMN field=“hireDate” format=“MM-dd-yyyy”>

HIRE_DATE</COLUMN>

<COLUMN field="jobId">JOB_ID</COLUMN>

</LOADER_MAP> データベースの列名

ロード元ファイルのフィールド名

• Hive表の場合、列名

•デリミタ区切りの場合、行の最初の項目から順にF0、F1、F2…という名前が自動的につけられる

Page 40: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 40

Oracle Loader for Hadoopの設定 Step 3: 表のメタデータにアクセス

OLH は、Oracle Databaseの表のメタデータを利用してLoader Jobの実行をコントロール

OLHの実行環境が、JDBC によってOracle Databaseに接続が可能な環境であれば、Loaderが自動的にメタデータを取得可能

実行時にDatabaseに接続できない環境(Offline利用前提の環境など)の場合、OraLoaderMetadataユーティリティを利用してあらかじめ、メタデータをXMLファイルとして抽出しておく

Page 41: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 41

Oracle Loader for Hadoopの設定 Step 4: 設定ファイルの作成

設定ファイルの例 <?xml version="1.0"?>

<configuration>

<property>

<name>mapreduce.inputformat.class</name>

<value>oracle.hadoop.loader.lib.input.DelimitedTextInputFormat</value>

</property>

<property>

<name>mapreduce.outputformat.class</name>

<value>oracle.hadoop.loader.lib.output.JDBCOutputFormat</value>

</property>

<property>

<name>mapred.input.dir</name>

<value>/user/snonin/csv</value>

</property>

<property>

<name>mapred.output.dir</name>

<value>/user/snonin/csvout</value>

</property>

ロード元データの読み取りに利用するクラス名を指定。

この例では、デリミタ区切りファイル用のクラスを指定している

データベースへのロードで利用するクラスを指定。この例ではJDBCを利用。

Page 42: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 42

Oracle Loader for Hadoopの設定 Step 4: 設定ファイルの作成

前ページからの続き <property>

<name>oracle.hadoop.loader.loaderMapFile</name>

<value>file:///home/snonin/work/olh/csv/map.xml</value>

</property>

<property>

<name>oracle.hadoop.loader.loadByPartition</name>

<value>false</value>

</property>

<property>

<name>oracle.hadoop.loader.connection.url</name>

<value>jdbc:oracle:thin:@//localhost:1521/orcl</value>

</property>

<property>

<name>oracle.hadoop.loader.connection.user</name>

<value>hdfsuser</value>

</property>

</configuration>

STEP 2で作成したLoaderMapを指定

パーティション毎に分割してロード処理を行うかどうか

ロード先データベースの接続情報

Page 43: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 43

Oracle Loader for Hadoopの設定 Step 5: OraLoaderの実行

OraLoaderは、通常のMapReduceと同じ手順で起動OraLoaderを起動すると次のあげるような処理を実行

– 設定情報を読み取り、検証

– ロード先の表のメタデータを取得

– OraLoaderのMapReduceジョブのために内部的な設定情報を準備

– MapReduce ジョブを Hadoop クラスタに発行

– 各タスクが生成するログファイルを統合し、処理全体のログファイルを作成(このログファイルはMap ReduceのOutput Directoryにoraloader-report.txtという名称で作成される)

Page 44: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 44

Oracle Loader for Hadoopの設定 Step 5: OraLoaderの実行

OraLoader の実行例:

hadoop jar ${OLH_HOME}/jlib/oraloader.jar

oracle.hadoop.loader.OraLoader -conf MyConf.xml

STEP 4で作成した設定ファイル

Page 45: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 45

パフォーマンス比較

ロードスピードの比較 CPU利用の比較

サードパーティ製品との比較

0

0.5

1

1.5

2

2.5

Comparable third party product

Oracle Loader for Hadoop

単位時間あたりのロード量(TB/hour)

0

100

200

300

400

500

600

700

Comparable third party product

Oracle Loader for Hadoop

CP

U s

eco

nd

s u

sed

per

GB

CPU時間

Page 46: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 46

Oracle Loader for Hadoopの利点

HDFS, Hive表など様々なソースから、中間ファイルを経ずに Oracle

Databaseに直接ロード可能

性能

– サードパーティ製品より10倍高速

ロードの前処理でHadoopを利用することで、Databaseへの負荷を減らす

– ロード時に裏で動いているアプリケーションへの影響を極小化

Hadoop開発者にとって利用しやすい

Oracleによる開発とサポートの提供

Page 47: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 47

ロード方式のまとめ

Oracle Direct Connectors for HDFS

– 12TB/時間の高速なロード

– SQLによるロード処理が可能なため、ロード時にデータの形式の変換を組み込むなど柔軟な処理が可能

Oracle Loader for Hadoop

– ロードの前処理をHadoop側で実行するため、Databaseに負荷をかけない

– Hive表など多様なデータソースから、直接ロード可能

Page 48: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 48

オラクル技術の総合的な教育サービスを提供する Oracle University

集合研修(Classroom Training)

オラクル認定資格制度

Oracle トレーニング・オンデマンド

Oracle University Live Virtual Class

研修に関するお問い合わせ・ご要望はこちらから

オラクルユニバーシティ

TEL: 0120-155-092

URL: http://www.oracle.com/jp/education/

オラクルユニバーシティが提供する教育サービス

高度化・多様化する最新技術に対応。世界中の研修コースが受講可能に。

体系的なカリキュラムと最新の認定資格で信頼されるエンジニアの育成をご支援します。

Page 49: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 49

Page 50: 1 Copyright © 2012, Oracle and/or its affiliates. All …otndnld.oracle.co.jp/ondemand/ddd/PDF/BD-2_print_r.pdfHadoopとOracle Databaseを連携させる際の課題と解決策 •

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 50