使 DistCp 用 Amazon S3 將資料從現場部署 Hadoop 環境遷移到 Amazon S3 AWS PrivateLink - AWS 方案指引

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

使 DistCp 用 Amazon S3 將資料從現場部署 Hadoop 環境遷移到 Amazon S3 AWS PrivateLink

創建者傑森·歐文斯 (AWS), 安德烈斯·坎托爾 (AWS), 傑夫·克洛普芬斯坦 (), 布魯諾·羅查奧利維拉 (AWS), 和塞繆爾·施密特 () AWS AWS

環境:生產

來源:哈多

目標:任何

R 類型:重新平台

工作負載:開源

技術:儲存與備份、分析

AWS服務:Amazon S3; Amazon EMR

此模式示範如何使用 Apache 開放原始碼工具DistCp搭配AWS PrivateLink 亞馬遜簡單儲存服務 (Amazon S3AWS),將幾乎任何數量的資料從現場部署 Apache Hadoop 環境遷移到亞馬遜網路服務 () 雲端。您可以使用 AWS PrivateLink Amazon S3 透過現場部署資料中心和 Amazon Amazon Virtual Private Cloud (Amazon) 之間的私有網路連線將資料遷移到 Amazon S3,而不是使用公用網際網路或代理解決方案遷移資VPC料。如果您使用 Amazon Route 53 中的DNS項目,或在現場部署 Hadoop 叢集的所有節點中新增 /etc/hosts 檔案中的項目,系統會自動將您導向至正確的介面端點。

本指南提供如何使用將 DistCp 資料移轉至AWS雲端的指示。 DistCp 是最常用的工具,但有其他移轉工具可供使用。例如,您可以使用 AWSSnowball 或雪地摩托等離線AWS工具,或者使AWS用 S AWS torage Gateway 或. AWS AWS DataSync 此外,您可以使用其他開源工具,例如 Apache NiFi

先決條件

  • 在內部部署資料中心與AWS雲端之間具有私人網路連線的作用中AWS帳戶

  • Hadoop 的,安裝在具有內部 DistCp

  • 具有 Hadoop 分佈式文件系統中訪問遷移數據的 Hadoop 用戶()HDFS

  • AWS指令行介面 (AWSCLI),已安裝設定

  • 將物件放入 S3 儲存貯體的權限

限制

虛擬私有雲端 (VPC) 限制AWS PrivateLink 適用於 Amazon S3。如需詳細資訊,請參閱介面端點內容和限制AWS PrivateLink 配額 (AWS PrivateLink 文件)。

AWS PrivateLink 對於 Amazon S3 不支持以下內容:

源, 技術, 堆棧

  • 已安裝 DistCp 的 Hadoop 集群

目標技術堆疊

  • Amazon S3

  • Amazon VPC

目標架構

Hadoop 叢集,透過直接 Connect 到 S3,從現場部署環境 DistCp 複製資料。

該圖顯示 Hadoop 管理員如 DistCp 何使用透過 Amazon S3 界面端點將私有網路連線 (例如AWS直接 Connect) 從現場部署環境複製資料到 Amazon S3。

AWS服務

其他工具

  • 阿帕奇 Hadoop DistCp(分佈式副本)是用於複製大型集群間和內部集群的工具。 DistCp 使用 Apache MapReduce 進行分發,錯誤處理和恢復以及報告。

任務描述所需技能

為 AWS PrivateLink Amazon S3 建立端點。

  1. 登入AWS管理主控台並開啟 Amazon 主VPC控台

  2. 在瀏覽窗格上,選擇 [端點],然後選擇 [建立端點]。

  3. Service category (服務類別) 中,選擇​ AWS services

  4. 在搜尋方塊中,輸入 s3,然後按 Enter 鍵。

  5. 在搜索結果中,選擇喜歡的。 < your-aws-region >.s3 服務名稱,其中「類型」欄中的值為「介面」。

  6. 對於 VPC,選擇您的VPC. 對於子網路,請選擇您的子網路。

  7. 在安全性群組中,選擇或建立允許 TCP 443 的安全性群組。

  8. 根據您的需求新增標籤,然後選擇 [建立端點]。

AWS管理員

驗證端點並找到DNS項目。

  1. 開啟 Amazon VPC 主控台,選擇端點,然後選取您先前建立的端點。

  2. 在 [詳細資料] 索引標籤上,尋找DNS名稱的第一個DNS項目。這是「區域」DNS 項目。使用此DNS名稱時,請求在可用區域特定的DNS項目之間進行替代。

  3. 選擇「子網路」頁籤。您可以在每個可用區域中找到端點 elastic network interface 的位址。

AWS管理員

檢查防火牆規則和路由配置。

若要確認您的防火牆規則已開啟且網路組態已正確設定,請使用 Telnet 在連接埠 443 上測試端點。例如:

$ telnet vpce-<your-VPC-endpoint-ID>.s3.us-east-2.vpce.amazonaws.com 443 Trying 10.104.88.6... Connected to vpce-<your-VPC-endpoint-ID>.s3.us-east-2.vpce.amazonaws.com. ... $ telnet vpce-<your-VPC-endpoint-ID>.s3.us-east-2.vpce.amazonaws.com 443 Trying 10.104.71.141... Connected to vpce-<your-VPC-endpoint-ID>.s3.us-east-2.vpce.amazonaws.com.

注意:如果您使用區域項目,則成功測試表明,您可以在 Amazon VPC 主控台中選取端點的「子網路」索引標籤上看到的兩個 IP 位址之間交替顯示。DNS

網路管理員、AWS管理員

設定名稱解析。

您必須設定名稱解析,以允許 Hadoop 存取 Amazon S3 介面端點。您無法使用端點名稱本身。相反地,您必須解決<your-bucket-name>.s3.<your-aws-region>.amazonaws.com*.s3.<your-aws-region>.amazonaws.com。如需此命名限制的詳細資訊,請參閱介紹 Hadoop S3A 用戶端 (Hadoop 網站)。

選擇下列其中一個組態選項:

  • 使用內部部署DNS解析端點的私有 IP 位址。您可以覆寫所有值區或選取值區的行為。如需詳細資訊,請參閱使用 (AWS部落格文章 DNSRPZ) 安全混合存取 Amazon S3 中的「選項 2:使用網域名稱系統回應政策區域存取 Amazon S3 AWS PrivateLink ()」。

  • DNS將內部部署設定為有條件地將流量轉送至中的解析器輸入端點。VPC交通被轉發到 Route 53。如需詳細資訊,DNS請參閱使用安全混合式存取 Amazon S3 中的「選項 3:使用 Amazon Route 53 Resolver 輸入端點從內部部署轉送請求」AWS PrivateLink (部AWS落格文章)。

  • 在 Hadoop 叢集中的所有節點上編輯 /etc/hosts 檔案。這是測試的臨時解決方案,不建議用於生產環境。若要編輯 /etc/hosts 檔案,請為或新增一個項目。<your-bucket-name>.s3.<your-aws-region>.amazonaws.com s3.<your-aws-region>.amazonaws.com/etc/hosts 檔案不能有多個 IP 位址供一個項目使用。您必須從其中一個可用區域中選擇單一 IP 位址,然後該區域會變成單一故障點。

AWS管理員

設定 Amazon S3 的身份驗證。

若要透過 Hadoop 向 Amazon S3 進行驗證,我們建議您將臨時角色登入資料匯出至 Hadoop 環境。如需詳細資訊,請參閱使用 S3 進行驗證 (Hadoop 網站)。對於長時間執行的任務,您可以建立使用者並指派具有僅將資料放入 S3 儲存貯體的權限的政策。訪問密鑰和密鑰可以存儲在 Hadoop 上,只能訪問 DistCp 作業本身和 Hadoop 管理員。有關存儲秘密的詳細信息,請參閱使用 Hadoop 憑據提供程序存儲秘密(Hadoop 網站)。如需有關其他驗證方法的詳細資訊,請參閱 AWS IAM Identity Center 文件中的如何CLI取得IAM角色認證以供存取AWS帳戶使用 (AWS單一登入的後續任務)。

若要使用臨時身分證明,請將臨時認證新增至您的認證檔案,或執行下列命令,將認證匯出至您的環境:

export AWS_SESSION_TOKEN=SECRET-SESSION-TOKEN export AWS_ACCESS_KEY_ID=SESSION-ACCESS-KEY export AWS_SECRET_ACCESS_KEY=SESSION-SECRET-KEY

如果您有傳統的存取金鑰和私密金鑰組合,請執行下列命令:

export AWS_ACCESS_KEY_ID=my.aws.key export AWS_SECRET_ACCESS_KEY=my.secret.key

注意:如果您使用存取金鑰和私密金鑰組合,請將 DistCp 命令中的認證提供者從變更"org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider""org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider"

AWS管理員

使用傳輸資料 DistCp。

若要用 DistCp 於傳輸資料,請執行下列命令:

hadoop distcp -Dfs.s3a.aws.credentials.provider=\ "org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider" \ -Dfs.s3a.access.key="${AWS_ACCESS_KEY_ID}" \ -Dfs.s3a.secret.key="${AWS_SECRET_ACCESS_KEY}" \ -Dfs.s3a.session.token="${AWS_SESSION_TOKEN}" \ -Dfs.s3a.path.style.access=true \ -Dfs.s3a.connection.ssl.enabled=true \ -Dfs.s3a.endpoint=s3.<your-aws-region>.amazonaws.com \ hdfs:///user/root/ s3a://<your-bucket-name>

備註:將 DistCp 命令與 AWS PrivateLink Amazon S3 搭配使用時,不會自動探索端點的AWS區域。Hadoop 3.3.2 及更新版本可啟用明確設定 S3 儲存貯體AWS區域的選項來解決此問題。有關更多信息,請參閱 S3A 添加選項 fs.s3a.end 點。地區設置區域(H adoop 網站)。AWS

如需其他 S3A 提供者的詳細資訊,請參閱一般 S3A 用戶端組態 (Hadoop 網站)。例如,如果您使用加密,則可以根據您的加密類型,將下列選項新增至上述一系列命令中:

-Dfs.s3a.server-side-encryption-algorithm=AES-256 [or SSE-C or SSE-KMS]

備註:若要將介面端點與 S3A 搭配使用,您必須建立 S3 區域名稱的DNS別名項目 (例如,s3.<your-aws-region>.amazonaws.com) 到介面端點。如需指示,請參閱設定 Amazon S3 的身分驗證一節。Hadoop 3.3.2 和更早版本需要此因應措施。未來版本的 S3A 不需要此因應措施。

如果您在使用 Amazon S3 時遇到簽名問題,請新增使用簽名版本 4 (SIGv4) 簽署的選項:

-Dmapreduce.map.java.opts="-Dcom.amazonaws.services.s3.enableV4=true"
遷移工程師,AWS管理員