ヘッダーをスキップ
Oracle® Big Data Connectorsユーザーズ・ガイド
リリース1 (1.0)
B66474-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

4 Oracle Data Integrator Application Adapter for Hadoop

この章では、Oracle Data Integratorについて説明します。次の項目について説明します。


関連項目:

Oracle Fusion Middleware Oracle Data Integratorアプリケーション・アダプタ・ガイド

この章では、Oracle Data Integratorナレッジ・モジュールのHadoopスイートを使用する方法について説明します。

概要

Apache Hadoopは、RDBMS以外のデータ・ソースを含むデータおよびリレーショナル・データベースで処理できないほどのデータ・ボリュームを処理するように設計されています。

Oracle Data Integrator Application Adapter for Hadoopを使用すると、データ統合開発者は、Oracle Data Integratorを使用してHadoop内でデータを簡単に統合したり、変換できます。アダプタでは、使い易く、使い慣れたツールとあらかじめ構成されているナレッジ・モジュールを介して次の機能が提供されます。

概念

Hadoopでの通常の処理には、MapReduceジョブとしてプログラミングされたデータの検証や変換などがあります。MapReduceジョブの設計と実装には、専門的なプログラミングの知識が必要です。しかし、Oracle Data IntegratorとOracle Data Integrator Application Adapter for Hadoopを使用すると、MapReduceジョブを記述する必要はありません。Oracle Data Integratorでは、HiveとHiveQL (Hive Query Language: HQL)というSQLライクな言語を使用してMapReduceジョブを抽象化します。これにより、Hadoop開発者は、Oracle Data Integratorのグラフィカル・ユーザー・インタフェースを使用して簡単にHadoop統合を作成でき、開発者の知見と生産性が高まります。

ビッグ・データ処理のシナリオを実装する場合、最初のステップは、データをHadoopにロードすることです。データのソースは、通常、ローカル・ファイルシステム、HDFS、Hive表または外部Hive表にあります。

データが使用可能になったら、リレーショナル・データベースで行うのと同様に、SQL(正確に言うと、HQL)でデータの検証と変換を行うことができます。NULLや主キーのチェックなどのデータ検証およびフィルタ、集計、設定操作、表の導出などの変換を実行できます。また、カスタマイズした手続き型のスニペット(スクリプト)をデータの処理に含めることもできます。

データの集計、圧縮または演算処理が終了したら、Oracle Databaseにロードして他の処理や分析を行うことができます。Oracle Databaseへのロードを最適に行うには、Oracle Loader for Hadoopが推奨されます。

ナレッジ・モジュール

Oracle Data Integratorには、表4-1に示す、Hadoopの使用を簡単にするナレッジ・モジュールが用意されています。

表4-1 Oracle Data Integrator Application Adapter for Hadoopナレッジ・モジュール

KM名 説明 ソース ターゲット

IKM File To Hive (Load Data)

ローカルおよびHDFSファイルからHive表にデータをロードします。Hiveのパーティション化とデータ移動の低減によってパフォーマンスを向上させるオプションが用意されています。

このKMでは、ワイルド・カード(*、?)がサポートされます。

ファイルシステム

Hive

IKM Hive Control Append

切捨て/挿入(追加)モードでHiveターゲット表にデータを統合します。データを制御(検証)できます。無効なデータはエラー表に分離され、再利用できます。

Hive

Hive

IKM Hive Transform

PerlやPythonなどのカスタマイズしたスクリプトで変換した後、Hiveターゲット表にデータを統合します。

Hive

Hive

IKM File-Hive to Oracle (OLH)

Oracle Loader for Hadoopを使用して、HDFSファイルまたはHiveソースからOracle Databaseターゲットにデータを統合します。

ファイルシステムまたはHive

Oracle Database

CKM Hive

データを制約に対して検証します。

N/A

Hive

RKM Hive

Hive表をリバース・エンジニアリングします。

Hiveメタデータ

N/A


セキュリティ

Oracle Data Integratorのセキュリティについては、『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』を参照してください。

トポロジの設定

このステップでは、Oracle Data Integratorで、ファイルシステムとHive情報の格納に使用されるデータ・サーバー、物理スキーマおよび論理スキーマを宣言します。

この項で説明する項目は、次のとおりです。

ファイル・データソースの設定

Hadoopのコンテキストでは、HDFS (Hadoop分散ファイルシステム)のファイルとローカル・ファイル(HDFS外のファイル)は区別されます。データソースを定義する通常の手順は、次のとおりです。

  1. ファイル・テクノロジ下にデータ・サーバー・オブジェクトを作成します。

  2. アクセスされるディレクトリごとに物理スキーマ・オブジェクトを作成します。

  3. アクセスされるディレクトリごとに論理スキーマ・オブジェクトを作成します。

  4. 論理スキーマごとにモデルを作成します。

  5. ファイル/ワイルドカード名のパターンごとに1つ以上のデータストアを作成します。

  6. HDFSファイルの場合、「JDBC URL」フィールドにHDFS名のノードを入力して、ファイル・テクノロジ下にデータ・サーバー・オブジェクトを作成します。たとえば、hdfs://hadoop-nn.acme.com:9000です。

    注意: HDFSファイル用に定義されている専用のテクノロジはありません。

Hiveデータソースの設定

Hiveシステムに接続するために、Oracle Data Integratorで次の手順を行う必要があります。Oracle Data IntegratorではJDBCを使用してHiveに接続します。

この手順では、Hiveテクノロジが標準のOracle Data Integratorテクノロジに含まれているものとします。そうではない場合、まず、INSERT_UPDATEモードでテクノロジをxml-referenceフォルダにインポートする必要があります。

次の手順では、Hive固有のフレックスフィールドがすべて追加されていることも前提とします。11.1.1.6.0より前のリポジトリの場合、リポジトリのアップグレード処理の一環としてフレックスフィールドが追加されます。

  1. 必要なHive JDBC jarをすべてOracle Data Integrator userlibフォルダに配置します。($HIVE_HOME/lib/*.jar、$HADOOP_HOME/hadoop-*-core*.jar、$HADOOP_HOME/Hadoop-*-tools*.jar)

  2. Hiveテクノロジ下にデータ・サーバー・オブジェクトを作成します。

  3. JDBC下で次の設定を行います。

    JDBCドライバ: org.apache.hadoop.hive.jdbc.HiveDriver

    JDBC URL: たとえば、jdbc:hive://BDA:10000/defaultです。

    フレックスフィールド下で次の設定を行います。

    HiveメタストアURI: たとえば、thrift://BDA:10000です。

  4. 物理デフォルト・スキーマを作成します。

    Hive 0.7.0以降、スキーマやデータベースはサポートされません。デフォルトのみサポートされます。物理スキーマ定義の両方のスキーマ・フィールドにdefaultと入力します。

  5. Hiveサーバーが稼働していることを確認します。

  6. データ・サーバーへの接続をテストします。

  7. 論理スキーマ・オブジェクトを作成します。

  8. 論理スキーマに対して1つ以上のモデルを作成します。

  9. グローバルKMとして、またはプロジェクトにRKM Hiveをインポートします。

  10. 論理スキーマを指す、Hiveテクノロジ用の新規モデルを作成します。

  11. RKM Hiveを使用してカスタム・リバースを実行します。

このプロセスを終了すると、列、パーティション化およびクラスタ化の詳細がフレックスフィールド値として格納されたすべてのHive表が、Hive DataModelに含まれます。

Hadoopジョブを実行するためのOracle Data Integratorエージェントの設定

Oracle Data Integratorエージェントを設定するための標準の手順を実行したら、Oracle Data Integrator Application Adapter for Hadoopと連携するようOracle Data Integratorエージェントを構成するための次の追加手順を実行します。

  1. Oracle Data Integratorエージェント・マシンにHadoopをインストールします。

    後続のステップでは、Hadoopがインストールされ、HADOOP_HOME環境変数が設定されているものとします。

  2. Oracle Data Integratorエージェント・マシンにHiveをインストールします。

    後続のステップでは、Hiveがインストールされ、HIVE_HOME環境変数が設定されているものとします。

  3. Hive JDBCアクセス用のjarをOracle Data Integratorエージェント・ドライバ・ディレクトリにコピーします(詳細は、Oracle Data Integratorのドキュメントを参照してください)。

    $HIVE_HOME/lib/*.jar,
    $HADOOP_HOME/hadoop-*-core*.jar
    $HADOOP_HOME/hadoop-*-tools*.jar
    

    これによって、Oracle Data IntegratorエージェントでHive JDBCドライバをロードできるようになります。

  4. Hive RegEx SerDeが含まれるように環境変数ODI_HIVE_SESSION_JARSを設定します。

    ODI_HIVE_SESSION_JARS=$HIVE_HOME/lib/hive-contrib-0.7.1-cdh3u2.jar
    

    必要に応じてカスタムSerDes jarなどの他のjarを含めます。これらのjarはHive JDBCセッションに追加され、その結果、Hive MapReduceジョブに追加されます。

  5. 環境変数HADOOP_CLASSPATHを設定します。

    HADOOP_CLASSPATH=$HIVE_HOME/lib/hive-metastore-0.7.1-cdh3u2.jar:$HIVE_HOME/lib/libthrift.jar:$HIVE_HOME/lib/libfb303.jar:$HIVE_HOME/lib/hive-common-0.7.1-cdh3u2.jar:$HIVE_HOME/lib/hive-exec-0.7.1-cdh3u2.jar. 
    

    これによって、HadoopスクリプトでHive MapReduceジョブを起動できるようになります。

Oracle Loader for Hadoop (OLH)を使用する場合、次の手順を実行します。

  1. Oracle Data Integratorエージェント・システムにOLHをインストールします。

  2. Oracle Data Integratorエージェント・システムにOracle Clientをインストールします。Oracle Clientのバージョンについては、Oracle Loader for Hadoopの要件を参照してください。

  3. 環境変数OLH_HOMEを設定します。

  4. 環境変数ODI_OLH_JARSを設定します。

    Oracle Loader for Hadoopに必要なすべてのjarファイルをリストする必要があります。「Hadoop用OraLoaderの構成プロパティ」oracle.hadoop.loader.libjarsプロパティを参照してください。

    これは、jarファイルのカンマ区切りのリストです。

    ODI_OLH_JARS=OLH_HOME/jlib/ojdbc6.jar,$OLH_HOME/jlib/orai18n.jar,$OLH_HOME/jlib/orai18n-utility.jar,$OLH_HOME/jlib/orai18n-mapping.jar,$OLH_HOME/jlib/orai18n-collation.jar,$OLH_HOME/jlib/oraclepki.jar,$OLH_HOME/jlib/osdt_cert.jar,$OLH_HOME/jlib/osdt_core.jar,$OLH_HOME/jlib/commons-math-2.2.jar,$OLH_HOME/jlib/jackson-core-asl-1.5.2.jar,$OLH_HOME/jlib/jackson-mapper-asl-1.5.2.jar,$OLH_HOME/jlib/avro-1.5.4.jar,$OLH_HOME/jlib/avro-mapred-1.5.4.jar,$OLH_HOME/jlib/oraloader.jar,$HIVE_HOME/lib/hive-metastore-0.7.1-cdh3u2.jar,$HIVE_HOME/lib/libthrift.jar,$HIVE_HOME/lib/libfb303.jar,$HIVE_HOME/lib/hive-common-0.7.1-cdh3u2.jar,$HIVE_HOME/lib/hive-exec-0.7.1-cdh3u2.jar
    
  5. 次のようにHADOOP_CLASSPATHに追加します。

    $HADOOP_CLASSPATH= $OLH_HOME/jlib:$HADOOP_CLASSPATH
    

    ODI_OLH_SHAREDLIBSには、Oracle Loader for Hadoopに必要なすべてのネイティブ・ライブラリをリストする必要があります。「Hadoop用OraLoaderの構成プロパティ」oracle.hadoop.loader.sharedLibsプロパティを参照してください。

    これは、共有ライブラリ・ファイルのカンマ区切りのリストです。

    ODI_OLH_SHAREDLIBS= $OLH_HOME/lib/libolh11.so,$OLH_HOME/lib/libclntsh.so.11.1,$OLH_HOME/lib/libnnz11.so,$OLH_HOME/lib/libociei.so
    
  6. Oracle Loader for HadoopをOCIモードで使用する場合、次のようにします。

    • JAVA_LIBRARY_PATH$OLH_HOME/libを含める必要があります。OLHネイティブ・ライブラリlibolh11.soの検索に使用されます。

    • LD_LIBRARY_PATH$ORACLE_HOME/libを含めます。

ローカル・エージェントでHadoopジョブを実行するためのOracle Data Integrator Studioの構成

Oracle Data Integrator Studioインストールのローカル・エージェントでHadoopジョブを実行するには、この前の項の手順を実行しますが、Oracle Data Integratorのドライバ・ディレクトリではなく、userlibディレクトリにjarファイルをコピーします。

統合プロジェクトの設定

プロジェクトを設定するには、標準の手順に従います。『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』を参照。

次のKMをOracle Data Integratorプロジェクトにインポートします。

HiveモデルのリバースエンジニアリングからのOracle Data Integratorモデルの作成

この項で説明する項目は、次のとおりです。

モデルの作成

『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』に記載されているように、Hiveをホストするテクノロジ、および標準の手順を使用してHive接続を構成したときに作成された論理スキーマに基づいてモデルを作成します。

Hive表のリバースエンジニアリング

Hive RKMを使用してHive表とビューをリバースエンジニアリングします。Hive RKMを使用してHive表のカスタマイズされたリバース・エンジニアリングを実行するには、『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』に記載されている通常の手順を使用します。この項では、Hive表に固有の情報を示します。

リバースエンジニアリング・プロセスでは、対応するHive表またはビューに対するデータストアが作成されます。データストアは、統合インタフェースでソースまたはターゲットとして使用できます。

RKMでは、次のメタデータ要素がリバースされます。

  • Oracle Data IntegratorデータストアとしてのHive表とビュー

    リバースする表とビューを選択するには、「マスク」フィールドでリバース・マスクを指定します。「リバース」タブの「マスク」フィールドで、名前に基づいてリバースエンジニアリング・オブジェクトがフィルタ処理されます。「マスク」フィールドは空にできません。少なくともパーセント記号(%)を含める必要があります。

  • データ型を持つOracle Data Integrator列としてのHive列

  • バケット、パーティション化、クラスタおよびソート列に関する情報は、Oracle Data Integratorデータストアの各フレックスフィールドまたは列メタデータで設定されます。表4-2に、作成されるフレックスフィールドを示します。

表4-2 リバースエンジニアリングされたHive表およびビュー用のフレックスフィールド

オブジェクト フレックスフィールド名とコード フレックスフィールドの型 説明

データストア

Hiveバケット

HIVE_BUCKETS

文字列

クラスタ化に使用されるバケットの数

Hiveパーティション列

HIVE_PARTITION_COLUMN

数値

パーティション化列はすべて"1"とマークされます。パーティション情報は、次のものから取得されます。

  • マップされたソース列

  • ターゲット列に指定された定数値

  • ファイル名フラグメント

Hiveクラスタ列

HIVE_CLUSTER_COLUMN

数値

クラスタ列はすべて"1"とマークされます。

Hiveソート列

HIVE_SORT_COLUMN

数値

ソート列はすべて"1"とマークされます。


表4-3に、Hive RKMのオプションを示します。

表4-3 Hive RKMのオプション

オプション 説明

USE_LOG

中間結果を記録するかどうか

LOG_FILE_NAME

ログ・ファイルのパスとファイル名。デフォルト・パスはユーザー・ホームで、デフォルト・ファイル名はreverse.logです。


インタフェースの設計

要件に応じて、次のインタフェース構成が可能です。

ファイルからHiveへのデータのロード

Hive表をリバースエンジニアリングして構成したら、ローカル・ファイルおよびHDFSファイル用のデータストアを作成します。ローカル・ファイル・データ・ソースのリバースエンジニアリングと構成の詳細は、『Oracle Data Integrator接続およびナレッジ・モジュール・ガイド』を参照してください。

ファイル・データストアをソースとし、対応するHive表をターゲットとして使用してインタフェースを作成します。インタフェースの「フロー」タブで指定されたIKM File To Hive (Load Data)ナレッジ・モジュールが、ファイルシステム(ローカルまたはHDFS)からHiveへのデータのロードに使用されます。このIKMでは、既存のデータを置き換えるか、これに追加して、フラット・ファイルからHiveにデータをロードします。

IKM File To Hive (Load Data)では、次のものがサポートされます。

  • 1つ以上の入力ファイル。"webshop_*.log"のように、ファイル・データストアのリソース名にアスタリスクまたは疑問符をワイルドカード文字として使用して、複数のソース・ファイルをロードできます。

  • ファイル形式:

    • 固定長

    • デリミタ付き

    • カスタマイズされた形式

  • ロード・オプション:

    • 即時または遅延ロード

    • 上書きまたは追加

    • Hive外部表

表4-4に、IKM File To Hive (Load Data)のオプションを示します。KMとそのオプションの詳細は、KM内のドキュメントを参照してください。

表4-4 IKM File To Hiveのオプション

オプション 説明

CREATE_TARG_TABLE

ターゲット表を作成します。

TRUNCATE

ターゲット表のデータを切り捨てます。

FILE_IS_LOCAL

ファイルがローカル・ファイルシステムにあるか、HDFSにあるか

EXTERNAL_TABLE

外部管理Hive表を使用します。

USE_STAGING_TABLE

Hiveステージング表を使用します。

ソースとターゲットが一致しない場合、またはパーティション列値がデータファイルの一部の場合、このオプションを選択します。

パーティション化値がファイル名フラグメントまたはターゲット・マッピングの定数で指定される場合、この値をfalseに設定します。

DELETE_TEMPORARY_OBJECTS

インタフェースの実行後、一時オブジェクトを削除します。

DEFER_TARGET_LOAD

最終ターゲットにデータを今ロードするか、後でロードするか

OVERRIDE_ROW_FORMAT

カスタム・ファイル形式を処理するための解析式を指定し、ソースからターゲットのマッピングを実行します。

STOP_ON_FILE_NOT_FOUND

ソース・ファイルが見つからない場合に停止するかどうか


Hive内のデータの検証と変換

Hiveにデータをロードしたら、次のKMを使用してデータを検証および変換できます。

IKM Hive Control Append

このKMは、データの検証と制御に使用できます。KMは、切捨て/挿入(追加)モードでHiveターゲット表にデータを統合します。無効なデータはエラー表に分離され、再利用できます。このKMでは、IKM Hive Control AppendまたはIKM Hive Transformを使用するインライン・ビュー・インタフェースがサポートされます。

表4-5に、このIKMのオプションを示します。KMとそのオプションの詳細は、KM内のドキュメントを参照してください。

表4-5 IKM Hive Control Appendのオプション

オプション 説明

FLOW_CONTROL

入力データを検証するかどうか

RECYCLE_ERRORS

エラー表からデータを再統合するかどうか

STATIC_CONTROL

ロード後にデータを検証するかどうか

CREATE_TARG_TABLE

ターゲット表を作成するかどうか

DELETE_TEMPORARY_OBJECTS

実行後に一時オブジェクトを削除するかどうか

TRUNCATE

ターゲット表のデータを切り捨てるかどうか


CKM Hive

このKMでは、Hive表のデータの完全性がチェックされます。Hiveデータストアの制約の妥当性を検証し、無効なレコードをエラー表に分離します。静的制御およびフロー制御に使用できます。検証する必要のある制約もユーザーがデータストアに定義する必要があります。

表4-6に、このCKMのオプションを示します。KMとそのオプションの詳細は、KM内のドキュメントを参照してください。

表4-6 CKM Hiveのオプション

オプション 説明

DROP_ERROR_TABLE

実行の前にエラー表を削除するかどうか


IKM Hive Transform

このKMは、変換の実行に使用できます。KMは、シェル・スクリプトでの変換後、置換モードでHiveターゲット表にデータを統合します。変換スクリプトで、ソース・データストアで定義されている順に入力列を想定する必要があります。マップされたソース列のみが変換スクリプトに送られます。変換スクリプトで、ターゲット・データストアで定義されている順に出力列を提供する必要があります。KMはインライン・ビュー・インタフェースをサポートし、IKM Hive Control Appendのインライン・ビューとして使用されます。

表4-7に、このIKMのオプションを示します。KMとそのオプションの詳細は、KM内のドキュメントを参照してください。

表4-7 IKM Hive Transformのオプション

オプション 説明

CREATE_TARG_TABLE

ターゲット表を作成するかどうか

DELETE_TEMPORARY_OBJECTS

実行後に一時オブジェクトを削除するかどうか

TRANSFORM_SCRIPT_NAME

スクリプト・ファイル名

TRANSFORM_SCRIPT

スクリプトの内容

PRE_TRANSFORM_DISTRIBUTE

変換スクリプトの適用前のデータの分散を可能にするソース列名のカンマ区切りリスト(オプション)を指定します。

PRE_TRANSFORM_SORT

変換スクリプトの適用前のデータのソートを可能にするソース列名のカンマ区切りリスト(オプション)を指定します。

POST_TRANSFORM_DISTRIBUTE

変換スクリプトの適用後のデータの分散を可能にするターゲット列名のカンマ区切りリスト(オプション)を指定します。

POST_TRANSFORM_SORT

変換スクリプトの適用後のデータのソートを可能にするターゲット列名のカンマ区切りリスト(オプション)を指定します。


HiveおよびHDFSからOracleへのロード

IKM File-Hive to Oracle (OLH)では、Oracle Loader for Hadoopを使用して、HDFSファイルまたはHiveソースからOracle Databaseターゲットにデータを統合します。インタフェースの構成および選択されたオプションに基づいて、KMで適切なOracleターゲット・インスタンスが生成されます。HiveとHadoopのバージョンは、Oracle Loader for Hadoopの要件に従う必要があります。詳細は、「Oracle Loader for Hadoop」を参照してください。必要な環境変数の設定については、「Hadoopジョブを実行するためのOracle Data Integratorエージェントの設定」を参照してください。

表4-8に、このIKMのオプションを示します。KMとそのオプションの詳細は、KM内のドキュメントを参照してください。

表4-8 IKM File - Hive to Oracle (OLH)

オプション 説明

OLH_OUTPUT_MODE

データの転送に対してJDBC、OCI、データ・ポンプのいずれかを指定します。

CREATE_TARG_TABLE

ターゲット表を作成するかどうか

USE_HIVE_STAGING_TABLE

抽出前にソース・データを実体化するかどうか

USE_ORACLE_STAGING_TABLE

Oracleデータベース・ステージング表を使用するかどうか

EXT_TAB_DIR_LOCATION

データ・ポンプ転送に使用される共有ファイル・パス。

TEMP_DIR

一時ファイルのローカル・パス。

MAPRED_OUTPUT_BASE_DIR

Oracle Loader for Hadoop (OLH)出力ファイル用のHDFSディレクトリ。

FLOW_TABLE_OPTIONS

Oracleデータベース・ステージング表が使用される場合のフロー(ステージ)表の作成オプション。

DELETE_TEMPORARY_OBJECTS

実行後に一時オブジェクトを削除するかどうか

OVERRIDE_INPUTFORMAT

カスタム・ファイル形式の処理用。

EXTRA_OLH_CONF_PROPERTIES

追加Oracle Loader for Hadoop構成ファイル・プロパティ(オプション)

TRUNCATE

ターゲット表のデータを切り捨てるかどうか

DELETE_ALL

ターゲット表のデータをすべて削除するかどうか