

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon S3 用 AWS PrivateLink と DistCP を使用して、オンプレミスの Hadoop 環境から Amazon S3 にデータを移行する
<a name="migrate-data-from-an-on-premises-hadoop-environment-to-amazon-s3-using-distcp-with-aws-privatelink-for-amazon-s3"></a>

*Amazon Web Services、Jason Owens、Andres Cantor、Jeff Klopphenstein、Bruno Rocha Oliveira、Samuel Schmidt*

## 概要
<a name="migrate-data-from-an-on-premises-hadoop-environment-to-amazon-s3-using-distcp-with-aws-privatelink-for-amazon-s3-summary"></a>

このパターンは、Apache オープンソースツール [DistCp](https://hadoop.apache.org/docs/r1.2.1/distcp.html) と AWS PrivateLink for Amazon Simple Storage Service (Amazon S3) を使用して、オンプレミスの Apache Hadoop 環境からAmazon Web Services (AWS) クラウドにほぼすべての量のデータを移行する方法を示しています。パブリックインターネットまたはプロキシソリューションを使用してデータを移行する代わりに、[Amazon S3 用 AWS PrivateLink](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html) を使用して、オンプレミスデータセンターと Amazon Virtual Private Cloud (Amazon VPC) 間のプライベートネットワーク接続を介して Amazon S3 にデータを移行できます。Amazon Route 53 で DNS エントリを使用するか、オンプレミス Hadoop クラスターのすべてのノードで **/etc/hosts** ファイルにエントリを追加すると、自動的に正しいインターフェイスエンドポイントに誘導されます。

このガイドでは、DistCP を使用して AWS クラウドにデータを移行する方法について説明します。DistCp は最も一般的に使用されるツールですが、他の移行ツールも使用できます。例えば、[AWS Snowball](https://docs.aws.amazon.com/whitepapers/latest/how-aws-pricing-works/aws-snow-family.html#aws-snowball) や [AWS Snowmobile](https://docs.aws.amazon.com/whitepapers/latest/how-aws-pricing-works/aws-snow-family.html#aws-snowmobile) などのオフライン AWS ツール、または [AWS Storage Gateway](https://docs.aws.amazon.com/storagegateway/latest/userguide/migrate-data.html) や [AWS DataSync](https://aws.amazon.com/about-aws/whats-new/2021/11/aws-datasync-hadoop-aws-storage-services/) などのオンライン AWS ツールを使用できます。さらに、[Apache NiFi](https://nifi.apache.org/) のような他のオープンソースツールを使用することもできます。

## 前提条件と制限事項
<a name="migrate-data-from-an-on-premises-hadoop-environment-to-amazon-s3-using-distcp-with-aws-privatelink-for-amazon-s3-prereqs"></a>

**前提条件**
+ オンプレミスデータセンターと AWS クラウドの間に Private Network 接続を持つアクティブな AWS アカウント
+ [Hadoop](https://hadoop.apache.org/releases.html)、[DistCp](https://hadoop.apache.org/docs/r1.2.1/distcp.html) を使用してオンプレミスにインストール
+ Hadoop 分散ファイルシステム (HDFS) の移行データにアクセスできる Hadoop ユーザー
+ [インストール](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)および[設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)済みの AWS コマンドラインインターフェイス (AWS CLI)
+ S3 バケットにオブジェクトを入れる[権限](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_s3_rw-bucket-console.html)

**制限事項**

仮想プライベートクラウド (VPC) の制限事項は、AWS PrivateLink for Amazon S3 に適用されます。詳細については、AWS PrivateLink ガイドの「[インターフェイスエンドポイントのプロパティと制限事項](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#vpce-interface-limitations)」および「[AWS PrivateLink クォータ](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-limits-endpoints.html)」を参照してください。

AWS PrivateLink for Amazon S3 では、以下をサポートしていません。
+ [連邦情報処理規格 (FIPS) エンドポイント](https://aws.amazon.com/compliance/fips/)
+ [ウェブサイトエンドポイント](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteEndpoints.html)
+ [レガシーグローバルエンドポイント](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html#deprecated-global-endpoint)

## アーキテクチャ
<a name="migrate-data-from-an-on-premises-hadoop-environment-to-amazon-s3-using-distcp-with-aws-privatelink-for-amazon-s3-architecture"></a>

**ソーステクノロジースタック**
+ DistCP がインストールされた Hadoop クラスター

**ターゲットテクノロジースタック**
+ Amazon S3
+ Amazon VPC

**ターゲットアーキテクチャ**

![\[DistCp を使用する Hadoop クラスターは、Direct Connect を介してオンプレミス環境から S3 にデータをコピーします。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/8d2b47ae-e854-4e5d-8f19-b9c2606f2c59/images/b8a249bd-307b-41ec-b939-5039d0ae7123.png)


この図は、Hadoop 管理者が DistCP を使用して、AWS Direct Connect などのプライベートネットワーク接続を介してオンプレミス環境から Amazon S3 インターフェイスエンドポイントを介して Amazon S3 にデータをコピーする方法を示しています。

## ツール
<a name="migrate-data-from-an-on-premises-hadoop-environment-to-amazon-s3-using-distcp-with-aws-privatelink-for-amazon-s3-tools"></a>

**AWS サービス**
+ 「[AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)」は、AWS リソースへのアクセスを安全に管理し、誰が認証され、使用する権限があるかを制御するのに役立ちます。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) を使用すると、定義した仮想ネットワーク内で AWS リソースを起動できます。この仮想ネットワークは、お客様自身のデータセンターで運用されていた従来のネットワークに似ていますが、AWS のスケーラブルなインフラストラクチャを使用できるというメリットがあります。

**その他のツール**
+ [Apache Hadoop DistCp](https://hadoop.apache.org/docs/current/hadoop-distcp/DistCp.html) (分散コピー) は、大規模なクラスター間およびクラスター内をコピーするために使用されるツールです。DistCp は、配信、エラー処理とリカバリ、およびレポート作成にApache MapReduce を使用しています。

## エピック
<a name="migrate-data-from-an-on-premises-hadoop-environment-to-amazon-s3-using-distcp-with-aws-privatelink-for-amazon-s3-epics"></a>

### データを AWS クラウドに移行
<a name="migrate-data-to-the-aws-cloud"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS PrivateLink for Amazon S3 のエンドポイントの作成 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-data-from-an-on-premises-hadoop-environment-to-amazon-s3-using-distcp-with-aws-privatelink-for-amazon-s3.html) | AWS 管理者 | 
| エンドポイントを確認し、DNS エントリを見つけます。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-data-from-an-on-premises-hadoop-environment-to-amazon-s3-using-distcp-with-aws-privatelink-for-amazon-s3.html) | AWS 管理者 | 
| ファイアウォールルールとルーティング設定を確認してください。 | ファイアウォールルールが開かれていて、ネットワーク設定が正しく設定されていることを確認するには、Telnet を使用してポート 443 のエンドポイントをテストします。例えば、次のようになります。<pre>$ telnet vpce-<your-VPC-endpoint-ID>.s3.us-east-2.vpce.amazonaws.com 443<br /><br />Trying 10.104.88.6...<br /><br />Connected to vpce-<your-VPC-endpoint-ID>.s3.us-east-2.vpce.amazonaws.com.<br /><br />...<br /><br />$ telnet vpce-<your-VPC-endpoint-ID>.s3.us-east-2.vpce.amazonaws.com 443<br /><br />Trying 10.104.71.141...<br /><br />Connected to vpce-<your-VPC-endpoint-ID>.s3.us-east-2.vpce.amazonaws.com.</pre>Regional エントリを使用する場合、テストが成功すると、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](https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html#Introducing_the_Hadoop_S3A_client.)」(Hadoop ウェブサイト) を参照してください。次の設定オプションのいずれかを選択します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-data-from-an-on-premises-hadoop-environment-to-amazon-s3-using-distcp-with-aws-privatelink-for-amazon-s3.html) | AWS 管理者 | 
| Amazon S3 の認証の設定。 | Hadoop を使用して Amazon S3 への認証を行うには、一時的なロール認証情報を Hadoop 環境にエクスポートすることをお勧めします。詳細については、「[Authenticating with S3](https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html#Authenticating_with_S3)」(Hadoop ウェブサイト) を参照してください。長時間実行されるジョブの場合は、ユーザーを作成し、S3 バケットにのみデータを保存する権限を持つポリシーを割り当てることができます。アクセスキーとシークレットキーは Hadoop に保存でき、DistCP ジョブ自体と Hadoop 管理者のみがアクセスできます。シークレットの保存について詳しくは、「[Storing secrets with Hadoop Credential Providers](https://hadoop.apache.org/docs/r3.1.1/hadoop-aws/tools/hadoop-aws/index.html#hadoop_credential_providers)」(Hadoop ウェブサイト) を参照してください。その他の認証方法の詳細については、AWS IAM アイデンティティセンター (AWS Single SAWS Single Sign-On の後継) の「[How to get credentials of an IAM role for use with CLI access to an AWS account](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtogetcredentials.html)」を参照してください。一時的な認証情報を使用するには、一時的な認証情報を認証情報ファイルに追加するか、以下のコマンドを実行して認証情報を環境にエクスポートします。<pre>export AWS_SESSION_TOKEN=SECRET-SESSION-TOKEN<br />export AWS_ACCESS_KEY_ID=SESSION-ACCESS-KEY<br />export AWS_SECRET_ACCESS_KEY=SESSION-SECRET-KEY</pre>従来のアクセスキーとシークレットキーの組み合わせを使用している場合は、以下のコマンドを実行します。<pre>export AWS_ACCESS_KEY_ID=my.aws.key<br />export AWS_SECRET_ACCESS_KEY=my.secret.key</pre>アクセスキーとシークレットキーを組み合わせて使用する場合は、DistCp コマンドの認証情報プロバイダーを `"org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider"` から `"org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider"` に変更してください。 | AWS 管理者 | 
| DistCp を使用してデータを転送します。 | DistCp を使用してデータを転送するには、次のコマンドを実行します。<pre>hadoop distcp -Dfs.s3a.aws.credentials.provider=\<br />"org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider" \<br />-Dfs.s3a.access.key="${AWS_ACCESS_KEY_ID}" \<br />-Dfs.s3a.secret.key="${AWS_SECRET_ACCESS_KEY}" \<br />-Dfs.s3a.session.token="${AWS_SESSION_TOKEN}" \<br />-Dfs.s3a.path.style.access=true \<br />-Dfs.s3a.connection.ssl.enabled=true \<br />-Dfs.s3a.endpoint=s3.<your-aws-region>.amazonaws.com \<br />hdfs:///user/root/ s3a://<your-bucket-name></pre>Amazon S3 用 AWS PrivateLink で DistCp コマンドを使用しても、エンドポイントの AWS リージョンは自動的に検出されません。Hadoop 3.3.2 以降のバージョンでは、S3 バケットの AWS リージョンを明示的に設定するオプションを有効にすることでこの問題を解決しています。詳細については、「[S3A to add option fs.s3a.endpoint.region to set AWS region](https://issues.apache.org/jira/browse/HADOOP-17705)」(Hadoop Web サイト) を参照してください。その他の S3A プロバイダーの詳細については、「[General S3A Client configuration](https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html#General_S3A_Client_configuration)」(Hadoop ウェブサイト) を参照してください。例えば、暗号化を使用する場合、暗号化の種類に応じて、上記の一連のコマンドに次のオプションを追加できます。<pre>-Dfs.s3a.server-side-encryption-algorithm=AES-256 [or SSE-C or SSE-KMS]</pre>S3A でインターフェイスエンドポイントを使用するには、インターフェイスエンドポイントに S3 地域名 (例: `s3.<your-aws-region>.amazonaws.com`) の DNS エイリアスエントリを作成する必要があります。手順については、「*Amazon S3 の認証の設定*」セクションを参照してください。この回避策は Hadoop 3.3.2 以前のバージョンで必要です。S3A の今後のバージョンでは、この回避策は必要なくなります。Amazon S3 の署名に問題がある場合は、Signature Version 4 (SigV4) 署名を使用するオプションを追加します。<pre>-Dmapreduce.map.java.opts="-Dcom.amazonaws.services.s3.enableV4=true"</pre> | 移行エンジニア、AWS 管理者 | 