Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Herstellen einer Verbindung zu Apache Hadoop-Datenbanken mit dem AWS Schema Conversion Tool
Sie können die AWS SCT Befehlszeilenschnittstelle (CLI) verwenden, um von Apache Hadoop zu Amazon EMR zu migrieren. AWS SCT verwendet Ihren Amazon S3 S3-Bucket als temporären Speicher für Ihre Daten während der Migration.
AWS SCT unterstützt als Quelle Apache Hadoop Version 2.2.0 und höher. AWS SCT Unterstützt auch Apache Hive Version 0.13.0 und höher.
AWS SCT unterstützt als Ziel Amazon EMR Version 6.3.0 und höher. AWS SCT Unterstützt als Zielversion auch Apache Hadoop Version 2.6.0 und höher und Apache Hive Version 0.13.0 und höher.
Themen
Voraussetzungen für die Verwendung von Apache Hadoop als Quelle
Die folgenden Voraussetzungen sind erforderlich, um über die AWS SCT CLI eine Verbindung zu Apache Hadoop herzustellen.
-
Erstellen Sie einen Amazon S3 S3-Bucket, um Daten während der Migration zu speichern. Anschließend können Sie Daten auf Amazon EMR HDFS kopieren oder Amazon S3 als Datenspeicher für Ihre Hadoop-Workloads verwenden. Weitere Informationen finden Sie unter Erstellen eines Buckets im Benutzerhandbuch für Amazon S3.
-
Erstellen Sie eine AWS Identity and Access Management (IAM-) Rolle mit der Richtlinie.
AmazonS3FullAccessAWS SCT verwendet diese IAM-Rolle, um auf Ihren Amazon S3 S3-Bucket zuzugreifen. -
Notieren Sie sich Ihren AWS geheimen Schlüssel und Ihren AWS geheimen Zugriffsschlüssel. Weitere Informationen zu AWS Zugriffsschlüsseln finden Sie unter Verwaltung von Zugriffsschlüsseln im IAM-Benutzerhandbuch.
-
Erstellen und konfigurieren Sie einen Amazon EMR-Zielcluster. Weitere Informationen finden Sie unter Erste Schritte mit Amazon EMR im Amazon EMR Management Guide.
-
Installieren Sie das
distcpHilfsprogramm auf Ihrem Apache Hadoop-Quellcluster. Installieren Sie dass3-dist-cpHilfsprogramm außerdem auf Ihrem Amazon EMR-Zielcluster. Stellen Sie sicher, dass Ihre Datenbankbenutzer berechtigt sind, diese Dienstprogramme auszuführen. -
Konfigurieren Sie die
core-site.xmlDatei in Ihrem Quell-Hadoop-Cluster so, dass sie das S3A-Protokoll verwendet. Setzen Sie dazu denfs.s3a.aws.credentials.providerParameter auf einen der folgenden Werte.org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProviderorg.apache.hadoop.fs.s3a.SimpleAWSCredentialsProviderorg.apache.hadoop.fs.s3a.AnonymousAWSCredentialsProviderorg.apache.hadoop.fs.s3a.auth.AssumedRoleCredentialProvider
Sie können der
core-site.xmlDatei das folgende Codebeispiel hinzufügen.<property> <name>fs.s3a.aws.credentials.provider</name> <value>org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider</value> </property>Das vorherige Beispiel zeigt eine der vier Optionen aus der vorherigen Optionsliste. Wenn Sie den
fs.s3a.aws.credentials.providerParameter nicht in dercore-site.xmlDatei festlegen, wird AWS SCT der Anbieter automatisch ausgewählt.
Berechtigungen für die Verwendung von Hive als Quelle
Die für einen Hive-Quellbenutzer erforderlichen Berechtigungen lauten wie folgt:
READZugriff auf die Quelldatenordner und auf den Amazon S3-Quell-BucketREAD+WRITEZugriff auf die Zwischen- und Ziel-Amazon S3-Buckets
Um die Migrationsgeschwindigkeit zu erhöhen, empfehlen wir, die Komprimierung für ACID-Transaktions-Quelltabellen durchzuführen.
Die für einen Amazon EMR Hive-Zielbenutzer erforderlichen Berechtigungen lauten wie folgt:
READZugriff auf den Amazon S3-Ziel-BucketREAD+WRITEZugriff auf den Amazon S3 S3-ZwischenbucketREAD+WRITEZugriff auf die HDFS-Zielordner
Berechtigungen für die Verwendung von HDFS als Quelle
Für HDFS als Quelle sind folgende Berechtigungen erforderlich:
EXECUTEfür NameNodeEXECUTE+READfür alle Quellordner und Dateien, die Sie in das Migrationsprojekt aufnehmenREAD+WRITEfür dastmpVerzeichnis im NameNode , um Spark-Jobs auszuführen und Dateien vor der Migration zu Amazon S3 zu speichern
In HDFS benötigen alle Operationen Traversal-Zugriff. Für den Traversalzugriff ist die EXECUTE Genehmigung für alle vorhandenen Komponenten des Pfads erforderlich, mit Ausnahme der letzten Pfadkomponente. Zum Beispiel muss Ihr Benutzer für jede Operation/foo/bar/baz, auf die zugegriffen wird, über EXECUTE Berechtigungen für //foo, und verfügen. /foo/bar
Das folgende Codebeispiel zeigt, wie Sie EXECUTE+READ Berechtigungen für Ihre Quellordner und -dateien sowie READ+WRITE Berechtigungen für das tmp Verzeichnis gewähren.
hadoop fs –chmod –R 744 /user/hdfs-data hadoop fs –chmod –R 766 /tmp
Berechtigungen für die Verwendung von HDFS als Ziel
Die für Amazon EMR HDFS als Ziel erforderlichen Berechtigungen lauten wie folgt:
EXECUTEfür den NameNode des Amazon EMR-Ziel-ClustersREAD+WRITEfür die HDFS-Zielordner, in denen Sie nach der Migration Daten speichern werden
Verbindung zu Apache Hadoop als Quelle herstellen
Sie können Apache Hadoop in AWS SCT Version 1.0.670 oder höher als Quelle verwenden. Sie können Hadoop-Cluster nur über die AWS SCT Befehlszeilenschnittstelle (CLI) zu Amazon EMR migrieren. Bevor Sie beginnen, machen Sie sich mit der Befehlszeilenschnittstelle von vertraut. AWS SCT Weitere Informationen finden Sie unter CLI-Referenz für AWS Schema Conversion Tool.
So stellen Sie in der CLI eine Verbindung zu Apache Hadoop her AWS SCT
-
Erstellen Sie ein neues AWS SCT CLI-Skript oder bearbeiten Sie eine vorhandene Szenariovorlage. Sie können die
HadoopMigrationTemplate.sctsVorlage beispielsweise herunterladen und bearbeiten. Weitere Informationen finden Sie unter CLI-Szenarien abrufen. -
Konfigurieren Sie die AWS SCT Anwendungseinstellungen wie den Speicherort des Treibers und den Protokollordner.
Laden Sie den erforderlichen JDBC-Treiber herunter und geben Sie den Speicherort für die Datei an. Weitere Informationen finden Sie unter Installation von JDBC-Treibern für AWS Schema Conversion Tool.
Das folgende Codebeispiel zeigt Ihnen, wie Sie den Pfad zum Apache Hive-Treiber hinzufügen. AWS SCT Speichert Protokolldateien im
c:\sctOrdner, nachdem Sie dieses Codebeispiel ausgeführt haben.SetGlobalSettings -save: 'true' -settings: '{ "hive_driver_file": "c:\\sct\\HiveJDBC42.jar", "log_folder": "c:\\sct", "console_log_folder": "c:\\sct" }' /Sie können dieses Beispiel und die folgenden Beispiele in Windows verwenden.
-
Erstellen Sie ein neues AWS SCT Projekt.
Im folgenden Codebeispiel wird das
hadoop_emrProjekt imc:\sctOrdner erstellt.CreateProject -name: 'hadoop_emr' -directory: 'c:\sct' / -
Fügen Sie dem Projekt Ihren Quell-Hadoop-Cluster hinzu.
Verwenden Sie den
AddSourceClusterBefehl, um eine Verbindung zum Quell-Hadoop-Cluster herzustellen. Stellen Sie sicher, dass Sie Werte für die folgenden obligatorischen Parameter angeben:name,hostport, unduser. Andere Parameter sind optional.Das folgende Codebeispiel fügt den Quell-Hadoop-Cluster hinzu. In diesem
HADOOP_SOURCEBeispiel wird der Name des Quellclusters festgelegt. Verwenden Sie diesen Objektnamen, um Hive- und HDFS-Dienste zum Projekt hinzuzufügen und Zuordnungsregeln zu erstellen.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' /Ersetzen Sie es im vorherigen Beispiel
hadoop_addressdurch die IP-Adresse Ihres Hadoop-Clusters. Konfigurieren Sie bei Bedarf den Wert der Port-Option. Ersetzen Sie als Nächsteshadoop_userundhadoop_passworddurch den Namen Ihres Hadoop-Benutzers und das Passwort für diesen Benutzer. Geben Sie fürpath\nameden Namen und den Pfad zur PEM-Datei für Ihren Hadoop-Quellcluster ein. -
Speichern Sie Ihr CLI-Skript. Fügen Sie als Nächstes die Verbindungsinformationen für Ihre Hive- und HDFS-Dienste hinzu.
Stellen Sie eine Verbindung zu Ihren Hive- und HDFS-Quelldiensten her
Sie können mit der CLI eine Verbindung zu Ihren Hive- und HDFS-Quelldiensten herstellen. AWS SCT Um eine Verbindung zu Apache Hive herzustellen, verwenden Sie den Hive-JDBC-Treiber Version 2.3.4 oder höher. Weitere Informationen finden Sie unter Installation von JDBC-Treibern für AWS Schema Conversion Tool.
AWS SCT stellt mit dem Cluster-Benutzer eine Verbindung zu Apache Hive her. hadoop Verwenden Sie dazu die AddSourceClusterHDFS Befehle AddSourceClusterHive und. Sie können einen der folgenden Ansätze verwenden.
-
Erstellen Sie einen neuen SSH-Tunnel.
Geben Sie unter
createTunnelden Werttrueein. Geben Sie fürhostdie interne IP-Adresse Ihres Quell-Hive- oder HDFS-Dienstes ein. Geben Sie fürportden Service-Port Ihres Hive- oder HDFS-Dienstes ein.Geben Sie als Nächstes Ihre Hive- oder HDFS-Anmeldeinformationen für und ein.
userpasswordWeitere Informationen zu SSH-Tunneln finden Sie unter Einrichten eines SSH-Tunnels zum primären Knoten mithilfe der lokalen Portweiterleitung im Amazon EMR Management Guide. -
Verwenden Sie einen vorhandenen SSH-Tunnel.
Geben Sie unter
hostden Wertlocalhostein. Geben Sie fürportden lokalen Port aus den SSH-Tunnelparametern ein. -
Stellen Sie direkt Connect zu Ihren Hive- und HDFS-Diensten her.
Geben Sie für
hostdie IP-Adresse oder den Hostnamen Ihres Quell-Hive- oder HDFS-Dienstes ein. Geben Sie fürportden Service-Port Ihres Hive- oder HDFS-Dienstes ein. Geben Sie als Nächstes Ihre Hive- oder HDFS-Anmeldeinformationen für und ein.userpassword
So stellen Sie in der CLI eine Verbindung zu Hive und HDFS her AWS SCT
-
Öffnen Sie Ihr CLI-Skript, das die Verbindungsinformationen für Ihren Hadoop-Quellcluster enthält. Stellen Sie sicher, dass Sie den Namen des Hadoop-Clusters verwenden, den Sie im vorherigen Schritt definiert haben.
-
Fügen Sie dem Projekt Ihren Quell-Hive-Dienst hinzu.
Verwenden Sie den
AddSourceClusterHiveBefehl, um eine Verbindung zum Quell-Hive-Dienst herzustellen. Stellen Sie sicher, dass Sie Werte für die folgenden obligatorischen Parameter angeben:userpassword,,clustername, undport. Andere Parameter sind optional.Das folgende Codebeispiel erstellt einen Tunnel für AWS SCT die Arbeit mit Ihrem Hive-Dienst. Dieser Quell-Hive-Dienst läuft auf demselben PC wie. AWS SCT In diesem Beispiel wird der
HADOOP_SOURCEQuellcluster aus dem vorherigen Beispiel verwendet.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' /Das folgende Codebeispiel stellt ohne Tunnel eine Verbindung zu Ihrem Hive-Dienst her.
AddSourceClusterHive -cluster: 'HADOOP_SOURCE' -name: 'HIVE_SOURCE' -host: 'hive_address' -port: 'hive_port' -user: 'hive_user' -password: 'hive_password' /Ersetzen Sie in den vorherigen Beispielen
hive_userundhive_passworddurch den Namen Ihres Hive-Benutzers und das Passwort für diesen Benutzer.Ersetzen Sie als Nächstes
hive_addressundhive_portdurch die NameNode IP-Adresse und den Port Ihres Quell-Hadoop-Clusters.Für
hive_remote_addresskönnen Sie den Standardwert127.0.0.1oder die NameNode IP-Adresse Ihres Quell-Hive-Dienstes verwenden. -
Fügen Sie dem Projekt Ihren Quell-HDFS-Dienst hinzu.
Verwenden Sie den
AddSourceClusterHDFSBefehl, um eine Verbindung zum Quell-HDFS-Dienst herzustellen. Stellen Sie sicher, dass Sie Werte für die folgenden obligatorischen Parameter angeben:userpassword,,clustername, undport. Andere Parameter sind optional.Stellen Sie sicher, dass Ihr Benutzer über die erforderlichen Berechtigungen verfügt, um Daten aus Ihrem HDFS-Quelldienst zu migrieren. Weitere Informationen finden Sie unter Berechtigungen für die Verwendung von Hive als Quelle.
Das folgende Codebeispiel erstellt einen Tunnel für die AWS SCT Arbeit mit Ihrem Apache HDFS-Dienst. In diesem Beispiel wird der
HADOOP_SOURCEQuellcluster verwendet, den Sie zuvor erstellt haben.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' /Der folgende Code stellt ohne Tunnel eine Verbindung zu Ihrem Apache HDFS-Dienst her.
AddSourceClusterHDFS -cluster: 'HADOOP_SOURCE' -name: 'HDFS_SOURCE' -host: 'hdfs_address' -port: 'hdfs_port' -user: 'hdfs_user' -password: 'hdfs_password' /Ersetzen Sie in den vorherigen Beispielen
hdfs_userundhdfs_passworddurch den Namen Ihres HDFS-Benutzers und das Passwort für diesen Benutzer.Ersetzen Sie als Nächstes
hdfs_addressundhdfs_portdurch die NameNode IP-Adresse und den Port Ihres Quell-Hadoop-Clusters.Für
hdfs_remote_addresskönnen Sie den Standardwert127.0.0.1oder die NameNode IP-Adresse Ihres Quell-Hive-Dienstes verwenden. -
Speichern Sie Ihr CLI-Skript. Fügen Sie als Nächstes die Verbindungsinformationen für Ihren Amazon EMR-Zielcluster und die Migrationsbefehle hinzu.
Verbindung zu Amazon EMR als Ziel herstellen
Sie können mit der AWS SCT CLI eine Verbindung zu Ihrem Amazon EMR-Zielcluster herstellen. Dazu autorisieren Sie eingehenden Datenverkehr und verwenden SSH. In diesem Fall AWS SCT verfügt es über alle erforderlichen Berechtigungen, um mit Ihrem Amazon EMR-Cluster zu arbeiten. Weitere Informationen finden Sie unter Bevor Sie Connect SSH mit dem primären Knoten verbinden und eine Verbindung zum primären Knoten herstellen im Amazon EMR Management Guide.
AWS SCT stellt mit dem hadoop Cluster-Benutzer eine Verbindung zu Amazon EMR Hive her. Um eine Verbindung zu Amazon EMR Hive herzustellen, verwenden Sie den Hive-JDBC-Treiber Version 2.6.2.1002 oder höher. Weitere Informationen finden Sie unter Installation von JDBC-Treibern für AWS Schema Conversion Tool.
So stellen Sie in der CLI eine Verbindung zu Amazon EMR her AWS SCT
-
Öffnen Sie Ihr CLI-Skript, das die Verbindungsinformationen für Ihren Hadoop-Quellcluster enthält. Fügen Sie die Amazon EMR-Zielanmeldedaten zu dieser Datei hinzu.
-
Fügen Sie dem Projekt Ihren Amazon EMR-Zielcluster hinzu.
Das folgende Codebeispiel fügt den Amazon EMR-Zielcluster hinzu. In diesem
HADOOP_TARGETBeispiel wird der Name des Zielclusters festgelegt. Verwenden Sie diesen Objektnamen, um Ihre Hive- und HDFS-Services sowie einen Amazon S3 S3-Bucket-Ordner zum Projekt hinzuzufügen und Zuordnungsregeln zu erstellen.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' /Geben Sie im vorherigen Beispiel Ihre AWS Ressourcennamen und Amazon EMR-Verbindungsinformationen ein. Dazu gehören die IP-Adresse Ihres Amazon EMR-Clusters, der AWS Zugriffsschlüssel, der AWS geheime Zugriffsschlüssel und der Amazon S3 S3-Bucket. Konfigurieren Sie bei Bedarf den Wert der Port-Variablen. Ersetzen Sie anschließend
emr_userundemr_passworddurch den Namen Ihres Amazon EMR-Benutzers und das Passwort für diesen Benutzer. Geben Sie fürpath\nameden Namen und den Pfad zur PEM-Datei für Ihren Amazon EMR-Zielcluster ein. Weitere Informationen finden Sie unter PEM-Datei für EMR-Clusterzugriff herunterladen. -
Fügen Sie dem Projekt Ihren Amazon S3 S3-Ziel-Bucket hinzu.
Das folgende Codebeispiel fügt den Amazon S3 S3-Ziel-Bucket hinzu. In diesem Beispiel wird der
HADOOP_TARGETCluster verwendet, den Sie zuvor erstellt haben.AddTargetClusterS3 -cluster: 'HADOOP_TARGET' -Name: 'S3_TARGET' -accessKey: 'AKIAIOSFODNN7EXAMPLE' -secretKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY' -region: 'eu-west-1' -s3Path: 'doc-example-bucket/example-folder' /Geben Sie im vorherigen Beispiel Ihren Zugriffsschlüssel, Ihren AWS geheimen AWS Zugriffsschlüssel und Ihren Amazon S3 S3-Bucket ein.
-
Fügen Sie dem Projekt Ihren Hive-Zieldienst hinzu.
Das folgende Codebeispiel erstellt einen Tunnel, AWS SCT um mit Ihrem Hive-Zieldienst zu arbeiten. In diesem Beispiel wird der
HADOOP_TARGETZielcluster verwendet, den Sie zuvor erstellt haben.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' /Ersetzen Sie im vorherigen Beispiel
hive_userundhive_passworddurch den Namen Ihres Hive-Benutzers und das Passwort für diesen Benutzer.Als Nächstes
hive_addressersetzen Sie es durch den Standardwert127.0.0.1oder durch die NameNode IP-Adresse Ihres Hive-Zieldienstes. Als Nächsteshive_portersetzen Sie ihn durch den Port Ihres Hive-Zieldienstes. -
Fügen Sie dem Projekt Ihren Ziel-HDFS-Dienst hinzu.
Das folgende Codebeispiel erstellt einen Tunnel für die AWS SCT Arbeit mit Ihrem Apache HDFS-Dienst. In diesem Beispiel wird der
HADOOP_TARGETZielcluster verwendet, den Sie zuvor erstellt haben.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' /Ersetzen Sie im vorherigen Beispiel
hdfs_userundhdfs_passworddurch den Namen Ihres HDFS-Benutzers und das Kennwort für diesen Benutzer.Ersetzen Sie als Nächstes
hdfs_addressundhdfs_portdurch die private IP-Adresse und den Port NameNode Ihres HDFS-Zieldienstes. -
Speichern Sie Ihr CLI-Skript. Fügen Sie als Nächstes Zuordnungsregeln und Migrationsbefehle hinzu. Weitere Informationen finden Sie unter Migration von Hadoop-Workloads.