翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
を使用した Apache Hadoop データベースへの接続 AWS Schema Conversion Tool
AWS SCT コマンドラインインターフェイス (CLI) を使用して、Apache Hadoop から Amazon に移行できますEMR。 は、移行中のデータの一時ストレージとして Amazon S3 バケット AWS SCT を使用します。
AWS SCT は、ソース Apache Hadoop バージョン 2.2.0 以降として をサポートします。また、Apache Hive バージョン 0.13.0 以降 AWS SCT もサポートしています。
AWS SCT は、ターゲット Amazon EMRバージョン 6.3.0 以降として をサポートします。また、 は、ターゲット Apache Hadoop バージョン 2.6.0 以降、および Apache Hive バージョン 0.13.0 以降として AWS SCT サポートしています。
トピック
Apache Hadoop をソースとして使用する場合の前提条件
を使用して AWS SCT Apache Hadoop に接続するには、次の前提条件が必要ですCLI。
-
移行中にデータを保存する Amazon S3 バケットを作成します。その後、データを Amazon にコピーEMRHDFSするか、Amazon S3 を Hadoop ワークロードのデータリポジトリとして使用できます。詳細については、「Amazon S3 ユーザーガイド」の「バケットの作成」を参照してください。
-
AmazonS3FullAccess
ポリシーを使用して AWS Identity and Access Management (IAM) ロールを作成します。 AWS SCT はこのIAMロールを使用して Amazon S3 バケットにアクセスします。 -
AWS シークレットキーとシー AWS クレットアクセスキーを書き留めます。 AWS アクセスキーの詳細については、「 ユーザーガイド」の「アクセスキーの管理IAM」を参照してください。
-
ターゲット Amazon EMRクラスターを作成して設定します。詳細については、「Amazon 管理ガイド」のEMR「Amazon EMRの開始方法」を参照してください。
-
distcp
ユーティリティをソース Apache Hadoop クラスターにインストールします。また、ターゲット Amazon EMRクラスターにs3-dist-cp
ユーティリティをインストールします。データベースユーザーがこれらのユーティリティを実行する権限を持っていることを確認してください。 -
ソース Hadoop クラスター内の
core-site.xml
ファイルを s3a プロトコルを使用するように設定します。これを行うには、fs.s3a.aws.credentials.provider
パラメータを次のいずれかの値に設定します。org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider
org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider
org.apache.hadoop.fs.s3a.AnonymousAWSCredentialsProvider
org.apache.hadoop.fs.s3a.auth.AssumedRoleCredentialProvider
次のコード例を
core-site.xml
ファイルに追加できます。<property> <name>fs.s3a.aws.credentials.provider</name> <value>org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider</value> </property>
前の例は、前述のオプションリストにある 4 つのオプションのうち 1 つを示しています。
core-site.xml
ファイルでfs.s3a.aws.credentials.provider
パラメータを設定しない場合、 はプロバイダーを自動的に AWS SCT 選択します。
ソースとして Hive を使用する権限
Hive ソースユーザーに必要な権限は次のとおりです。
ソースデータフォルダとソース Amazon S3 バケットへの
READ
アクセス中間およびターゲットの Amazon S3 バケットへの
READ+WRITE
アクセス
移行速度を上げるには、 ACIDトランザクションソースタブの圧縮を実行することをお勧めします。
Amazon EMR Hive ターゲットユーザーに必要となるアクセス許可は次のとおりです。
Amazon S3 バケットへの
READ
アクセス中間 Amazon S3 バケットへの
READ+WRITE
アクセスREAD+WRITE
ターゲットHDFSフォルダへのアクセス
をソースHDFSとして使用するためのアクセス許可
ソースHDFSとして に必要なアクセス許可は次のとおりです。
EXECUTE
の NameNode移行プロジェクトに含める
EXECUTE+READ
のすべてのソースフォルダとファイル用READ+WRITE
Amazon S3 への移行前に Spark ジョブを実行し、ファイルを保存する のtmp
ディレクトリ NameNode の
ではHDFS、すべてのオペレーションにトラバーサルアクセスが必要です。トラバーサルアクセスには、最後のパスコンポーネントを除いて、パスの既存のすべてのコンポーネントに対する EXECUTE
アクセス権限が必要です。たとえば、/foo/bar/baz
にアクセスする操作を行う場合、ユーザーには、EXECUTE
、/
、/foo
、/foo/bar
に対するアクセス権限が必要です。
次のコード例は、ソースフォルダとファイルへの EXECUTE+READ
アクセス権限、および tmp
ディレクトリへの READ+WRITE
アクセス権限を付与する方法を示しています。
hadoop fs –chmod –R 744 /user/hdfs-data hadoop fs –chmod –R 766 /tmp
をターゲットHDFSとして使用するためのアクセス許可
ターゲットEMRHDFSとしての Amazon に必要なアクセス許可は次のとおりです。
EXECUTE
ターゲット Amazon EMRクラスター NameNode の のREAD+WRITE
移行後にデータを保存するターゲットHDFSフォルダの
ソースとしての Apache Hadoop への接続
AWS SCT バージョン 1.0.670 以降では、Apache Hadoop をソースとして使用できます。Hadoop クラスターを Amazon に移行できるのは、 AWS SCT コマンドラインインターフェイス () EMR のみですCLI。開始する前に、 AWS SCTのコマンドラインインターフェイスに慣れておきかしょう。詳細については、「CLI のリファレンス AWS Schema Conversion Tool」を参照してください。
で Apache Hadoop に接続するには AWS SCT CLI
-
新しい AWS SCT CLIスクリプトを作成するか、既存のシナリオテンプレートを編集します。例えば、
HadoopMigrationTemplate.scts
テンプレートをダウンロードして編集できます。詳細については、「CLI シナリオの取得」を参照してください。 -
ドライバーの場所やログフォルダなどの AWS SCT アプリケーション設定を行います。
必要なJDBCドライバーをダウンロードし、ファイルを保存する場所を指定します。詳細については、「のJDBCドライバーのインストール AWS Schema Conversion Tool」を参照してください。
次のコード例では、Apache Hive ドライバーにパスを追加する方法を示します。このコード例を実行すると、 はログファイルを
c:\sct
フォルダに AWS SCT 保存します。SetGlobalSettings -save: 'true' -settings: '{ "hive_driver_file": "c:\\sct\\HiveJDBC42.jar", "log_folder": "c:\\sct", "console_log_folder": "c:\\sct" }' /
Windows では、この例と以下の例を使用できます。
-
新しい AWS SCT プロジェクトを作成します。
次のコード例では、
c:\sct
フォルダにhadoop_emr
プロジェクトを作成します。CreateProject -name: 'hadoop_emr' -directory: 'c:\sct' /
-
ソース Hadoop クラスターをプロジェクトに追加します。
AddSourceCluster
コマンドを使用して、ソース Hadoop クラスターに接続します。name
、host
、port
、user
の必須パラメータには必ず値を指定してください。その他のパラメータは省略可能です。次のコード例では、ソース Hadoop クラスターを追加します。この例では、
HADOOP_SOURCE
をソースクラスターの名前として設定しています。このオブジェクト名を使用して Hive と HDFS サービスをプロジェクトに追加し、マッピングルールを作成します。AddSourceCluster -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
' /前の例では、
hadoop_address
Hadoop クラスターの IP アドレスを指定します。必要に応じて port オプションの値を設定します。次に、hadoop_user
また、hadoop_password
Hadoop ユーザーの名前とこのユーザーのパスワードを入力します。[path\name
で、ソース Hadoop クラスターの PEM ファイルの名前とパスを入力します。 -
CLI スクリプトを保存します。次に、Hive および HDFSサービスの接続情報を追加します。
ソース Hive とHDFSサービスへの接続
を使用して、ソース Hive および HDFSサービスに接続できます AWS SCT CLI。Apache Hive に接続するには、Hive JDBCドライバーバージョン 2.3.4 以降を使用します。詳細については、「のJDBCドライバーのインストール AWS Schema Conversion Tool」を参照してください。
AWS SCT は、hadoop
クラスターユーザーを使用して Apache Hive に接続します。これを行うには、AddSourceClusterHive
および AddSourceClusterHDFS
コマンドを使用します。これを行うには、次のいずれかのアプローチを使用できます。
-
新しいSSHトンネルを作成します。
createTunnel
に「true
」と入力します。にはhost
、ソース Hive またはHDFSサービスの内部 IP アドレスを入力します。にはport
、Hive または サービスのHDFSサービスポートを入力します。次に、Hive または
user
と のHDFS認証情報を入力しますpassword
。SSH トンネルの詳細については、「Amazon 管理ガイド」の「ローカルポート転送を使用してプライマリノードへのSSHトンネルを設定する」を参照してください。 EMR -
既存のSSHトンネルを使用します。
host
に「localhost
」と入力します。にはport
、SSHトンネルパラメータからローカルポートを入力します。 -
Hive と HDFSサービスに直接接続します。
には
host
、ソース Hive またはHDFSサービスの IP アドレスまたはホスト名を入力します。にはport
、Hive または サービスのHDFSサービスポートを入力します。次に、Hive またはuser
と のHDFS認証情報を入力しますpassword
。
HDFS で Hive と に接続するには AWS SCT CLI
-
ソース Hadoop クラスターの接続情報を含むCLIスクリプトを開きます。前のステップで定義した Hadoop クラスターの名前を使用してください。
-
ソース Hive サービスをプロジェクトに追加します。
AddSourceClusterHive
コマンドを使用してソース Hive サービスを接続します。user
、password
、cluster
、name
、port
の必須パラメータには必ず値を指定してください。その他のパラメータは省略可能です。次のコード例では、 が Hive サービスと連携 AWS SCT するためのトンネルを作成します。このソース Hive サービスは AWS SCTと同じ PC 上で動作します。この例では、前の例の
HADOOP_SOURCE
ソースクラスターを使用しています。AddSourceClusterHive -cluster: 'HADOOP_SOURCE' -name: 'HIVE_SOURCE' -host: 'localhost' -port: '10005' -user: '
hive_user
' -password: 'hive_password
' -createTunnel: 'true' -localPort: '10005' -remoteHost: 'hive_remote_address
' -remotePort: 'hive_port
' /次のコード例は、トンネルなしで Hive サービスに接続します。
AddSourceClusterHive -cluster: 'HADOOP_SOURCE' -name: 'HIVE_SOURCE' -host: '
hive_address
' -port: 'hive_port
' -user: 'hive_user
' -password: 'hive_password
' /上記の例では、
hive_user
また、hive_password
Hive ユーザーの名前とこのユーザーのパスワードを入力します。次に、
hive_address
また、hive_port
ソース Hadoop クラスターの NameNode IP アドレスとポートを指定します。[
hive_remote_address
では、ソース Hive サービスのデフォルト値127.0.0.1
または NameNode IP アドレスを使用できます。 -
ソースHDFSサービスをプロジェクトに追加します。
AddSourceClusterHDFS
コマンドを使用してソースHDFSサービスを接続します。user
、password
、cluster
、name
、port
の必須パラメータには必ず値を指定してください。その他のパラメータは省略可能です。ソースHDFSサービスからデータを移行するために必要なアクセス許可がユーザーに付与されていることを確認します。詳細については、「ソースとして Hive を使用する権限」を参照してください。
次のコード例では、 が Apache HDFSサービスと連携 AWS SCT するためのトンネルを作成します。この例では、前に作成した
HADOOP_SOURCE
ソースクラスターを使用しています。AddSourceClusterHDFS -cluster: 'HADOOP_SOURCE' -name: 'HDFS_SOURCE' -host: 'localhost' -port: '9005' -user: '
hdfs_user
' -password: 'hdfs_password
' -createTunnel: 'true' -localPort: '9005' -remoteHost: 'hdfs_remote_address
' -remotePort: 'hdfs_port
' /次のコードは、トンネルなしで Apache HDFSサービスに接続します。
AddSourceClusterHDFS -cluster: 'HADOOP_SOURCE' -name: 'HDFS_SOURCE' -host: '
hdfs_address
' -port: 'hdfs_port
' -user: 'hdfs_user
' -password: 'hdfs_password
' /上記の例では、
hdfs_user
また、hdfs_password
ユーザーの名前HDFSとこのユーザーのパスワードを入力します。次に、
hdfs_address
また、hdfs_port
ソース Hadoop クラスターの NameNode IP アドレスとポートを指定します。[
hdfs_remote_address
では、ソース Hive サービスのデフォルト値127.0.0.1
または NameNode IP アドレスを使用できます。 -
CLI スクリプトを保存します。次に、ターゲット Amazon EMRクラスターの接続情報と移行コマンドを追加します。
ターゲットEMRとしての Amazon への接続
を使用してターゲット Amazon EMRクラスターに接続できます AWS SCT CLI。そのためには、インバウンドトラフィックを許可し、 を使用しますSSH。この場合、 AWS SCT には Amazon EMRクラスターを操作するために必要なアクセス許可がすべてあります。詳細については、「Amazon EMR管理ガイド」の「 を使用してプライマリノードSSHに接続する前に」を参照してください。
AWS SCT はクラスターhadoop
ユーザーを使用して Amazon EMR Hive に接続します。Amazon EMR Hive に接続するには、Hive JDBCドライバーバージョン 2.6.2.1002 以降を使用します。詳細については、「のJDBCドライバーのインストール AWS Schema Conversion Tool」を参照してください。
EMR で Amazon に接続するには AWS SCT CLI
-
ソース Hadoop クラスターの接続情報を含むCLIスクリプトを開きます。ターゲットの Amazon EMR認証情報をこのファイルに追加します。
-
ターゲット Amazon EMRクラスターをプロジェクトに追加します。
次のコード例では、ターゲット Amazon EMRクラスターを追加します。この例では、
HADOOP_TARGET
をターゲットクラスターの名前として設定します。このオブジェクト名を使用して、Hive と HDFSのサービス、および Amazon S3、バケットフォルダをプロジェクトに追加し、マッピングルールを作成します。AddTargetCluster -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' /前の例では、 AWS リソース名と Amazon EMR接続情報を入力します。これには、Amazon EMRクラスターの IP アドレス、 AWS アクセスキー、 AWS シークレットアクセスキー、Amazon S3 バケットが含まれます。必要に応じて、ポート変数の値を設定します。次に、
emr_user
また、emr_password
Amazon EMR ユーザーの名前とこのユーザーのパスワードを入力します。[path\name
、ターゲット Amazon EMRクラスターの PEM ファイルの名前とパスを入力します。詳細については、「クラスターアクセス用のPEMファイルのダウンロードEMR」を参照してください。 -
ターゲット Amazon S3 バケットをプロジェクトに追加します。
次のコード例では、ターゲットの Amazon S3 バケットを追加します。この例では、前に作成した
HADOOP_TARGET
クラスターを使用しています。AddTargetClusterS3 -cluster: 'HADOOP_TARGET' -Name: 'S3_TARGET' -accessKey: 'AKIAIOSFODNN7EXAMPLE' -secretKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY' -region: 'eu-west-1' -s3Path: 'doc-example-bucket/example-folder' /
前の例では、 AWS アクセスキー、 AWS シークレットアクセスキー、および Amazon S3 バケットを入力します。
-
ターゲットの Hive サービスをプロジェクトに追加します。
次のコード例では、 がターゲット Hive サービスと連携 AWS SCT するためのトンネルを作成します。この例では、前に作成した
HADOOP_TARGET
ターゲットクラスターを使用しています。AddTargetClusterHive -cluster: 'HADOOP_TARGET' -name: 'HIVE_TARGET' -host: 'localhost' -port: '10006' -user: '
hive_user
' -password: 'hive_password
' -createTunnel: 'true' -localPort: '10006' -remoteHost: 'hive_address
' -remotePort: 'hive_port
' /前の例では、
hive_user
また、hive_password
Hive ユーザーの名前とこのユーザーのパスワードを入力します。次に、
hive_address
をデフォルト値に、127.0.0.1
またはターゲット Hive サービスの NameNode IP アドレスに。次に、hive_port
をターゲット Hive サービスのポートで使用します。 -
ターゲットHDFSサービスをプロジェクトに追加します。
次のコード例では、 が Apache HDFSサービスと連携 AWS SCT するためのトンネルを作成します。この例では、前に作成した
HADOOP_TARGET
ターゲットクラスターを使用しています。AddTargetClusterHDFS -cluster: 'HADOOP_TARGET' -name: 'HDFS_TARGET' -host: 'localhost' -port: '8025' -user: '
hdfs_user
' -password: 'hdfs_password
' -createTunnel: 'true' -localPort: '8025' -remoteHost: 'hdfs_address
' -remotePort: 'hdfs_port
' /前の例では、
hdfs_user
また、hdfs_password
ユーザーの名前HDFSとこのユーザーのパスワードを入力します。次に、
hdfs_address
また、hdfs_port
ターゲットHDFSサービスの のプライベート IP アドレスとポート NameNode 。 -
CLI スクリプトを保存します。次に、マッピングルールと移行コマンドを追加します。詳細については、「Hadoop ワークロードの移行」を参照してください。