翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS PrivateLink for Amazon S3 DistCp で を使用してオンプレミスの Hadoop 環境から Amazon S3 にデータを移行する
作成者: Jason Owens (AWS)、Andres Cantor (AWS)、Jeff Klop™stein (AWS)、Bruno Rocha™ira (AWS)、Samuel Schmidt (AWS)
概要
このパターンは、 for Amazon Simple Storage Service (Amazon S3AWS) DistCpで Apache オープンソースツールを使用して、ほぼすべての量のデータをオンプレミスの Apache Hadoop 環境から AWS PrivateLink Amazon Web Services () クラウドに移行する方法を示しています。パブリックインターネットまたはプロキシソリューションを使用してデータを移行する代わりに、 forAWS PrivateLink Amazon S3 を使用して、オンプレミスデータセンターと Amazon Virtual Private Cloud (Amazon ) 間のプライベートネットワーク接続を介してデータを Amazon Amazon S3 に移行できますVPC。Amazon Route 53 でDNSエントリを使用するか、オンプレミス Hadoop クラスターのすべてのノードの /etc/hosts ファイルでエントリを追加すると、自動的に正しいインターフェイスエンドポイントに誘導されます。
このガイドでは、 DistCp を使用して AWS クラウドにデータを移行する手順について説明します。 DistCp は最も一般的に使用されるツールですが、他の移行ツールも利用できます。例えば、AWSSnowball や AWS Snowmobile などのオフラインAWSツール、または AWS Storage Gateway や などのオンラインAWSツールを使用できますAWS DataSync。さらに、Apache NiFi などの他のオープンソースツールを使用することもできます。
前提条件と制限
前提条件
オンプレミスデータセンターと AWS クラウド間のプライベートネットワーク接続を持つアクティブなAWSアカウント
Hadoop、 でオンプレミスにインストール DistCp
Hadoop Distributed File System 内の移行データにアクセスできる Hadoop ユーザー (HDFS)
AWS コマンドラインインターフェイス (AWSCLI)、インストールおよび設定済み
S3 バケットにオブジェクトを入れる権限
制限
Amazon S3 AWS PrivateLink の には、仮想プライベートクラウド (VPC) の制限が適用されます。 Amazon S3 詳細については、「インターフェイスエンドポイントのプロパティと制限とAWS PrivateLink クォータ (AWS PrivateLink ドキュメント)」を参照してください。
AWS PrivateLink for Amazon S3 では、以下はサポートされていません。
アーキテクチャ
ソーステクノロジースタック
ターゲットテクノロジースタック
ターゲット アーキテクチャ
この図は、Hadoop 管理者が DistCp を使用して AWS Direct Connect などのプライベートネットワーク接続を介してオンプレミス環境から Amazon S3 インターフェイスエンドポイントを介して Amazon S3 にデータをコピーする方法を示しています。
AWS サービス
その他のツール
エピック
タスク | 説明 | 必要なスキル |
---|
Amazon S3 AWS PrivateLink 用の エンドポイントを作成します。 Amazon S3 | AWS マネジメントコンソールにサインインし、Amazon VPCコンソールを開きます。 ナビゲーションペインで [ エンドポイント] を選択し、[Create endpoint (エンドポイントの作成)] を選択します。 [Service category] (サービスカテゴリ) で、[AWS services] (のサービス) を選択します。 検索ボックスに「s3」と入力し、Enter キーを押します。 検索結果で、com.amazonaws.<your-aws-region>.s3 サービス名を選択します。Type 列の値は Interface です。 でVPC、 を選択しますVPC。[Subnet] (サブネット) で、サブネットを選択します。 セキュリティグループで、443 TCP を許可するセキュリティグループを選択または作成します。 要件に基づいてタグを追加し、[エンドポイントの作成] を選択します。
| AWS 管理者 |
エンドポイントを確認し、DNSエントリを見つけます。 | Amazon VPCコンソールを開き、エンドポイントを選択し、前に作成したエンドポイントを選択します。 詳細タブで、DNS名前の最初のDNSエントリを見つけます。これはリージョンエントリですDNS。このDNS名前を使用すると、 リクエストはアベイラビリティーゾーンに固有のDNSエントリを切り替えます。 [サブネット] タブを選択します。エンドポイントの 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コンソールの選択したエンドポイントのサブネットタブに表示される 2 つの IP アドレスDNSが で交互に切り替わっていることがわかります。 | ネットワーク管理者、AWS管理者 |
名前解決の設定を変更します。 | Hadoop が Amazon S3 インターフェイスエンドポイントにアクセスできるように名前解決を設定する必要があります。エンドポイント名自体を使用することはできません。代わりに、<your-bucket-name>.s3.<your-aws-region>.amazonaws.com または *.s3.<your-aws-region>.amazonaws.com を解決する必要があります。この命名制限の詳細については、「Introducing the Hadoop S3A client」(Hadoop ウェブサイト) を参照してください。 次の設定オプションのいずれかを選択します。 オンプレミスを使用してDNS、エンドポイントのプライベート IP アドレスを解決します。すべてのバケットまたは選択したバケットの動作をオーバーライドできます。詳細については、「 を使用した Amazon S3 への安全なハイブリッドアクセス」の「Option 2: Access Amazon S3 using AWS PrivateLink Domain Name System Response Policy Zones (DNS RPZ)」を参照してください (AWS ブログ記事)。 のリゾルバーのインバウンドエンドポイントにトラフィックを条件付きで転送DNSするようにオンプレミスを設定しますVPC。トラフィックは Route 53 に転送されます。詳細については、「 を使用した Amazon S3 への安全なハイブリッドアクセスAWS PrivateLink」の「オプション 3: Amazon Route 53 Resolver インバウンドエンドポイントを使用したオンプレミスからのDNSリクエストの転送」を参照してください (AWS ブログ記事)。 Hadoop クラスター内のすべてのノードの /etc/hosts ファイルを編集します。これはテスト用の一時的な解決策であり、本番環境にはお勧めしません。/etc/hosts ファイルを編集するには、<your-bucket-name>.s3.<your-aws-region>.amazonaws.com または s3.<your-aws-region>.amazonaws.com のエントリを追加します。/etc/hosts ファイルには、1 つのエントリに複数の IP アドレスを指定することはできません。アベイラビリティゾーンのいずれかから 1 つの IP アドレスを選択する必要があります。選択すると、単一障害点になります。
| AWS 管理者 |
Amazon S3 の認証の設定。 | Hadoop を使用して Amazon S3 への認証を行うには、一時的なロール認証情報を Hadoop 環境にエクスポートすることをお勧めします。詳細については、「Authenticating with S3」(Hadoop ウェブサイト) を参照してください。長時間実行されるジョブの場合は、ユーザーを作成し、S3 バケットにのみデータを保存する権限を持つポリシーを割り当てることができます。アクセスキーとシークレットキーは Hadoop に保存でき、 DistCp ジョブ自体と Hadoop 管理者のみがアクセスできます。シークレットの保存について詳しくは、「Storing secrets with Hadoop Credential Providers」(Hadoop ウェブサイト) を参照してください。その他の認証方法の詳細については、 AWS IAM Identity Center ( AWS Single Sign-On の後継) のドキュメントのAWS「アカウントCLIへのアクセスで使用する IAMロールの認証情報を取得する方法」を参照してください。 一時的な認証情報を使用するには、一時的な認証情報を認証情報ファイルに追加するか、以下のコマンドを実行して認証情報を環境にエクスポートします。 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>
その他の S3A プロバイダーの詳細については、「General S3A Client configuration」(Hadoop ウェブサイト) を参照してください。例えば、暗号化を使用する場合、暗号化の種類に応じて、上記の一連のコマンドに次のオプションを追加できます。 -Dfs.s3a.server-side-encryption-algorithm=AES-256 [or SSE-C or SSE-KMS]
S3A でインターフェイスエンドポイントを使用するには、インターフェイスエンドポイントへの DNS S3 リージョン名 ( などs3.<your-aws-region>.amazonaws.com ) のエイリアスエントリを作成する必要があります。手順については、「Amazon S3 の認証の設定」セクションを参照してください。この回避策は Hadoop 3.3.2 以前のバージョンで必要です。S3A の今後のバージョンでは、この回避策は必要なくなります。 Amazon S3 の署名に問題がある場合は、Signature Version 4 (SigV4) 署名を使用するオプションを追加します。 -Dmapreduce.map.java.opts="-Dcom.amazonaws.services.s3.enableV4=true"
| 移行エンジニア、AWS管理者 |