この章では、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内でデータを簡単に統合したり、変換できます。アダプタでは、使い易く、使い慣れたツールとあらかじめ構成されているナレッジ・モジュールを介して次の機能が提供されます。
ローカル・ファイルシステムとHDFSからのHadoopへのデータのロード。
Hadoopでのデータの検証と変換
追加処理およびレポート生成を行うための処理済データのHadoopからOracle Databaseへのロード。
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名 | 説明 | ソース | ターゲット |
---|---|---|---|
ローカルおよびHDFSファイルからHive表にデータをロードします。Hiveのパーティション化とデータ移動の低減によってパフォーマンスを向上させるオプションが用意されています。 このKMでは、ワイルド・カード(*、?)がサポートされます。 |
ファイルシステム |
Hive |
|
切捨て/挿入(追加)モードでHiveターゲット表にデータを統合します。データを制御(検証)できます。無効なデータはエラー表に分離され、再利用できます。 |
Hive |
Hive |
|
PerlやPythonなどのカスタマイズしたスクリプトで変換した後、Hiveターゲット表にデータを統合します。 |
Hive |
Hive |
|
Oracle Loader for Hadoopを使用して、HDFSファイルまたはHiveソースからOracle Databaseターゲットにデータを統合します。 |
ファイルシステムまたはHive |
Oracle Database |
|
データを制約に対して検証します。 |
N/A |
Hive |
|
Hive表をリバース・エンジニアリングします。 |
Hiveメタデータ |
N/A |
Oracle Data Integratorのセキュリティについては、『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』を参照してください。
このステップでは、Oracle Data Integratorで、ファイルシステムとHive情報の格納に使用されるデータ・サーバー、物理スキーマおよび論理スキーマを宣言します。
この項で説明する項目は、次のとおりです。
Hadoopのコンテキストでは、HDFS (Hadoop分散ファイルシステム)のファイルとローカル・ファイル(HDFS外のファイル)は区別されます。データソースを定義する通常の手順は、次のとおりです。
ファイル・テクノロジ下にデータ・サーバー・オブジェクトを作成します。
アクセスされるディレクトリごとに物理スキーマ・オブジェクトを作成します。
アクセスされるディレクトリごとに論理スキーマ・オブジェクトを作成します。
論理スキーマごとにモデルを作成します。
ファイル/ワイルドカード名のパターンごとに1つ以上のデータストアを作成します。
HDFSファイルの場合、「JDBC URL」フィールドにHDFS名のノードを入力して、ファイル・テクノロジ下にデータ・サーバー・オブジェクトを作成します。たとえば、hdfs://hadoop-nn.acme.com:9000
です。
注意: HDFSファイル用に定義されている専用のテクノロジはありません。
Hiveシステムに接続するために、Oracle Data Integratorで次の手順を行う必要があります。Oracle Data IntegratorではJDBCを使用してHiveに接続します。
この手順では、Hiveテクノロジが標準のOracle Data Integratorテクノロジに含まれているものとします。そうではない場合、まず、INSERT_UPDATEモードでテクノロジをxml-referenceフォルダにインポートする必要があります。
次の手順では、Hive固有のフレックスフィールドがすべて追加されていることも前提とします。11.1.1.6.0より前のリポジトリの場合、リポジトリのアップグレード処理の一環としてフレックスフィールドが追加されます。
必要なHive JDBC jarをすべてOracle Data Integrator userlibフォルダに配置します。($HIVE_HOME/lib/*.jar、$HADOOP_HOME/hadoop-*-core*.jar、$HADOOP_HOME/Hadoop-*-tools*.jar)
Hiveテクノロジ下にデータ・サーバー・オブジェクトを作成します。
JDBC下で次の設定を行います。
JDBCドライバ: org.apache.hadoop.hive.jdbc.HiveDriver
JDBC URL: たとえば、jdbc:hive://BDA:10000/defaultです。
フレックスフィールド下で次の設定を行います。
HiveメタストアURI: たとえば、thrift://BDA:10000です。
物理デフォルト・スキーマを作成します。
Hive 0.7.0以降、スキーマやデータベースはサポートされません。デフォルトのみサポートされます。物理スキーマ定義の両方のスキーマ・フィールドにdefault
と入力します。
Hiveサーバーが稼働していることを確認します。
データ・サーバーへの接続をテストします。
論理スキーマ・オブジェクトを作成します。
論理スキーマに対して1つ以上のモデルを作成します。
グローバルKMとして、またはプロジェクトにRKM Hiveをインポートします。
論理スキーマを指す、Hiveテクノロジ用の新規モデルを作成します。
RKM Hiveを使用してカスタム・リバースを実行します。
このプロセスを終了すると、列、パーティション化およびクラスタ化の詳細がフレックスフィールド値として格納されたすべてのHive表が、Hive DataModelに含まれます。
Oracle Data Integratorエージェントを設定するための標準の手順を実行したら、Oracle Data Integrator Application Adapter for Hadoopと連携するようOracle Data Integratorエージェントを構成するための次の追加手順を実行します。
Oracle Data Integratorエージェント・マシンにHadoopをインストールします。
後続のステップでは、Hadoopがインストールされ、HADOOP_HOME
環境変数が設定されているものとします。
Oracle Data Integratorエージェント・マシンにHiveをインストールします。
後続のステップでは、Hiveがインストールされ、HIVE_HOME
環境変数が設定されているものとします。
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ドライバをロードできるようになります。
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ジョブに追加されます。
環境変数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)を使用する場合、次の手順を実行します。
Oracle Data Integratorエージェント・システムにOLHをインストールします。
Oracle Data Integratorエージェント・システムにOracle Clientをインストールします。Oracle Clientのバージョンについては、Oracle Loader for Hadoopの要件を参照してください。
環境変数OLH_HOME
を設定します。
環境変数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
次のように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
Oracle Loader for HadoopをOCIモードで使用する場合、次のようにします。
JAVA_LIBRARY_PATH
に$OLH_HOME/lib
を含める必要があります。OLHネイティブ・ライブラリlibolh11.so
の検索に使用されます。
LD_LIBRARY_PATH
に$ORACLE_HOME/lib
を含めます。
プロジェクトを設定するには、標準の手順に従います。『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』を参照。
次のKMをOracle Data Integratorプロジェクトにインポートします。
IKM File To Hive (Load Data)
IKM Hive Control Append
IKM Hive Transform
IKM File-Hive to Oracle (OLH)
CKM Hive
RKM Hive
この項で説明する項目は、次のとおりです。
『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』に記載されているように、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パーティション列
|
数値 |
パーティション化列はすべて"1"とマークされます。パーティション情報は、次のものから取得されます。
|
列 |
Hiveクラスタ列
|
数値 |
クラスタ列はすべて"1"とマークされます。 |
列 |
Hiveソート列
|
数値 |
ソート列はすべて"1"とマークされます。 |
表4-3に、Hive RKMのオプションを示します。
ローカルまたはHDFSファイルからHive表にデータをロードするためのインタフェース
Hive内でデータを検証および変換するためのインタフェース
HiveまたはHDFSからOracle Databaseにデータをロードするためのインタフェース
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のオプション
オプション | 説明 |
---|---|
|
ターゲット表を作成します。 |
|
ターゲット表のデータを切り捨てます。 |
|
ファイルがローカル・ファイルシステムにあるか、HDFSにあるか |
|
外部管理Hive表を使用します。 |
|
Hiveステージング表を使用します。 ソースとターゲットが一致しない場合、またはパーティション列値がデータファイルの一部の場合、このオプションを選択します。 パーティション化値がファイル名フラグメントまたはターゲット・マッピングの定数で指定される場合、この値を |
|
インタフェースの実行後、一時オブジェクトを削除します。 |
|
最終ターゲットにデータを今ロードするか、後でロードするか |
|
カスタム・ファイル形式を処理するための解析式を指定し、ソースからターゲットのマッピングを実行します。 |
|
ソース・ファイルが見つからない場合に停止するかどうか |
Hiveにデータをロードしたら、次のKMを使用してデータを検証および変換できます。
このKMは、データの検証と制御に使用できます。KMは、切捨て/挿入(追加)モードでHiveターゲット表にデータを統合します。無効なデータはエラー表に分離され、再利用できます。このKMでは、IKM Hive Control AppendまたはIKM Hive Transformを使用するインライン・ビュー・インタフェースがサポートされます。
表4-5に、このIKMのオプションを示します。KMとそのオプションの詳細は、KM内のドキュメントを参照してください。
このKMでは、Hive表のデータの完全性がチェックされます。Hiveデータストアの制約の妥当性を検証し、無効なレコードをエラー表に分離します。静的制御およびフロー制御に使用できます。検証する必要のある制約もユーザーがデータストアに定義する必要があります。
表4-6に、このCKMのオプションを示します。KMとそのオプションの詳細は、KM内のドキュメントを参照してください。
このKMは、変換の実行に使用できます。KMは、シェル・スクリプトでの変換後、置換モードでHiveターゲット表にデータを統合します。変換スクリプトで、ソース・データストアで定義されている順に入力列を想定する必要があります。マップされたソース列のみが変換スクリプトに送られます。変換スクリプトで、ターゲット・データストアで定義されている順に出力列を提供する必要があります。KMはインライン・ビュー・インタフェースをサポートし、IKM Hive Control Appendのインライン・ビューとして使用されます。
表4-7に、このIKMのオプションを示します。KMとそのオプションの詳細は、KM内のドキュメントを参照してください。
表4-7 IKM Hive Transformのオプション
オプション | 説明 |
---|---|
|
ターゲット表を作成するかどうか |
|
実行後に一時オブジェクトを削除するかどうか |
|
スクリプト・ファイル名 |
|
スクリプトの内容 |
|
変換スクリプトの適用前のデータの分散を可能にするソース列名のカンマ区切りリスト(オプション)を指定します。 |
|
変換スクリプトの適用前のデータのソートを可能にするソース列名のカンマ区切りリスト(オプション)を指定します。 |
|
変換スクリプトの適用後のデータの分散を可能にするターゲット列名のカンマ区切りリスト(オプション)を指定します。 |
|
変換スクリプトの適用後のデータのソートを可能にするターゲット列名のカンマ区切りリスト(オプション)を指定します。 |
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)
オプション | 説明 |
---|---|
|
データの転送に対してJDBC、OCI、データ・ポンプのいずれかを指定します。 |
|
ターゲット表を作成するかどうか |
|
抽出前にソース・データを実体化するかどうか |
|
Oracleデータベース・ステージング表を使用するかどうか |
|
データ・ポンプ転送に使用される共有ファイル・パス。 |
|
一時ファイルのローカル・パス。 |
|
Oracle Loader for Hadoop (OLH)出力ファイル用のHDFSディレクトリ。 |
|
Oracleデータベース・ステージング表が使用される場合のフロー(ステージ)表の作成オプション。 |
|
実行後に一時オブジェクトを削除するかどうか |
|
カスタム・ファイル形式の処理用。 |
|
追加Oracle Loader for Hadoop構成ファイル・プロパティ(オプション) |
|
ターゲット表のデータを切り捨てるかどうか |
|
ターゲット表のデータをすべて削除するかどうか |