翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
で Oozie ワークフローを に変換 AWS Step Functions する AWS Schema Conversion Tool
Apache Oozie ワークフローを変換するには、 AWS SCT バージョン 1.0.671 以降を使用していることを確認してください。また、 のコマンドラインインターフェイス (CLI) について理解しておく必要があります AWS SCT。詳細については、「CLI のリファレンス AWS Schema Conversion Tool」を参照してください。
トピック
変換の概要
Apache Oozie ソースコードには、アクションノード、制御フローノード、ジョブプロパティが含まれます。アクションノードは Apache Oozie ワークフローで実行するジョブを定義します。Apache Oozie を使用して Apache Hadoop クラスターをオーケストレーションする場合、アクションノードには Hadoop ジョブが含まれます。制御フローノードは、ワークフローパスを制御するメカニズムを提供します。制御フローノードにはstart
、end
、decision
、fork
、join
などのノードが含まれます。
AWS SCT は、ソースアクションノードとコントロールフローノードを に変換します AWS Step Functions。では AWS Step Functions、Amazon ステートメント言語 () でワークフローを定義しますASL。 AWS SCT を使用してステートマシンASLを定義します。ステートマシンはステートマシンのコレクションであり、作業を実行したり、次に移行するステートを決定したり、エラーで停止したりすることができます。次に、 はステートマシン定義を含むJSONファイル AWS SCT をアップロードします。次に、 AWS Identity and Access Management (IAM) ロール AWS SCT を使用して、 でステートマシンを設定できます AWS Step Functions。詳細については、「 AWS Step Functions デベロッパーガイド」の「 とは AWS Step Functions」を参照してください。
また、 は、サポート AWS Step Functions されていないソース AWS Lambda 関数をエミュレートする関数を含む拡張パック AWS SCT を作成します。詳細については、「での拡張パックの使用 AWS Schema Conversion Tool」を参照してください。
AWS SCT はソースジョブのプロパティを に移行します AWS Systems Manager。パラメータ名と値を保存するために、 AWS SCT は の一機能である Parameter Store を使用します AWS Systems Manager。詳細については、「 ユーザーガイド」の「 とは AWS Systems ManagerAWS Systems Manager 」を参照してください。
を使用して AWS SCT 、パラメータの値と名前を自動的に更新できます。Apache Oozie と のアーキテクチャの違いにより AWS Step Functions、パラメータの設定が必要になる場合があります。 AWS SCT は、ソースファイルで指定されたパラメータ名または値を検索し、新しい値に置き換えることができます。詳細については、「ステップ 3: パラメータを設定する」を参照してください。
次の図は、Apache Oozie から への変換のアーキテクチャ図を示しています AWS Step Functions。
変換を開始するには、スクリプトを作成して実行します AWS SCT CLI。このスクリプトには、変換を実行するためのコマンド一式が含まれています。Apache Oozie 変換スクリプトのテンプレートをダウンロードして編集できます。詳細については、「CLI シナリオの取得」を参照してください。
スクリプトに次の手順が含まれていることを確認します。
ステップ 1: ソースサービスとターゲットサービスConnect する
Apache Oozie クラスターの変換を開始するには、新しい AWS SCT プロジェクトを作成します。次に、ソースサービスとターゲットサービスに接続します。移行を開始する前に、必ずターゲット AWS リソースを作成してプロビジョニングしてください。詳細については、「Apache Oozie をソースとして使用する場合の前提条件」を参照してください。
このステップでは、次の AWS SCT CLIコマンドを使用します。
CreateProject
– 新しい AWS SCT プロジェクトを作成します。AddSource
— ソースの Apache Oozie ファイルを AWS SCT プロジェクトに追加します。ConnectSource
— ソースとして Apache Oozie に接続するためのものです。AddTarget
– を移行ターゲット AWS Step Functions としてプロジェクトに追加します。ConnectTarget
– AWS Step Functionsに接続します。
これらの AWS SCT CLIコマンドの使用例については、「」を参照してくださいApache Oozie への接続。
ConnectSource
または ConnectTarget
コマンドを実行すると、 はサービスへの接続を確立 AWS SCT しようとします。接続の試行が失敗すると、 はCLIスクリプトからのコマンドの実行 AWS SCT を停止し、エラーメッセージを表示します。
ステップ 2: マッピングルールを設定する
ソースサービスとターゲットサービスに接続したら、マッピングルールを設定します。マッピングルールは、ソース Apache Oozie ワークフローとパラメータの移行ターゲットを定義します。テーブルマッピングの詳細については、「でのデータ型のマッピング AWS Schema Conversion Tool」を参照してください。
変換するソースオブジェクトとターゲットオブジェクトを定義するには、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リファレンス
ステップ 3: パラメータを設定する
ソース 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
、、、および CreateFilter
コマンドの詳細についてはAddTargetParameter
、「 AWS Schema Conversion Tool CLIリファレンスAddParameterMapping
」を参照してください。
ステップ 4: 評価レポートを作成する
変換を開始する前に、評価レポートを作成することをおすすめします。このレポートには、すべての移行タスクがまとめられ、移行中に明らかになるアクションアイテムが詳しく説明されています。移行が失敗しないようにするには、このレポートを参照して、移行前のアクションアイテムに対処してください。詳細については、「評価レポート」を参照してください。
このステップでは、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' /
、、 SaveReportPDF
コマンドの詳細についてはCreateReport
、SaveReportCSV
「 AWS Schema Conversion Tool CLIリファレンス
ステップ 5: AWS Step Functions を使用して Apache Oozie ワークフローを に変換する AWS SCT
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 bucket にアップロードします。 は、 前提条件 ステップ 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)。このパラメータは必須です。
次のコード例では、 AWS_STEP_FUNCTIONS
を使用して で定義されたステートマシンを設定します。role_name
IAM ロール。
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 リソースネーム (ARNs) のリスト。createInvokeRoleFlag
— AWS Step Functionsの実行ロールを作成するかどうかを示すブール型フラグ。
拡張パックをインストールして使用するには、必要な許可を与えていることを確認します。詳細については、「拡張パックで AWS Lambda 関数を使用するためのアクセス許可」を参照してください。
Convert
、、、SaveOnS3
、ApplyToTarget
および CreateLambdaExtPack
コマンドの詳細については、「 AWS Schema Conversion Tool CLIリファレンスConfigureStateMachine
」を参照してください。
CLI スクリプトの実行
スクリプトの編集 AWS SCT CLIが完了したら、 .scts
拡張子を持つファイルとして保存します。これで、 AWS SCT インストールパスの app
フォルダからスクリプトを実行できます。そのためには、次のコマンドを使用します。
RunSCTBatch.cmd --pathtoscts "C:\
script_path
\oozie.scts"
前の例では、script_path
CLI スクリプトで ファイルへのパスを指定します。でのCLIスクリプトの実行の詳細については、 AWS SCT「」を参照してくださいスクリプトモード。
に変換 AWS SCT できる Apache Oozie ノード AWS Step Functions
を使用して AWS SCT 、Apache Oozie アクションノードと制御フローノードを に変換できます AWS Step Functions。
サポートされているアクションノードは次のとおりです。
Hive アクション
Hive2 アクション
Spark アクション
MapReduce ストリーミングアクション
Java アクション
DistCp アクション
Pig アクション
Sqoop アクション
FS アクション
Shell アクション
サポートされている制御フローノードは次のとおりです。
Start アクション
End アクション
Kill アクション
Decision アクション
Fork アクション
Join アクション