をサンプリングで検知して、割り当 てるReducerの数を調整すること により、各Reducerの処理量を平
Reducer 間の負荷分散
平準化 ( サンプリング ) の効果
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
ロード対象の表を生成
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
Oracle Loader for Hadoop の設定
Step 1: Input Format の選択 / 実装
HiveToAvroInputFormat Class:
– Reads data from a Hive
表からデータの読み取り– HiveMetaStoreClient
を使って、Hive
表の列、ファイルの所在、InputFormat
な どを取得– Hive表の行は、Avroレコードに変換される
DelimitedTextInputFormat Class:
– CSV,TSV
といったデリミタ区切りのファイルを読み込み–
レコードは、改行で区切られており、フィールドの区切り文字は一文字である必 要がある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>
ロード元ファイルのフィールド名
• Hive
表の場合、列名•
デリミタ区切りの場合、行の最 初の項目から順にF0
、F1
、F2…
という名前が自動的につ けられるOracle Loader for Hadoop の設定
Step 3: 表のメタデータにアクセス
OLH は、 Oracle Database の表のメタデータを利用して Loader Job の実行 をコントロール
OLH の実行環境が、 JDBC によって Oracle Database に接続が可能な環境 であれば、 Loader が自動的にメタデータを取得可能
実行時に Database に接続できない環境 (Offline 利用前提の環境など ) の場
合、 OraLoaderMetadata ユーティリティを利用してあらかじめ、メタデータを
XML ファイルとして抽出しておく
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>
ロード元データの読み取りに利用す るクラス名を指定。
この例では、デリミタ区切りファイル 用のクラスを指定している
データベースへのロードで利用する クラスを指定。この例では
JDBC
を 利用。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>
STEP 2で作成したLoaderMapを
ドキュメント内
PowerPoint Presentation
(ページ 35-42)