

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS Step Functions を使用した Oozie ワークフローの への変換 AWS Schema Conversion Tool
<a name="big-data-oozie"></a>

Apache Oozie ワークフローを変換するには、 AWS SCT バージョン 1.0.671 以降を使用していることを確認してください。また、 AWS SCTのコマンドラインインターフェイス (CLI) についても理解しておいてください。詳細については、「[の CLI リファレンス AWS Schema Conversion Tool](CHAP_Reference.md)」を参照してください。

**Topics**
+ [変換の概要](#big-data-oozie-overview)
+ [ステップ 1: ソースサービスとターゲットサービスConnect する](#big-data-oozie-connect-to-databases)
+ [ステップ 2: マッピングルールを設定する](#big-data-oozie-mapping-rules)
+ [ステップ 3: パラメータを設定する](#big-data-oozie-configure-parameters)
+ [ステップ 4: 評価レポートを作成する](#big-data-oozie-assessment-report)
+ [ステップ 5: AWS Step Functions を使用して Apache Oozie ワークフローを に変換する AWS SCT](#big-data-oozie-migrate)
+ [CLI スクリプトの実行](#big-data-oozie-run-migration)
+ [を に変換 AWS SCT できる Apache Oozie ノード AWS Step Functions](#big-data-oozie-supported-nodes)

## 変換の概要
<a name="big-data-oozie-overview"></a>

Apache Oozie ソースコードには、アクションノード、制御フローノード、ジョブプロパティが含まれます。アクションノードは Apache Oozie ワークフローで実行するジョブを定義します。Apache Oozie を使用して Apache Hadoop クラスターをオーケストレーションする場合、アクションノードには Hadoop ジョブが含まれます。制御フローノードは、ワークフローパスを制御するメカニズムを提供します。制御フローノードには`start`、`end`、`decision`、`fork`、`join` などのノードが含まれます。

AWS SCT は、ソースアクションノードとコントロールフローノードを に変換します AWS Step Functions。では AWS Step Functions、Amazon States Language (ASL) でワークフローを定義します。 は、ASL AWS SCT を使用してステートマシンを定義します。ステートマシンは、ステートマシンのコレクションであり、作業の実行、次の状態への移行の決定、エラーによる停止などを行うことができます。次に、 はステートマシン定義を含む JSON ファイル AWS SCT をアップロードします。次に、 AWS Identity and Access Management (IAM) ロール AWS SCT を使用して でステートマシンを設定できます AWS Step Functions。詳細については、「 *AWS Step Functions デベロッパーガイド*」の[「What is AWS Step Functions?](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)」を参照してください。

また、 は、 がサポート AWS Step Functions していないソース AWS Lambda 関数をエミュレートする関数を含む拡張パック AWS SCT を作成します。詳細については、「[での拡張パックの使用 AWS Schema Conversion Tool](CHAP_ExtensionPack.md)」を参照してください。

AWS SCT はソースジョブのプロパティを に移行します AWS Systems Manager。パラメータ名と値を保存するために、 AWS SCT は の一機能である Parameter Store を使用します AWS Systems Manager。詳細については、「 *AWS Systems Manager ユーザーガイド*」の[「What is AWS Systems Manager?](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)」を参照してください。

を使用して AWS SCT 、パラメータの値と名前を自動的に更新できます。Apache Oozie と のアーキテクチャの違いにより AWS Step Functions、パラメータの設定が必要になる場合があります。 AWS SCT はソースファイルで指定されたパラメータ名または値を見つけ、新しい値に置き換えることができます。詳細については、「[ステップ 3: パラメータを設定する](#big-data-oozie-configure-parameters)」を参照してください。

次の図は、Apache Oozie 変換のアーキテクチャ図を示しています AWS Step Functions。

![Apache Oozie 変換のアーキテクチャ図 AWS Step Functions。](http://docs.aws.amazon.com/ja_jp/SchemaConversionTool/latest/userguide/images/aws-sct-oozie-conversion-architecture-diagram.png)


変換を開始するには、CLI AWS SCT スクリプトを作成して実行します。このスクリプトには、変換を実行するためのコマンド一式が含まれています。Apache Oozie 変換スクリプトのテンプレートをダウンロードして編集できます。詳細については、「[CLI シナリオの取得](CHAP_Reference.md#CHAP_Reference.Scenario)」を参照してください。

スクリプトに次の手順が含まれていることを確認します。

## ステップ 1: ソースサービスとターゲットサービスConnect する
<a name="big-data-oozie-connect-to-databases"></a>

Apache Oozie クラスターの変換を開始するには、新しい AWS SCT プロジェクトを作成します。次に、ソースサービスとターゲットサービスに接続します。移行を開始する前に、必ずターゲット AWS リソースを作成してプロビジョニングしてください。詳細については、「[Apache Oozie をソースとして使用する場合の前提条件](CHAP_Source.Oozie.md#CHAP_Source.Oozie.Prerequisites)」を参照してください。

このステップでは、次の AWS SCT CLI コマンドを使用します。
+ `CreateProject` – 新しい AWS SCT プロジェクトを作成します。
+ `AddSource` — ソースの Apache Oozie ファイルを AWS SCT プロジェクトに追加します。
+ `ConnectSource` — ソースとして Apache Oozie に接続するためのものです。
+ `AddTarget` – をプロジェクト内の移行ターゲット AWS Step Functions として追加します。
+ `ConnectTarget` – AWS Step Functionsに接続します。

これらの CLI コマンドの使用例については、 AWS SCT 「」を参照してください[Apache Oozie への接続](CHAP_Source.Oozie.md)。

`ConnectSource` または `ConnectTarget` コマンドを実行すると、 AWS SCT はサービスへの接続を確立しようとします。接続の試行が失敗すると、 は CLI スクリプトからのコマンドの実行 AWS SCT を停止し、エラーメッセージを表示します。

## ステップ 2: マッピングルールを設定する
<a name="big-data-oozie-mapping-rules"></a>

ソースサービスとターゲットサービスに接続したら、マッピングルールを設定します。マッピングルールは、ソース Apache Oozie ワークフローとパラメータの移行ターゲットを定義します。テーブルマッピングの詳細については、「[AWS Schema Conversion Tool でのデータ型のマッピング](CHAP_Mapping.md)」を参照してください。

変換するソースオブジェクトとターゲットオブジェクトを定義するには、`AddServerMapping` コマンドを使用します。このコマンドでは、`sourceTreePath` と `targetTreePath` 2 つのパラメータを使用します。これらのパラメータの値には、ソースオブジェクトとターゲットオブジェクトへの明示的なパスが含まれます。Apache Oozie を AWS Step Functions に変換するには、これらのパラメータは `ETL` で始まる必要があります。

次のコード例では、`OOZIE` オブジェクトと `AWS_STEP_FUNCTIONS` オブジェクトのマッピングルールを作成しています。前のステップの `AddSource`および `AddTarget` コマンドを使用して、これらのオブジェクトを AWS SCT プロジェクトに追加しました。

```
AddServerMapping
    -sourceTreePath: 'ETL.APACHE_OOZIE'
    -targetTreePath: 'ETL.AWS_STEP_FUNCTIONS'
/
```

`AddServerMapping` コマンドの使用の詳細については、「[AWS Schema Conversion Tool CLI リファレンス](https://s3.amazonaws.com/publicsctdownload/AWS+SCT+CLI+Reference.pdf)」を参照してください。

## ステップ 3: パラメータを設定する
<a name="big-data-oozie-configure-parameters"></a>

ソース Apache Oozie ワークフローでパラメータを使用している場合は、 AWS Step Functionsへの変換後にパラメータの値を変更しなければならない場合があります。また、 で使用する新しいパラメータを追加する必要がある場合があります AWS Step Functions。

このステップでは、`AddParameterMapping` および `AddTargetParameter` コマンドを使用します。

ソースファイル内のパラメータ値を置き換えるには、`AddParameterMapping` コマンドを使用します。 AWS SCT はソースファイルをスキャンし、名前または値でパラメータを検索し、値を変更します。1 つのコマンドを実行してすべてのソースファイルをスキャンできます。スキャンするファイルの範囲は、以下のリストの最初の 3 つのパラメータのいずれかを使用して定義します。このコマンドは最大で 6 つのパラメータを使用します。
+ `filterName` — ソースオブジェクトのフィルターの名前。`CreateFilter` コマンドを使用してフィルタを作成できます。
+ `treePath` — ソースオブジェクトへの明示的なパス。
+ `namePath` — 特定のソースオブジェクトへの明示的なパス。
+ `sourceParameterName` — ソースパラメータの名前。
+ `sourceValue` — ソースパラメータの値。
+ `targetValue` — ターゲットパラメータの値。

次のコード例では、`c:\oozie\hive.py` 値が等しいすべてのパラメータを `s3://bucket-oozie/hive.py` 値に置き換えます。

```
AddParameterMapping
	-treePath: 'ETL.OOZIE.Applications'
	-sourceValue: 'c:\oozie\hive.py'
	-targetValue: 's3://bucket-oozie/hive.py'
/
```

次のコード例では、名前が `nameNode` と同じであるすべてのパラメーターを `hdfs://ip-111-222-33-44.eu-west-1.compute.internal:8020` 値に置き換えます。

```
AddParameterMapping
    -treePath: 'ETL.OOZIE_SOURCE.Applications'
    -sourceParameter: 'nameNode'
    -targetValue: 'hdfs://ip-111-222-33-44.eu-west-1.compute.internal:8020'
/
```

次のコード例では、名前が `nameNode` と同じで、値が `hdfs://ip-55.eu-west-1.compute.internal:8020` と等しいすべてのパラメータを `targetValue` パラメータの値に置き換えます。

```
AddParameterMapping
    -treePath: 'ETL.OOZIE_SOURCE.Applications'
    -sourceParameter: 'nameNode'
    -sourceValue: 'hdfs://ip-55-66-77-88.eu-west-1.compute.internal:8020'
    -targetValue: 'hdfs://ip-111-222-33-44.eu-west-1.compute.internal:8020'
/
```

ソースファイルの既存のパラメータに加えて、ターゲットファイルに新しいパラメータを追加するには、`AddTargetParameter` コマンドを使用します。このコマンドは、`AddParameterMapping` コマンドと同じパラメータセットを使用します。

次のコード例では、`nameNode` パラメーターの代わりに `clusterId` ターゲットパラメーターを追加しています。

```
AddTargetParameter
    -treePath: 'ETL.OOZIE_SOURCE.Applications'
    -sourceParameter: 'nameNode'
    -sourceValue: 'hdfs://ip-55-66-77-88.eu-west-1.compute.internal:8020'
    -targetParameter: 'clusterId'
    -targetValue: '1234567890abcdef0'
/
```

`AddServerMapping`、`AddParameterMapping`、`AddTargetParameter`、`CreateFilter` コマンドの詳細については、『[AWS Schema Conversion Tool CLI リファレンス](https://s3.amazonaws.com/publicsctdownload/AWS+SCT+CLI+Reference.pdf)』を参照してください。

## ステップ 4: 評価レポートを作成する
<a name="big-data-oozie-assessment-report"></a>

変換を開始する前に、評価レポートを作成することをおすすめします。このレポートには、すべての移行タスクがまとめられ、移行中に明らかになるアクションアイテムが詳しく説明されています。移行が失敗しないようにするには、このレポートを参照して、移行前のアクションアイテムに対処してください。詳細については、「[評価レポート](CHAP_AssessmentReport.md)」を参照してください。

このステップでは、`CreateReport` コマンドを使用します。このコマンドは、2 つのパラメータを使用します。最初のパラメータは、 が評価レポート AWS SCT を作成するソースオブジェクトを記述します。そのためには、`filterName`、`treePath`、または `namePath` のいずれかのパラメーターを使用します。このパラメータは必須です。オプションの Boolean パラメータ `forceLoad` を追加することもできます。このパラメータを に設定すると`true`、 は `CreateReport` コマンドで指定したソースオブジェクトのすべての子オブジェクト AWS SCT を自動的にロードします。

次のコード例では、ソース Oozie ファイルの `Applications` ノードの評価レポートを作成します。

```
CreateReport
    -treePath: 'ETL.APACHE_OOZIE.Applications'
/
```

その後、評価レポートのコピーを PDF またはカンマ区切り (CSV) ファイルとして保存できます。これを行うには、`SaveReportPDF` コマンドまたは `SaveReportCSV` コマンドを使用します。

`SaveReportPDF` コマンドは、評価レポートのコピーを PDF ファイルとして保存します。このコマンドは、4 つのパラメータを使用します。`file` パラメータは必須です。他のパラメータはオプションです。
+ `file` — PDF ファイルへのパスとその名前。
+ `filter` — 移行するソースオブジェクトの範囲を定義するために以前に作成したフィルタの名前。
+ `treePath` — 評価レポートのコピーを保存するソースデータベースオブジェクトへの明示的なパス。
+ `namePath` — 評価レポートのコピーを保存する対象オブジェクトの名前のみを含むパス。

`SaveReportCSV` コマンドは、評価レポートを CSV ファイルに保存します。このコマンドは、4 つのパラメータを使用します。`directory` パラメータは必須です。他のパラメータはオプションです。
+ `directory` – が CSV ファイル AWS SCT を保存するフォルダへのパス。
+ `filter` — 移行するソースオブジェクトの範囲を定義するために以前に作成したフィルタの名前。
+ `treePath` — 評価レポートのコピーを保存するソースデータベースオブジェクトへの明示的なパス。
+ `namePath` — 評価レポートのコピーを保存する対象オブジェクトの名前のみを含むパス。

次のコード例では、評価レポートのコピーを `c:\sct\ar.pdf` ファイルに保存しています。

```
SaveReportPDF
	-file:'c:\sct\ar.pdf'
/
```

次のコード例では、評価レポートのコピーを CSV ファイルとして `c:\sct` フォルダに保存します。

```
SaveReportCSV
	-file:'c:\sct'
/
```

`CreateReport`、`SaveReportPDF`、`SaveReportCSV` コマンドの使用の詳細については、『[AWS Schema Conversion Tool CLI コマンドリファレンス](https://s3.amazonaws.com/publicsctdownload/AWS+SCT+CLI+Reference.pdf)』を参照してください。

## ステップ 5: AWS Step Functions を使用して Apache Oozie ワークフローを に変換する AWS SCT
<a name="big-data-oozie-migrate"></a>

 AWS SCT プロジェクトを設定したら、ソースコードを変換して に適用します AWS クラウド。

このステップでは、 `Convert`、`SaveOnS3`、`ConfigureStateMachine`、`ApplyToTarget` コマンドを使用します。

`Migrate` コマンドは、ソースオブジェクトをターゲットクラスターに移行します。このコマンドは、4 つのパラメータを使用します。必ず `filter` または `treePath`パラメータを指定してください。その他のパラメータは省略可能です。
+ `filter` — 移行するソースオブジェクトの範囲を定義するために以前に作成したフィルタの名前。
+ `namePath` — 特定のソースオブジェクトへの明示的なパス。
+ `treePath` — 評価レポートのコピーを保存するソースデータベースオブジェクトへの明示的なパス。
+ `forceLoad` – に設定すると`true`、 は移行中にデータベースメタデータツリー AWS SCT を自動的にロードします。デフォルト値は `false` です。

次のコード例は、ソース Oozie ファイル内の `Applications` フォルダからファイルを変換します。

```
Convert
    -treePath: 'ETL.APACHE_OOZIE.Applications'
/
```

`SaveOnS3` は、Amazon S3 バケットにステートマシンの定義をアップロードします。このコマンドは `treePath` パラメータを使用します。このコマンドを実行するには、ステートマシン定義を含むターゲットフォルダをこのパラメータの値として使用します。

以下では、`AWS_STEP_FUNCTIONS`ターゲットオブジェクトの`State machine definitions`フォルダを Amazon S3 バケットにアップロードします。 は、[前提条件](CHAP_Source.Oozie.md#CHAP_Source.Oozie.Prerequisites)ステップで AWS サービスプロファイルに保存した Amazon S3 バケット AWS SCT を使用します。

```
SaveOnS3
    -treePath: 'ETL.AWS_STEP_FUNCTIONS.State machine definitions'
/
```

`ConfigureStateMachine` コマンドはステートマシンを設定します。このコマンドは最大で 6 つのパラメータを使用します。ターゲットスコープは、必ず以下のリストの最初の 3 つのパラメータのいずれかを使用して定義してください。
+ `filterName` — ターゲットオブジェクトのフィルターの名前。`CreateFilter` コマンドを使用してフィルターを作成できます。
+ `treePath` — ターゲットオブジェクトへの明示的なパス。
+ `namePath` — 特定のターゲットオブジェクトへの明示的なパス。
+ `iamRole` — ステップマシンへのアクセスを提供する IAM ロールの Amazon リソースネーム (ARN)。このパラメータは必須です。

次のコード例では、{{role\_name}} IAM ロールを使用して `AWS_STEP_FUNCTIONS` で定義されるステートマシンを設定します。

```
ConfigureStateMachine
    -treePath: 'ETL.AWS_STEP_FUNCTIONS.State machine definitions'
    -role: 'arn:aws:iam::555555555555:role/{{role_name}}'
/
```

`ApplyToTarget` コマンドは、変換されたコードをターゲットサーバーに適用します。このコマンドを実行するには、`filterName`、`treePath`、または `namePath` のいずれかのパラメータを使用して、適用するターゲットオブジェクトを定義します。

次のコード例では、`app_wp`ステートマシンを に適用します AWS Step Functions。

```
ApplyToTarget
    -treePath: 'ETL.AWS_STEP_FUNCTIONS.State machines.app_wp'
/
```

変換したコードがソースコードと同じ結果になるようにするには、 AWS SCT 拡張パックを使用できます。これは、 がサポートしていない Apache Oozie AWS Lambda 関数をエミュレートする AWS Step Functions 一連の関数です。`CreateLambdaExtPack` コマンドを使用して、この拡張パックをインストールできます。

このコマンドは最大 5 つのパラメータを使用します。必ず `extPackId` 用の **Oozie2SF** を使用してください。この場合、 はソース Apache Oozie 関数用の拡張パック AWS SCT を作成します。
+ `extPackId` — 一連の Lambda 関数の一意の識別子。このパラメータは必須です。
+ `tempDirectory` – が一時ファイルを保存 AWS SCT できるパス。このパラメータは必須です。
+ `awsProfile` – AWS プロファイルの名前。
+ `lambdaExecRoles` — Lambda 関数に使用する実行ロールの Amazon リソースネーム (ARN) のリスト。
+ `createInvokeRoleFlag` — AWS Step Functionsの実行ロールを作成するかどうかを示すブール型フラグ。

拡張パックをインストールして使用するには、必要な許可を与えていることを確認します。詳細については、「[拡張機能パックで AWS Lambda 関数を使用するためのアクセス許可](CHAP_Source.Oozie.md#CHAP_Source.Oozie.TargetPrerequisites)」を参照してください。

 `Convert`、`SaveOnS3`、`ConfigureStateMachine`、`ApplyToTarget`、`CreateLambdaExtPack` コマンドの使用の詳細については、『[AWS Schema Conversion Tool CLI コマンドリファレンス](https://s3.amazonaws.com/publicsctdownload/AWS+SCT+CLI+Reference.pdf)』を参照してください。

## CLI スクリプトの実行
<a name="big-data-oozie-run-migration"></a>

 AWS SCT CLI スクリプトの編集が完了したら、`.scts`拡張子が付いたファイルとして保存します。これで、 AWS SCT インストールパスの `app`フォルダからスクリプトを実行できます。そのためには、次のコマンドを使用します。

```
RunSCTBatch.cmd --pathtoscts "C:\{{script_path}}\oozie.scts"
```

前の例では、{{script\_path}} を CLI スクリプトを含むファイルへのパスに置き換えます。で CLI スクリプトを実行する方法の詳細については AWS SCT、「」を参照してください[スクリプトモード](CHAP_Reference.md#CHAP_Reference.ScriptMode)。

## を に変換 AWS SCT できる Apache Oozie ノード AWS Step Functions
<a name="big-data-oozie-supported-nodes"></a>

を使用して AWS SCT 、Apache Oozie アクションノードとコントロールフローノードを に変換できます AWS Step Functions。

サポートされているアクションノードは次のとおりです。
+ Hive アクション
+ Hive2 アクション
+ Spark アクション
+ MapReduce ストリーミングアクション
+ Java アクション
+ DistCp アクション
+ Pig アクション
+ Sqoop アクション
+ FS アクション
+ Shell アクション

サポートされている制御フローノードは次のとおりです。
+ Start アクション
+ End アクション
+ Kill アクション
+ Decision アクション
+ Fork アクション
+ Join アクション