將阿帕奇奧西轉換AWS Step Functions為 AWS Schema Conversion Tool - AWS Schema Conversion Tool

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將阿帕奇奧西轉換AWS Step Functions為 AWS Schema Conversion Tool

若要轉換 Apache 工作流程,請確定您使用的是 1.0.671 或更高AWS SCT版本。此外,請熟悉的指令行介面 (CLI)。AWS SCT如需詳細資訊,請參閱AWS SCT CLI 參考資料

轉換概述

您的 Apache Oozie 原始程式碼包含動作節點、控制流程節點和工作屬性。動作節點定義工作,您在 Apache Oozie 工作流程中執行。當您使用阿帕奇奧西來協調您的 Apache Hadoop 集群,然後一個動作節點包括一個 Hadoop 作業。控制流程節點提供控制工作流程路徑的機制。控制流程節點包括、startenddecisionfork、和等節點join

AWS SCT將您的源動作節點和控制流節點轉換為AWS Step Functions. 在中AWS Step Functions,您可以使用亞馬遜州語言 (ASL) 定義工作流程。 AWS SCT使用 ASL 來定義您的狀態機器,這是狀態的集合,可以執行工作,確定要轉換到下一個狀態,停止並出現錯誤,等等。接下來,AWS SCT上傳帶有狀態機器定義的 JSON 文件。然後,AWS SCT可以使用您的AWS Identity and Access Management(IAM)角色在中配置狀態機器AWS Step Functions。如需詳細資訊,請參閱《AWS Step Functions 開發人員指南》中的什麼是 AWS Step Functions?章節。

此外,AWS SCT創建一個擴展包AWS Lambda,其中包含模擬AWS Step Functions不支持的源函數的函數。如需詳細資訊,請參閱使用 AWS SCT 擴充套件

AWS SCT將來源工作屬性移轉至AWS Systems Manager。若要儲存參數名稱和值,請AWS SCT使用的功能參數存放區AWS Systems Manager。如需詳細資訊,請參閱《AWS Systems Manager 使用者指南》中的什麼是 AWS Systems Manager?

您可以使用AWS SCT來自動更新參數的值和名稱。由於 Apache Oozie 和之間的架構差異AWS Step Functions,您可能需要配置參數。 AWS SCT可以在源文件中找到指定的參數名稱或值,並用新值替換它們。如需詳細資訊,請參閱步驟 3:設定參數

下圖顯示了阿帕奇 Oozie 轉換為AWS Step Functions的體系結構圖。

阿帕奇大西轉換為AWS Step Functions的體系結構圖。

若要開始轉換,請建立並執行 AWS SCT CLI 指令碼。此指令碼包含執行轉換的完整命令集。您可以下載和編輯 Apache Oozie 轉換腳本的模板。如需詳細資訊,請參閱取得 CLI 案例

請確定您的指令碼包含下列步驟。

步驟 1:連線至來源和目標服務

若要開始轉換您的 Apache Oozie 叢集,請建立新AWS SCT專案。接下來,連接到您的源和目標服務。在開始移轉之前,請確定您已建立並佈建目標AWS資源。如需詳細資訊,請參閱使用阿帕奇作為源代碼的先決條件

在此步驟中,您可以使用下列 AWS SCT CLI 命令。

  • CreateProject— 創建一個新的AWS SCT項目。

  • AddSource— 在您的AWS SCT項目中添加您的源阿帕奇 Ozie 文件。

  • ConnectSource— 連接到阿帕奇奧西作為源.

  • AddTarget-添加AWS Step Functions為項目中的遷移目標。

  • ConnectTarget— 要連接到AWS Step Functions.

如需使用這些 AWS SCT CLI 指令的範例,請參閱使用阿帕奇大西作為來源

當您執行ConnectSource或命ConnectTarget令時,AWS SCT會嘗試建立與服務的連線。如果連線嘗試失敗,則會AWS SCT停止從 CLI 指令碼執行命令,並顯示錯誤訊息。

步驟 2:設定對應規則

連線到來源和目標服務之後,請設定對應規則。對應規則會定義來源 Apache Oozie 工作流程和參數的移轉目標。如需對應規則的詳細資訊,請參閱在中建立對應規則 AWS SCT

若要定義要轉換的來源物件和目標物件,請使用AddServerMapping指令。此命令使用兩個參數:sourceTreePathtargetTreePath。這些參數的值包括來源和目標物件的明確路徑。對於 Apache Oozie 進行轉AWS Step Functions換,這些參數必須以開頭ETL

下列程式碼範例會建立OOZIEAWS_STEP_FUNCTIONS物件的對應規則。您已在上一個步驟中使用AddSourceAddTarget指令將這些物件加入到AWS SCT專案中。

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

如需有關AddServerMapping命令的詳細資訊,請參閱 AWS Schema Conversion ToolCLI 參考資料。

步驟 3:設定參數

如果您的來源 Apache Oozie 工作流程使用參數,您可能需要在轉換為AWS Step Functions. 此外,您可能需要添加新參數以與AWS Step Functions.

在此步驟中,您將使用AddParameterMappingAddTargetParameter指令。

若要取代來源檔案中的參數值,請使用AddParameterMapping指令。 AWS SCT掃描來源檔案、依名稱或值尋找參數,並變更其值。您可以運行單個命令來掃描所有源文件。您可以使用下列清單中的前三個參數之一來定義要掃描的檔案範圍。此指令最多可使用六個參數。

  • 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' /

下列程式碼範例會取代名稱等於hdfs://ip-111-222-33-44.eu-west-1.compute.internal:8020值的nameNode所有參數。

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令相同的一組參數。

下列程式碼範例會新增clusterId目標參數,而不是nameNode參數。

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' /

如需有關AddServerMappingAddParameterMappingAddTargetParameterCreateFilter命令的詳細資訊,請參閱 AWS Schema Conversion ToolCLI 參考資料。

步驟 4:建立評估報告

在開始轉換之前,我們建議您先建立評估報告。此報告概述了所有移轉工作,並詳細說明移轉期間將出現的行動項目。若要確定您的移轉不會失敗,請在移轉前檢視此報告並處理行動項目。如需詳細資訊,請參閱遷移評定報告

在此步驟中,您可以使用CreateReport指令。此命令使用兩個參數。第一個參數說明AWS SCT建立評估報告的來源物件。若要這麼做,請使用下列其中一個參數:filterNametreePath、或namePath。此參數是強制性的。此外,您還可以添加一個可選的布林參數forceLoad。如果將此參數設定為true,則AWS SCT會自動載入您在指CreateReport令中指定之來源物件的所有子物件。

下列程式碼範例會針對來源 Oozie 檔案的Applications節點建立評估報告。

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

然後,您可以將評估報告的副本儲存為 PDF 或逗號分隔值 (CSV) 檔案。若要這麼做,請使用SaveReportPDFSaveReportCSV指令。

此指SaveReportPDF令會將評估報告的副本儲存為 PDF 檔案。此命令使用四個參數。該file參數是強制性的,其他參數是可選的。

  • file— PDF 檔案的路徑及其名稱。

  • filter— 您之前建立的篩選器名稱,以定義要移轉之來源物件的範圍。

  • treePath— 您儲存評估報告副本之來源資料庫物件的明確路徑。

  • namePath— 僅包含您儲存評估報告副本之目標物件名稱的路徑。

此指SaveReportCSV令會將您的評估報告儲存為 CSV 檔案。此命令使用四個參數。該directory參數是強制性的,其他參數是可選的。

  • directory— AWS SCT 儲存 CSV 檔案的資料夾路徑。

  • filter— 您之前建立的篩選器名稱,以定義要移轉之來源物件的範圍。

  • treePath— 您儲存評估報告副本之來源資料庫物件的明確路徑。

  • namePath— 僅包含您儲存評估報告副本之目標物件名稱的路徑。

下列程式碼範例會將評估報告的副本儲存在c:\sct\ar.pdf檔案中。

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

下列程式碼範例會將評估報告的副本儲存為 CSV 檔案在c:\sct資料夾中。

SaveReportCSV -file:'c:\sct' /

如需有關CreateReportSaveReportPDFSaveReportCSV命令的詳細資訊,請參閱 AWS Schema Conversion ToolCLI 參考

步驟 5:將您的 Apache 工作流程轉換為 AWS Step FunctionsAWS SCT

設定AWS SCT專案之後,請轉換原始程式碼並將其套用至AWS 雲端.

在此步驟中,您將使用ConvertSaveOnS3ConfigureStateMachine、和ApplyToTarget指令。

此指Migrate令會將您的來源物件移轉至目標叢集。此命令使用四個參數。請確定您已指定filtertreePath參數。其他參數是可選的。

  • 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 儲存貯體。 AWS SCT使用您在先決條件步驟中存放在AWS服務設定檔中的 Amazon S3 儲存貯體。

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

ConfigureStateMachine命令配置狀態機器。此指令最多可使用六個參數。請確定您使用下列清單中的前三個參數之一來定義目標範圍。

  • filterName— 目標物件的篩選器名稱。您可以使用CreateFilter指令建立篩選。

  • treePath— 目標物件的明確路徑。

  • namePath— 指向特定目標物件的明確路徑。

  • iamRole— IAM 角色的亞馬遜資源名稱 (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命令將轉換後的代碼應用於目標服務器。若要執行此命令,請使用下列其中一個參數:filterNametreePath、或namePath來定義要套用的目標物件。

下列程式碼範例會將狀app_wp態機套用至AWS Step Functions。

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

若要確保轉換後的程式碼產生與原始程式碼相同的結果,您可以使用AWS SCT延伸套件。這是一組模擬不支持的 Apache Oozie 函數的AWS Step Functions函數。AWS Lambda要安裝此擴展包,您可以使用CreateLambdaExtPack命令。

此指令最多可使用五個參數。請確定您使Oozie2SFextPackId. 在這種情況下,AWS SCT為源 Apache Oozie 函數創建一個擴展包。

  • extPackId— 一組 Lambda 函數的唯一識別碼。此為必要參數。

  • tempDirectory— AWS SCT 可儲存暫存檔案的路徑。此為必要參數。

  • awsProfile— 您的AWS個人資料的名稱。

  • lambdaExecRoles— 要用於 Lambda 函數之執行角色的亞馬遜資源名稱 (ARN) 清單。

  • createInvokeRoleFlag— 布林旗標,指出是否要建立的執行角色AWS Step Functions。

若要安裝並使用擴充功能套件,請確定您提供必要的權限。如需詳細資訊,請參閱在擴充功能套件中使用AWS Lambda函式的權限

如需有關Convert、、SaveOnS3ConfigureStateMachineCreateLambdaExtPack命令的詳細資訊,請參閱 AWS Schema Conversion ToolCLI 參考資料。ApplyToTarget

執行您的 CLI 指令碼

完成 AWS SCT CLI 指令碼的編輯後,請將其儲存為.scts副檔名為的檔案。現在,您可以從AWS SCT安裝路徑的app文件夾運行腳本。為此,請使用下列命令。

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

在上述範例中,使用 CLI 指令碼將 script_path 取代為檔案的路徑。如需有關在中執行 CLI 指令碼的詳細資訊AWS SCT,請參閱指令碼模式

阿帕奇奧齊節點,可AWS SCT以轉換為 AWS Step Functions

您可以使用AWS SCT將 Apache Oozie 動作節點和控制流節點轉換為AWS Step Functions.

支援的動作節點包括下列項目:

  • 蜂巢行動

  • 「隱藏 2」動作

  • 火花行動

  • MapReduce串流動作

  • 爪哇動作

  • DistCp 動作

  • 豬, 行動

  • 方向動作

  • FS 動作

  • 殼牌動作

支援的控制流程節點包括下列項目:

  • 開始動作

  • 結束動作

  • 殺死動作

  • 決策行動

  • 叉動作

  • 加入動作