遷移阿帕奇 Hadoop 到亞馬遜 EMR 與 AWS Schema Conversion Tool - AWS Schema Conversion Tool

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

遷移阿帕奇 Hadoop 到亞馬遜 EMR 與 AWS Schema Conversion Tool

若要移轉阿帕奇 Hadoop 叢集,請確定您使用的是 1.0.670 或更高AWS SCT版本。此外,請熟悉的指令行介面 (CLI)。AWS SCT如需詳細資訊,請參閱AWS SCT CLI 參考資料

移轉概觀

下圖顯示了從阿帕奇 Hadoop 遷移到亞馬遜 EMR 的體系結構圖。

Hadoop 的遷移的體系結構圖

AWS SCT將資料和中繼資料從來源 Hadoop 叢集遷移到 Amazon S3 儲存貯體。接下來,AWS SCT使用來源 Hive 中繼資料,在目標 Amazon EMR Hive 服務中建立資料庫物件。或者,您可以配置 Hive 使用AWS Glue Data Catalog作為其中繼存儲。在此情況下,請將來源 Hive 中繼資料AWS SCT移轉至. AWS Glue Data Catalog

然後,您可以使用AWS SCT將資料從 Amazon S3 儲存貯體遷移到目標亞馬遜 EMR HDFS 服務。或者,您可以將資料保留在 Amazon S3 儲存貯體中,並將其用作 Hadoop 工作負載的資料儲存庫。

若要啟動 Hapood 移轉,請建立並執行 AWS SCT CLI 指令碼。此指令碼包含用於執行移轉的完整命令集。您可以下載並編輯 Hadoop 遷移指令碼的範本。如需詳細資訊,請參閱取得 CLI 案例

請確定您的指令碼包含下列步驟,以便您可以執行從 Apache Hadoop 到亞馬遜 S3 和亞馬遜 EMR 的遷移。

步驟 1:連接到您的 Hadoop 叢集

若要開始移轉您的 Apache Hadoop 叢集,請建立新AWS SCT專案。接下來,連接到您的來源和目標叢集。在開始移轉之前,請確定您已建立並佈建目標AWS資源。

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

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

  • AddSourceCluster-連接到源 Hadoop 集群在您的AWS SCT項目。

  • AddSourceClusterHive-連接到源 Hive 服務在您的項目。

  • AddSourceClusterHDFS— 連接到項目中的源 HDFS 服務。

  • AddTargetCluster— 連接到您的項目中的目標亞馬遜 EMR 集群。

  • AddTargetClusterS3— 將亞馬遜 S3 存儲桶添加到您的項目中。

  • AddTargetClusterHive-連接到項目中的目標蜂巢服務

  • AddTargetClusterHDFS-連接到項目中的目標 HDFS 服務

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

當您執行連線至來源或目標叢集的命令時,AWS SCT會嘗試建立與此叢集的連線。如果連線嘗試失敗,則會AWS SCT停止從 CLI 指令碼執行命令,並顯示錯誤訊息。

步驟 2:設定對應規則

連線到來源和目標叢集之後,請設定對應規則。對應規則定義來源叢集的移轉目標。請確定您已為AWS SCT專案中新增的所有來源叢集設定對應規則。如需對應規則的詳細資訊,請參閱在中建立對應規則 AWS SCT

在此步驟中,您可以使用AddServerMapping指令。此命令使用兩個參數,用於定義來源叢集和目標叢集。您可以使用AddServerMapping指令搭配資料庫物件的明確路徑或物件名稱。對於第一個選項,您可以包括物件的類型及其名稱。對於第二個選項,您只包括物件名稱。

  • sourceTreePath— 來源資料庫物件的明確路徑。

    targetTreePath— 目標資料庫物件的明確路徑。

  • sourceNamePath— 僅包含來源物件名稱的路徑。

    targetNamePath— 僅包含目標物件名稱的路徑。

下列程式碼範例會使用來源 testdb Hive 資料庫和目標 EMR 叢集的明確路徑來建立對應規則。

AddServerMapping -sourceTreePath: 'Clusters.HADOOP_SOURCE.HIVE_SOURCE.Databases.testdb' -targetTreePath: 'Clusters.HADOOP_TARGET.HIVE_TARGET' /

您可以在 Windows 中使用這個範例和下列範例。若要在 Linux 中執行 CLI 指令,請確定您已適當地更新作業系統的檔案路徑。

下列程式碼範例會使用僅包含物件名稱的路徑建立對應規則。

AddServerMapping -sourceNamePath: 'HADOOP_SOURCE.HIVE_SOURCE.testdb' -targetNamePath: 'HADOOP_TARGET.HIVE_TARGET' /

您可以選擇亞馬遜 EMR 或亞馬遜 S3 作為來源物件的目標。對於每個來源物件,您只能在單一AWS SCT專案中選擇一個目標。若要變更來源物件的移轉目標,請刪除現有的對應規則,然後建立新的對應規則。若要刪除對應規則,請使用DeleteServerMapping指令。此命令使用以下兩個參數之一。

  • sourceTreePath— 來源資料庫物件的明確路徑。

  • sourceNamePath— 僅包含來源物件名稱的路徑。

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

步驟 3:建立評估報告

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

在此步驟中,您可以使用CreateMigrationReport指令。此命令使用兩個參數。該treePath參數是必要的,並且forceMigrate參數是可選的。

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

  • forceMigrate— 當設置為true, AWS SCT 繼續遷移,即使您的項目包括 HDFS 文件夾和 Hive 表參考相同的對象. 預設值為 false

然後,您可以將評估報告的副本儲存為 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' /

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

第 4 步:將您的阿帕奇 Hadoop 集群遷移到亞馬遜 EMR AWS SCT

設定AWS SCT專案之後,請開始將內部部署的 Apache Hadoop 叢集移轉至. AWS 雲端

在此步驟中,您將使用MigrateMigrationStatus、和ResumeMigration指令。

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

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

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

  • forceLoad— 設為時true,AWS SCT會在移轉期間自動載入資料庫中繼資料樹狀結構。預設值為 false

  • forceMigrate— 當設置為true, AWS SCT 繼續遷移,即使您的項目包括 HDFS 文件夾和 Hive 表參考相同的對象. 預設值為 false

此命MigrationStatus令會傳回有關移轉進度的資訊。若要執行此指令,請輸入name參數的移轉專案名稱。您在CreateProject命令中指定了此名稱。

此命ResumeMigration令會繼續您使用指Migrate令啟動的中斷移轉。該ResumeMigration命令不使用參數。若要繼續移轉,您必須連線至來源和目標叢集。如需詳細資訊,請參閱管理您的移轉專案

下列程式碼範例會將資料從來源 HDFS 服務遷移到 Amazon EMR。

Migrate -treePath: 'Clusters.HADOOP_SOURCE.HDFS_SOURCE' -forceMigrate: 'true' /

執行您的 CLI 指令碼

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

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

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

管理您的大數據遷移專案

完成移轉後,您可以儲存和編輯AWS SCT專案以供將來使用。

若要儲存AWS SCT專案,請使用SaveProject指令。此命令不使用參數。

下列程式碼範例會儲存您的AWS SCT專案。

SaveProject /

若要開啟AWS SCT專案,請使用OpenProject指令。此命令使用一個強制參數。對於file參數,請輸入AWS SCT專案檔案的路徑及其名稱。您在指CreateProject令中指定了專案名稱。確保將.scts擴展名添加到項目文件的名稱中以運行該OpenProject命令。

下列程式碼範例會從c:\sct資料夾開啟hadoop_emr專案。

OpenProject -file: 'c:\sct\hadoop_emr.scts' /

開啟AWS SCT專案之後,您不需要新增來源和目標叢集,因為您已將它們新增至專案。若要開始使用來源和目標叢集,您必須連線至它們。若要這麼做,您可以使用ConnectSourceClusterConnectTargetCluster指令。這些指令使用與指AddTargetCluster令相同AddSourceCluster的參數。您可以編輯 CLI 指令碼,並取代這些命令的名稱,不需要變更即可離開參數清單。

下面的代碼示例連接到源 Hadoop 集群。

ConnectSourceCluster -name: 'HADOOP_SOURCE' -vendor: 'HADOOP' -host: 'hadoop_address' -port: '22' -user: 'hadoop_user' -password: 'hadoop_password' -useSSL: 'true' -privateKeyPath: 'c:\path\name.pem' -passPhrase: 'hadoop_passphrase' /

下列程式碼範例會連線至目標 Amazon EMR 叢集。

ConnectTargetCluster -name: 'HADOOP_TARGET' -vendor: 'AMAZON_EMR' -host: 'ec2-44-44-55-66.eu-west-1.EXAMPLE.amazonaws.com' -port: '22' -user: 'emr_user' -password: 'emr_password' -useSSL: 'true' -privateKeyPath: 'c:\path\name.pem' -passPhrase: '1234567890abcdef0!' -s3Name: 'S3_TARGET' -accessKey: 'AKIAIOSFODNN7EXAMPLE' -secretKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY' -region: 'eu-west-1' -s3Path: 'doc-example-bucket/example-folder' /

在上述範例中,請將 hadoop_address 取代為 Hadoop 叢集的 IP 位址。如果需要,請配置端口變量的值。接下來,用您的 Hadoop 用戶的名稱和此用戶的密碼替換 hadoop_ user 和密碼。針對路徑\ 名稱,請輸入來源 Hadoop 叢集之 PEM 檔案的名稱和路徑。如需新增來源和目標叢集的詳細資訊,請參閱使用阿帕奇 Hadoop 作為源 AWS SCT

連線到來源和目標 Hadoop 叢集之後,您必須連線到您的 Hive 和 HDFS 服務,以及您的 Amazon S3 儲存貯體。若要這麼做,您可以使用ConnectSourceClusterHiveConnectSourceClusterHdfsConnectTargetClusterHiveConnectTargetClusterHdfs、和ConnectTargetClusterS3指令。這些命令使用的參數與您用來將 Hive 和 HDFS 服務以及 Amazon S3 儲存貯體新增至專案的命令相同的參數。編輯 CLI 指令碼,以取代命令名稱Connect中的Add前置詞。