この章では、Oracle Data Integrator (ODI) Application Adapter for Hadoopのナレッジ・モジュールの使用方法について説明します。内容は次のとおりです。
関連項目: Oracle Fusion Middleware Oracle Data Integratorアプリケーション・アダプタ・ガイド |
Apache Hadoopは、通常はリレーショナル以外のデータソースからのデータ、およびリレーショナル・データベースで処理できないボリュームのデータを処理するように設計されています。
Oracle Data Integrator (ODI) Application Adapter for Hadoopを使用すると、データ統合開発者は、Oracle Data IntegratorによってHadoop内でデータを簡単に統合して変換できます。アプリケーション・アダプタでは、使いやすく、使い慣れたツールとあらかじめ構成されているナレッジ・モジュール(KM)を介して次の機能が提供されます。
ローカル・ファイルシステムとHDFSからHadoopへのデータのロード
追加処理およびレポート生成を行うための処理済データのHadoopからOracle Databaseへのロード
ナレッジ・モジュール(KM)には、Oracle Data Integratorで必要な情報が含まれ、特定のテクノロジに対して特定のタスクを実行します。アプリケーション・アダプタは、一連のナレッジ・モジュールになります。したがって、Oracle Data Integrator Application Adapter for Hadoopは、Hadoopに格納されるデータにアクセスするための一連のナレッジ・モジュールになります。
Hadoopでの通常の処理には、MapReduceジョブとしてプログラミングされたデータの検証や変換などがあります。MapReduceジョブの設計と実装には、専門的なプログラミングの知識が必要です。しかし、Oracle Data IntegratorとOracle Data Integrator Application Adapter for Hadoopを使用すると、MapReduceジョブを記述する必要はありません。Oracle Data Integratorでは、Apache HiveとHiveQL (Hive Query Language: HQL)というSQLライクな言語を使用してMapReduceジョブを実装します。
ビッグ・データ処理のシナリオを実装する場合、最初のステップは、データをHadoopにロードすることです。データソースは、通常、ローカル・ファイルシステム、HDFS、Hive表または外部Hive表にあります。
データをロードすると、SQLの使用と同様にHiveQLを使用してデータを検証および変換できます。NULLや主キーのチェックなどのデータ検証およびフィルタ、集計、設定操作、表の導出などの変換を実行できます。また、カスタマイズした手続き型のスニペット(スクリプト)をデータの処理に使用することもできます。
データの集計、圧縮、または小規模データセットへの処理が終了したら、Oracle Databaseにデータをロードして他の処理や分析を行うことができます。Oracle Databaseへのロードを最適に行うには、Oracle Loader for Hadoopが推奨されます。
Oracle Data Integratorには、表4-1で説明するナレッジ・モジュール(KM)があり、Hadoopで使用できます。
表4-1 Oracle Data Integrator Application Adapter for Hadoopナレッジ・モジュール
KM名 | 説明 | ソース | ターゲット |
---|---|---|---|
ローカルおよびHDFSファイルからHive表にデータをロードします。Hiveのパーティション化とデータ移動の低減によってパフォーマンスを向上させるオプションが用意されています。 |
ファイルシステム |
Hive |
|
切捨て/挿入(追加)モードでHiveターゲット表にデータを統合します。データを制御(検証)できます。無効なデータはエラー表に分離され、再利用できます。 |
Hive |
Hive |
|
PerlやPythonなどのカスタマイズしたスクリプトで変換した後、Hiveターゲット表にデータを統合します。 |
Hive |
Hive |
|
Oracle Loader for HadoopまたはOracle SQL Connector for HDFS(あるいはその両方)を使用して、HDFSファイルまたはHiveソースからOracle Databaseターゲットにデータを統合します。 |
ファイルシステムまたはHive |
Oracle Database |
|
データを制約に対して検証します。 |
該当なし |
Hive |
|
Hive表をリバースエンジニアリングします。 |
Hiveメタデータ |
該当なし |
Oracle Data Integratorでトポロジを設定するには、ファイルシステムとHive情報の格納に使用されるデータ・サーバー、物理スキーマおよび論理スキーマを特定します。
この項の内容は次のとおりです。
注意: 以下に示す環境変数の多くは、あらかじめOracle Big Data Appliance用に構成されています。/opt/oracle/odiagent-version/agent_standalone/oracledi/agent/bin/HadoopEnvSetup.shの構成スクリプトを参照してください。 |
Hadoopのコンテキストでは、HDFS (Hadoop分散ファイルシステム)のファイルとローカル・ファイル(HDFS外のファイル)は区別されます。
データソースを定義するには、次の手順を実行します。
Hiveシステムに接続するために、Oracle Data Integratorで次の手順を行う必要があります。Oracle Data IntegratorではJDBCを使用してHiveに接続します。
前提条件
Hiveテクノロジが、標準のOracle Data Integratorテクノロジに含まれている必要があります。含まれていない場合、xml-referenceディレクトリからINSERT_UPDATE
モードでテクノロジをインポートします。
Hive固有のフレックスフィールドをすべて追加する必要があります。11.1.1.6.0より前のリポジトリの場合、リポジトリのアップグレード処理の一環としてフレックスフィールドが追加されます。
Hiveデータソースを設定するには、次の手順を実行します。
次の環境変数が設定されていることを確認し、その値をメモします。次に、通常の値を示します。ただし、インストールは異なる場合があります。
$HIVE_HOME: /usr/lib/hive
$HADOOP_HOME: /usr/lib/hadoop (core-site.xmlなどの構成ファイルを含む)
$OSCH_HOME: /opt/oracle/orahdfs-version
~/.odi/oracledi/userlib/additional_path.txtをテキスト・エディタで開き、表4-2に示すパスを追加します。変数名のかわりに、ステップ1で取得したフル・パスを入力します。
このステップで、ODI StudioのJARファイルへのアクセスが有効になります。
表4-2 JARファイルのパス
説明 | CDH4のパス | CDH3のパス |
---|---|---|
HiveのJARファイル |
$HIVE_HOME/lib/*.jar |
$HIVE_HOME/*.jar |
HadoopクライアントのJARファイル |
$HADOOP_HOME/client/*.jar |
$HADOOP_HOME/hadoop-*-core*.jar脚注 1 $HADOOP_HOME/hadoop-*-tools*.jar脚注 1 |
Hadoopの構成ディレクトリ |
$HADOOP_HOME |
$HADOOP_HOME |
Oracle SQL Connector for HDFSのJARファイル(オプション) |
$OSCH_HOME/jlib/*.jar |
$OSCH_HOME/jlib/*.jar |
脚注 1 アスタリスク(*)を完全なファイル名に置き換えます。
Hadoop構成ディレクトリがODIクラス・パス内にあることを確認します。
Hadoop構成ディレクトリには、core-default.xml、core-site.xmlおよびhdfs-site.xmlなどのファイルが含まれます。
Hiveテクノロジ下にデータ・サーバー・オブジェクトを作成します。
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つ以上のモデルを作成します。
グローバル・ナレッジ・モジュールとして、またはプロジェクトに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_HOME
環境変数が設定されていることを確認します。
Oracle Big Data Applianceの場合、リモートHadoopクライアントを設定する手順については、『Oracle Big Data Applianceソフトウェア・ユーザーズ・ガイド』を参照してください。
Oracle Data Integratorエージェント・コンピュータにHiveをインストールします。HIVE_HOME
環境変数が設定されていることを確認します。
Hadoop構成ディレクトリがODIクラス・パス内にあることを確認します。
Hadoop構成ディレクトリには、core-default.xml、core-site.xmlおよびhdfs-site.xmlなどのファイルが含まれます。
ODI_ADDITIONAL_CLASSPATH
にパスを追加して、ODIエージェントがJARファイルにアクセスできるようにします。Oracle SQL Connector for HDFSを使用しない場合は、$OSCH_HOMEの設定を省略します。
注意: これらのコマンドでは、$HADOOP_CONFは、Hadoop構成ファイルを含むディレクトリを指し示します。このディレクトリは、多くの場合、$HADOOP_HOMEと同じになります。 |
CDH4の場合、コマンドを次のように使用します。
ODI_ADDITIONAL_CLASSPATH=$HIVE_HOME/lib/'*':$HADOOP_HOME/client/'*':$OSCH_HOME/jlib/'*':$HADOOP_CONF
CDH3の場合、コマンドを次のように使用し、hadoop-*-core*.jarとhadoop-*-tools*.jarを完全なパス名に置き換えます。
ODI_ADDITIONAL_CLASSPATH=$HIVE_HOME/lib/'*':$HADOOP_HOME/hadoop-*-core*.jar:$HADOOP_HOME/hadoop-*-tools*.jar:$OSCH_HOME/jlib/'*':$HADOOP_CONF
Hive Regex SerDeが含まれるように環境変数 ODI_HIVE_SESSION_JARS
を設定します。
ODI_HIVE_SESSION_JARS=$HIVE_HOME/lib/hive-contrib-*.jar
必要に応じて、カスタムSerDes JARファイルなどの他のJARファイルを含めます。これらのJARファイルは、各Hive JDBCセッションに追加されるため、各Hive MapReduceジョブに追加されます。
環境変数HADOOP_CLASSPATH
を次のように設定します。
HADOOP_CLASSPATH=$HIVE_HOME/lib/hive-metastore-*.jar:$HIVE_HOME/lib/libthrift.jar:$HIVE_HOME/lib/libfb*.jar:$HIVE_HOME/lib/hive-common-*.jar:$HIVE_HOME/lib/hive-exec-*.jar.
この設定によって、HadoopスクリプトでHive MapReduceジョブを起動できるようになります。
Oracle Loader for Hadoopを使用するには、次の手順を実行します。
Oracle Data Integratorエージェント・システムにOracle Loader for Hadoopをインストールします。「Oracle Loader for Hadoopのインストール」を参照してください。
ODI_OLH_JARS
環境変数を設定することもできます。Oracle Loader for Hadoopで使用するHive、Hive SerDesなどのカスタム入力形式に必要なJARファイルをリストする必要があります。Oracle Loader for HadoopのJARファイルは含めないでください。
たとえば、Hiveからデータを抽出する場合は、「Hive入力形式のJARファイルの指定」の説明に従って追加jarをリストする必要があります。インストールに有効なファイル名を入力します。
$HIVE_HOME/lib/hive-metastore-*.jar, $HIVE_HOME/lib/libthrift.jar, $HIVE_HOME/lib/libfb*.jar
HADOOP_CLASSPATH
にパスを次のように設定します。
HADOOP_CLASSPATH=$OLH_HOME/jlib/'*':$HADOOP_CLASSPATH
Hive Regex SerDeが含まれるように環境変数 ODI_HIVE_SESSION_JARS
を設定します。
ODI_HIVE_SESSION_JARS=$HIVE_HOME/lib/hive-contrib-*.jar
必要に応じて、カスタムSerDes JARファイルなどの他のJARファイルを含めます。これらのJARファイルは、各Hive JDBCセッションに追加されるため、各Hive MapReduceジョブに追加されます。
Oracle SQL Connector for HDFS (OLH_OUTPUT_MODE=DP_OSCH
またはOSCH
)を使用するには、まずインストールする必要があります。「Oracle SQL Connector for Hadoop Distributed File Systemの設定」を参照してください。
プロジェクトの設定は標準の手順に従います。『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
この項の内容は次のとおりです。
Hiveをホストするテクノロジ、およびHive接続を構成したときに作成された論理スキーマに基づいてモデルを作成するには、『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』に記載されている標準の手順に従います。
RKM Hiveを使用して、Hive表とビューをリバースエンジニアリングします。RKM Hiveを使用してHive表のカスタマイズされたリバースエンジニアリングを実行するには、『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』に記載されている通常の手順に従います。このトピックでは、Hive表に固有の情報を示します。
リバースエンジニアリング・プロセスでは、対応するHive表またはビューに対するデータストアが作成されます。データストアは、統合インタフェースでソースまたはターゲットとして使用できます。
RKM Hive
RKM Hiveでは、次のメタデータ要素がリバースされます。
Oracle Data IntegratorデータストアとしてのHive表とビュー
「Mask」フィールドでリバース・マスクを指定して、リバースする表とビューを選択します。「Reverse」タブの「Mask」フィールドで、名前に基づいてリバースエンジニアリング・オブジェクトがフィルタ処理されます。「Mask」フィールドは空にできません。少なくともパーセント記号(%)を含める必要があります。
データ型を持つOracle Data Integrator列としてのHive列
バケット、パーティション化、クラスタおよびソート列に関する情報は、Oracle Data Integratorデータストアの各フレックスフィールドまたは列メタデータで設定されます。
表4-3に、RKM Hiveのオプションを示します。
表4-3 RKM Hiveのオプション
オプション | 説明 |
---|---|
中間結果を記録するかどうか |
|
ログ・ファイルのパスとファイル名。デフォルト・パスはユーザー・ホームで、デフォルト・ファイル名はreverse.logです。 |
表4-4に、作成されたフレックスフィールドを示します。
表4-4 リバースエンジニアリングされたHive表およびビュー用のフレックスフィールド
オブジェクト | フレックスフィールド名 | フレックスフィールド・コード | フレックスフィールド・タイプ | 説明 |
---|---|---|---|---|
データストア |
|
文字列 |
クラスタ化に使用されるバケットの数 |
|
列 |
Hiveパーティション列 |
|
数値 |
パーティション化列はすべて"1"とマークされます。パーティション情報は、次のものから取得されます。
|
列 |
Hiveクラスタ列 |
|
数値 |
クラスタ列はすべて"1"とマークされます。 |
列 |
Hiveソート列 |
|
数値 |
ソート列はすべて"1"とマークされます。 |
Hive表をリバースエンジニアリングして構成すると、次のインタフェース構成から選択できます。
ローカル・ファイルシステムまたはHDFSシステムからHive表にデータをロードするには、次の手順を実行します。
ローカル・ファイルとHDFSファイルのデータストアを作成します。
ローカル・ファイルのデータソースのリバースエンジニアリングと構成の詳細は、『Oracle Fusion Middleware Oracle Data Integrator接続およびナレッジ・モジュール・ガイド』を参照してください。
ファイル・データストアをソースとし、対応するHive表をターゲットとして使用してインタフェースを作成します。インタフェースの「フロー」タブで指定されたIKM File to Hive (Load Data)ナレッジ・モジュールを使用します。この統合ナレッジ・モジュールでは、既存のデータを置き換えるか、これに追加して、フラット・ファイルからHiveにデータをロードします。
IKM File to Hive (Load Data)では、次のものがサポートされます。
1つ以上の入力ファイル。複数のソース・ファイルをロードするには、ファイル・データストアのリソース名にアスタリスクまたは疑問符をワイルドカード文字として入力します(webshop_*.logなど)。
固定長
デリミタ付き
カスタマイズされた形式
即時または遅延ロード
上書きまたは追加
Hive外部表
表4-5に、IKM File to Hive (Load Data)のオプションを示します。詳細は、ナレッジ・モジュールを参照してください。
表4-5 IKM File to Hiveのオプション
オプション | 説明 |
---|---|
ターゲット表を作成します。 |
|
ターゲット表のデータを切り捨てます。 |
|
ファイルがローカル・ファイルシステムにあるか、HDFSにあるか |
|
外部管理Hive表を使用します。 |
|
Hiveステージング表を使用します。 ソースとターゲットが一致しない場合、またはパーティション列値がデータファイルの一部の場合、このオプションを選択します。 パーティション化値がファイル名フラグメントまたはターゲット・マッピングの定数で指定される場合、この値を |
|
インタフェースの実行後、一時オブジェクトを削除します。 |
|
最終ターゲットにデータを今ロードするか、後でロードするか |
|
カスタム・ファイル形式を処理するための解析式を指定し、ソースからターゲットのマッピングを実行します。 |
|
ソース・ファイルが見つからない場合に停止するかどうか |
Hiveにデータをロードすると、次のナレッジ・モジュールを使用してデータを検証および変換できます。
このナレッジ・モジュールは、データを検証および制御し、そのデータを切捨て/挿入(追加)モードでHiveターゲット表に統合します。無効なデータはエラー表に分離され、再利用できます。IKM Hive Control Appendは、このナレッジ・モジュールまたはIKM Hive Transformのいずれかを使用するインライン・ビュー・インタフェースをサポートします。
表4-6にオプションを示します。詳細は、ナレッジ・モジュールを参照してください。
このナレッジ・モジュールでは、Hive表のデータの完全性がチェックされます。Hiveデータストアの制約の妥当性を検証し、無効なレコードをエラー表に回します。CKM Hiveは静的制御およびフロー制御に使用できます。また、格納されているデータに対してこれらの制約を定義する必要もあります。
表4-7に、この確認ナレッジ・モジュールのオプションを示します。詳細は、ナレッジ・モジュールを参照してください。
このナレッジ・モジュールは変換を行います。シェル・スクリプトを使用してデータを変換してから、置換モードでHiveターゲット表にデータを統合します。ナレッジ・モジュールはインライン・ビュー・インタフェースをサポートし、IKM Hive Control Appendのインライン・ビューとして使用されます。
変換スクリプトで、ソース・データストアで定義されている順に入力列を読み取る必要があります。マップされたソース列のみが変換に送られます。変換スクリプトで、ターゲット・データストアで定義されている順に出力列を提供する必要があります。
表4-8に、この統合ナレッジ・モジュールのオプションを示します。詳細は、ナレッジ・モジュールを参照してください。
表4-8 IKM Hive Transformのオプション
オプション | 説明 |
---|---|
ターゲット表を作成するかどうか |
|
実行後に一時オブジェクトを削除するかどうか |
|
スクリプト・ファイル名 |
|
スクリプトの内容 |
|
ナレッジ・モジュールが変換スクリプトの適用前のデータを分散できるソース列名のカンマ区切りリスト(オプション)を指定します。 |
|
ナレッジ・モジュールが変換スクリプトの適用前のデータをソートできるソース列名のカンマ区切りリスト(オプション)を指定します。 |
|
ナレッジ・モジュールが変換スクリプトの適用前のデータを分散できるターゲット列名のカンマ区切りリスト(オプション)を指定します。 |
|
ナレッジ・モジュールが変換スクリプトの適用前のデータをソートできるターゲット列名のカンマ区切りリスト(オプション)を指定します。 |
IKM File-Hive to Oracle (OLH)では、Oracle Loader for Hadoopを使用して、HDFSファイルまたはHiveソースからOracle Databaseターゲットにデータを統合します。ナレッジ・モジュールは、インタフェース構成と選択したオプションを使用して、適切なOracle Databaseターゲット・インスタンスを生成します。HiveとHadoopのバージョンは、Oracle Loader for Hadoopの要件に従う必要があります。
関連項目:
|
表4-9に、この統合ナレッジ・モジュールのオプションを示します。詳細は、ナレッジ・モジュールを参照してください。
表4-9 IKM File - Hive to Oracle (OLH)
オプション | 説明 |
---|---|
データの転送に対してJDBC、OCI、データ・ポンプのいずれかを指定します。 |
|
ターゲット表を作成するかどうか |
|
|
Oracle Loader for HadoopおよびEXTTABの最大エラー数。 |
抽出前にソース・データを実体化するかどうか |
|
Oracle Databaseステージング表を使用するかどうか |
|
Oracle Data Pump転送に使用される共有ファイル・パス。 |
|
一時ファイルのローカル・パス。 |
|
Oracle Databaseステージング表が使用される場合のフロー(ステージ)表の作成オプション。 |
|
実行後に一時オブジェクトを削除するかどうか |
|
カスタム・ファイル形式を処理するように設定します。 |
|
Oracle Loader for Hadoop構成ファイル・プロパティ(オプション)。 |
|
ターゲット表のデータを切り捨てるかどうか |
|
ターゲット表のデータをすべて削除するかどうか |