將 Hadoop 工作負載遷移到 AmazonEMR, AWS Schema Conversion Tool - AWS Schema Conversion Tool

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

將 Hadoop 工作負載遷移到 AmazonEMR, AWS Schema Conversion Tool

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

移轉概觀

下圖顯示了從阿帕奇 Hadoop 遷移到 Amazon 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 儲存貯體遷移到目標 Amazon EMR HDFS 服務。或者,您可以將資料保留在 Amazon S3 儲存貯體中,並將其用作 Hadoop 工作負載的資料儲存庫。

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

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

步驟 1:Connect 到您的 Hadoop 叢集

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

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

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

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

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

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

  • AddTargetCluster-連接到項目中的目標 Amazon EMR 集群。

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

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

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

如需使用這些 AWS SCT CLI指令的範例,請參閱連接到阿帕奇

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

步驟 2:設定對應規則

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

在此步驟中,您可以使用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' /

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

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

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

若要取得有關AddServerMappingDeleteServerMapping指令的更多資訊,請參閱〈AWS Schema Conversion Tool CLI參考〉。

步驟 3:建立評估報告

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

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

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

  • forceMigrate— 設定為時true,即使您的專案包含參考相同物件的HDFS資料夾和 Hive 表格,仍會 AWS SCT 繼續移轉。預設值為 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' /

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

SaveReportCSV -file:'c:\sct' /

若要取得有關SaveReportPDFSaveReportCSV指令的更多資訊,請參閱〈AWS Schema Conversion Tool CLI參考〉。

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

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

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

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

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

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

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

  • forceMigrate— 設定為時true,即使您的專案包含參考相同物件的HDFS資料夾和 Hive 表格,仍會 AWS SCT 繼續移轉。預設值為 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"

在前面的例子中,替換 script_path 使用腳本的文件的路CLI徑。如需有關在中執行CLI指令集的詳細資訊 AWS SCT,請參閱指令碼模式

管理您的大數據遷移專案

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

若要儲存 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_user 以及 hadoop_password 使用您的 Hadoop 用戶的名稱和此用戶的密碼。用於 path\name」中,輸入來源 Hadoop 叢集之PEM檔案的名稱和路徑。如需新增來源和目標叢集的詳細資訊,請參閱使用連接到阿帕奇 Hadoop 數據庫 AWS Schema Conversion Tool

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