この章では、Oracle Data Integratorを使用したHadoopデータ統合の基本概念の概要を示します。
この章の内容は次のとおりです。
Hadoopでの通常の処理には、MapReduceジョブとしてプログラミングされたデータの検証や変換などがあります。MapReduceジョブの設計と実装には、専門的なプログラミングの知識が必要です。しかしOracle Data Integratorを使用すれば、MapReduceジョブを記述する必要はありません。Oracle Data Integratorは、Apache Hiveと、MapReduceジョブを実装するためのSQLライクな言語であるHive Query Language (HiveQL)を使用します。
ビッグ・データ処理のシナリオを実装する場合の最初の手順は、データをHadoopにロードすることです。データ・ソースは、通常はファイルまたはSQLデータベースです。
データのロード後は、SQLと同様の方法でHiveQLを使用して、データを検証および変換できます。データ検証(NULLや主キーのチェックなど)および変換(フィルタ、集計、設定操作、表の導出など)を実行できます。また、カスタマイズした手続き型のスニペット(スクリプト)をデータの処理に含めることもできます。
データが集計、簡略化または処理されて小さなデータ・セットになったら、追加の処理および分析を行うためにそれをOracleデータベース、他のリレーショナル・データベース、HDFS、HBase、またはHiveにロードできます。Oracleデータベースへのロードを最適に行うには、Oracle Loader for Hadoopが推奨されます。
詳細は、第4章「Hadoopデータの統合」を参照してください。
デフォルトでは、Oracle Data Integrator (ODI)はHiveQLを使用してマッピングを実装します。しかし、Oracle Data IntegratorではPig LatinおよびSpark Pythonを使用してマッピングを実装することもできます。マッピングを設計したら、それをデフォルトのHiveQLを使用して実装することも、Pig LatinまたはSpark Pythonを使用して実装するよう選択することもできます。
ODIにおけるPig LatinおよびSpark Pythonのサポートは、これらの言語に固有のコンポーネントKMのセットによって実現されています。これらのコンポーネントKMは、Pigデータ・サーバーまたはSparkデータ・サーバーがマッピングのステージング場所として使用される場合にのみ使用されます。
たとえば、ステージング場所としてPigデータ・サーバーを使用する場合、Pig関連のKMがマッピングを実装するのに使用され、Pig Latinコードが生成されます。同様に、Spark Pythonコードを生成するには、Sparkデータ・サーバーをマッピングのステージング場所として使用する必要があります。
異なる言語のコードの生成ならびにPigおよびSparkコンポーネントKMの詳細は、次を参照してください。
Apache Oozieは、Hadoopでのアクションをオーケストレートするのに役立つワークフロー・スケジューラ・システムです。Hadoop MapReduceジョブを実行するアクションによるワークフロー・ジョブの実行に特化したサーバーベースのワークフロー・エンジンです。Oozieワークフローの実装と実行には、Oozieについての詳細な知識が必要になります。
しかし、Oracle Data IntegratorがあればOozieのエキスパートになる必要はありません。Oracle Data Integratorを使用すると、Oozieワークフローを簡単に定義および実行できます。
Oracle Data Integratorでは、統合プロジェクト(パッケージ、プロシージャ、マッピング、またはシナリオ)をOozieエンジンで実行することにより、Oozieワークフロー定義を自動的に生成できます。生成されたOozieワークフロー定義はOozieワークフロー・システムに配置されて実行されます。コンテンツの検証のためにOozieワークフローの配置のみを行い、実行は後から行うこともできます。
Oozieログからの情報は取得されてODIリポジトリにOozie UIへのリンクとともに保存されます。この情報はODIオペレータおよびコンソールに表示されます。
詳細は、第5章「Oozieワークフローの実行」を参照してください。
ODIでは、Oozieワークフローの実行のために次の2つのモードが用意されています。
TASK
タスク・モードではすべてのODIタスクに対してOozieアクションが生成されます。これがデフォルト・モードです。
タスク・モードでは次は処理できません。
複数のタスクにまたがるスクリプト・コードがあるKM
トランザクションがあるKM
タスクをまたぐファイル・アクセスができないファイル・システム・アクセスが発生するKM
ループ構成のあるODIパッケージ
SESSION
セッション・モードではセッション全体に対してOozieアクションが生成されます。
次のいずれかの条件に当てはまる場合は、自動的にこのモードが使用されます。
いずれかのタスクによりトランザクション接続がオープンされている。
いずれかのタスクにスクリプトがある。
パッケージにループが含まれている。
パッケージ内のループはOozieエンジンではサポートされておらず、SESSIONモードで実行されているときであっても、実行やセッション・ログ・コンテンツの取得という点からして正しく動作しない可能性があります。
注意: ほとんどのユースケースにおいて、このモードの使用をお薦めします。 |
デフォルトの場合、Oozieランタイム・エンジンではタスク・モードが使用されます。つまり、Oozieランタイム・エンジンのOOZIE_WF_GEN_MAX_DETAIL
プロパティのデフォルト値はTASKです。
前述の条件が満たされているかどうかに関わりなく、Oozieランタイム・エンジンをセッション・モードを使用するように構成できます。Oozieランタイム・エンジンでセッション・レベルのOozieワークフローが生成されるよう設定するには、Oozieランタイム・エンジンのOOZIE_WF_GEN_MAX_DETAIL
プロパティをSESSIONに設定します。
詳細は、第5.2.2項「Oozieランタイム・エンジンのプロパティ」を参照してください。