Migrieren Sie Daten von einer lokalen Hadoop-Umgebung zu Amazon S3 DistCp mithilfe von AWS PrivateLink for Amazon S3 - AWS Prescriptive Guidance

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.

Migrieren Sie Daten von einer lokalen Hadoop-Umgebung zu Amazon S3 DistCp mithilfe von AWS PrivateLink for Amazon S3

Erstellt von Jason Owens (AWS), Andres Cantor (), Jeff Klopfenstein (AWS), Bruno Rocha Oliveira (AWS) und Samuel Schmidt () AWS AWS

Umwelt: Produktion

Quelle: Hadoop

Ziel: Beliebig

R-Typ: Replatform

Arbeitslast: Open Source

Technologien: Speicher und Backup; Analytik

AWSDienste: Amazon S3; Amazon EMR

Dieses Muster zeigt, wie Sie mithilfe des Open-Source-Tools Apache DistCpmit AWS PrivateLink für Amazon Simple Storage Service (Amazon S3AWS) nahezu jede Datenmenge aus einer lokalen Apache Hadoop-Umgebung in die Amazon Web Services () Cloud migrieren können. Anstatt das öffentliche Internet oder eine Proxy-Lösung AWS PrivateLink für die Datenmigration zu verwenden, können Sie Amazon S3 verwenden, um Daten über eine private Netzwerkverbindung zwischen Ihrem lokalen Rechenzentrum und einer Amazon Virtual Private Cloud (AmazonVPC) zu Amazon S3 zu migrieren. Wenn Sie DNS Einträge in Amazon Route 53 verwenden oder Einträge in der Datei /etc/hosts in allen Knoten Ihres lokalen Hadoop-Clusters hinzufügen, werden Sie automatisch zum richtigen Schnittstellen-Endpunkt weitergeleitet.

Dieses Handbuch enthält Anweisungen DistCp zur Verwendung bei der Migration von Daten in die Cloud. AWS DistCp ist das am häufigsten verwendete Tool, es sind jedoch auch andere Migrationstools verfügbar. Sie können beispielsweise AWS Offline-Tools wie AWSSnowball oder AWSSnowmobile oder AWS Online-Tools wie AWSStorage Gateway oder verwenden. AWS DataSync Darüber hinaus können Sie andere Open-Source-Tools wie Apache verwenden. NiFi

Voraussetzungen

Einschränkungen

Einschränkungen für Virtual Private Cloud (VPC) gelten AWS PrivateLink für Amazon S3. Weitere Informationen finden Sie unter Eigenschaften und Einschränkungen und AWS PrivateLink Kontingente von Schnittstellenendpunkten (AWS PrivateLink Dokumentation).

AWS PrivateLink für Amazon S3 unterstützt Folgendes nicht:

Quelltechnologie-Stack

  • Hadoop-Cluster mit installiertem DistCp

Zieltechnologie-Stack

  • Amazon S3

  • Amazon VPC

Zielarchitektur

Hadoop-Cluster mit DistCp Kopieren von Daten aus der lokalen Umgebung über Direct Connect nach S3.

Das Diagramm zeigt, wie der DistCp Hadoop-Administrator Daten aus einer lokalen Umgebung über eine private Netzwerkverbindung wie AWS Direct Connect über einen Amazon S3-Schnittstellenendpunkt nach Amazon S3 kopiert.

AWSDienste

  • AWSIdentity and Access Management (IAM) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.

  • Amazon Simple Storage Service (Amazon S3) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

  • Amazon Virtual Private Cloud (AmazonVPC) hilft Ihnen dabei, AWS Ressourcen in einem von Ihnen definierten virtuellen Netzwerk bereitzustellen. Dieses virtuelle Netzwerk ähnelt einem herkömmlichen Netzwerk, das Sie in Ihrem eigenen Rechenzentrum betreiben würden, und bietet die Vorteile der Nutzung der skalierbaren Infrastruktur vonAWS.

Andere Tools

  • Apache Hadoop DistCp (Distributed Copy) ist ein Tool, das zum Kopieren großer Inter-Cluster und Intra-Cluster verwendet wird. DistCp verwendet Apache MapReduce für die Verteilung, Fehlerbehandlung und Wiederherstellung sowie für die Berichterstattung.

AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie einen Endpunkt AWS PrivateLink für Amazon S3.

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die VPCAmazon-Konsole.

  2. Wählen Sie im Navigationsbereich Endpoints und dann Create Endpoint aus.

  3. Wählen Sie bei Service category (Servicekategorie) die Option AWS services (-Services) aus.

  4. Geben Sie in das Suchfeld s3 ein, und drücken Sie dann die EINGABETASTE.

  5. Wählen Sie in den Suchergebnissen die Datei com.amazonaws aus. < your-aws-region >.s3-Dienstname, wobei der Wert in der Spalte Typ Interface lautet.

  6. Wählen Sie für VPCIhre. VPC Wählen Sie für Subnetze Ihre Subnetze aus.

  7. Wählen oder erstellen Sie für Sicherheitsgruppe eine Sicherheitsgruppe, die 443 zulässtTCP.

  8. Fügen Sie je nach Ihren Anforderungen Tags hinzu und wählen Sie dann Create Endpoint aus.

AWSAdministrator

Überprüfen Sie die Endpunkte und suchen Sie nach den DNS Einträgen.

  1. Öffnen Sie die VPCAmazon-Konsole, wählen Sie Endpoints und dann den Endpoint aus, den Sie zuvor erstellt haben.

  2. Suchen Sie auf der Registerkarte Details nach dem ersten DNS Eintrag für DNSNamen. Dies ist der DNS Eintrag Regional. Wenn Sie diesen DNS Namen verwenden, wechseln sich Anfragen zwischen den DNS für Availability Zones spezifischen Einträgen ab.

  3. Wählen Sie die Registerkarte Subnetze. Sie finden die Adresse der elastic network interface des Endpunkts in jeder Availability Zone.

AWSAdministrator

Überprüfen Sie die Firewallregeln und Routing-Konfigurationen.

Um zu überprüfen, ob Ihre Firewallregeln geöffnet sind und ob Ihre Netzwerkkonfiguration korrekt eingerichtet ist, testen Sie den Endpunkt mit Telnet auf Port 443. Beispielsweise:

$ 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.

Hinweis: Wenn Sie den Eintrag Regional verwenden, zeigt ein erfolgreicher Test, dass die DNS zwischen den beiden IP-Adressen wechselt, die Sie auf der Registerkarte Subnetze für Ihren ausgewählten Endpunkt in der VPC Amazon-Konsole sehen können.

Netzwerkadministrator, AWS Administrator

Konfigurieren Sie die Namensauflösung.

Sie müssen die Namensauflösung so konfigurieren, dass Hadoop auf den Amazon S3 S3-Schnittstellenendpunkt zugreifen kann. Sie können den Endpunktnamen selbst nicht verwenden. Stattdessen müssen Sie <your-bucket-name>.s3.<your-aws-region>.amazonaws.com oder auflösen*.s3.<your-aws-region>.amazonaws.com. Weitere Informationen zu dieser Namensbeschränkung finden Sie unter Einführung in den Hadoop S3A-Client (Hadoop-Website).

Wählen Sie eine der folgenden Konfigurationsoptionen:

  • Verwenden Sie die lokale LösungDNS, um die private IP-Adresse des Endpunkts aufzulösen. Sie können das Verhalten für alle Buckets oder für ausgewählte Buckets außer Kraft setzen. Weitere Informationen finden Sie unter „Option 2: Zugriff auf Amazon S3 mithilfe von Domain Name System Response Policy Zones (DNSRPZ)“ in Sicherer Hybridzugriff auf Amazon S3 mithilfe von AWS PrivateLink (AWSBlogbeitrag).

  • Konfigurieren Sie lokal so, dass der Datenverkehr DNS an die eingehenden Resolver-Endpunkte in der bedingt weitergeleitet wird. VPC Der Verkehr wird auf die Route 53 weitergeleitet. Weitere Informationen finden Sie unter „Option 3: Weiterleiten von DNS Anfragen vor Ort mithilfe von Amazon Route 53 Resolver Inbound Endpoints“ in Sicherer Hybridzugriff auf Amazon S3 mit AWS PrivateLink (AWSBlogbeitrag).

  • Bearbeiten Sie die Datei /etc/hosts auf allen Knoten in Ihrem Hadoop-Cluster. Dies ist eine temporäre Lösung für Tests und wird nicht für die Produktion empfohlen. Um die Datei /etc/hosts zu bearbeiten, fügen Sie einen Eintrag für entweder <your-bucket-name>.s3.<your-aws-region>.amazonaws.com oder s3.<your-aws-region>.amazonaws.com hinzu. Die Datei /etc/hosts darf nicht mehrere IP-Adressen für einen Eintrag haben. Sie müssen eine einzelne IP-Adresse aus einer der Availability Zones auswählen, die dann zu einer einzigen Fehlerquelle wird.

AWSAdministrator

Konfigurieren Sie die Authentifizierung für Amazon S3.

Um sich über Hadoop bei Amazon S3 zu authentifizieren, empfehlen wir, temporäre Rollenanmeldedaten in die Hadoop-Umgebung zu exportieren. Weitere Informationen finden Sie unter Authentifizierung mit S3 (Hadoop-Website). Für Jobs mit langer Laufzeit können Sie einen Benutzer erstellen und ihm eine Richtlinie zuweisen, die nur berechtigt ist, Daten in einem S3-Bucket abzulegen. Der Zugriffsschlüssel und der geheime Schlüssel können in Hadoop gespeichert werden und sind nur für den DistCp Job selbst und für den Hadoop-Administrator zugänglich. Weitere Informationen zum Speichern von Geheimnissen finden Sie unter Speichern von Geheimnissen mit Hadoop Credential Providers (Hadoop-Website). Weitere Informationen zu anderen Authentifizierungsmethoden finden Sie unter So erhalten Sie Anmeldeinformationen für eine IAM Rolle für den CLI Zugriff auf ein AWS Konto in der Dokumentation zu AWS IAM Identity Center (Nachfolger von AWS Single Sign-On).

Um temporäre Anmeldeinformationen zu verwenden, fügen Sie die temporären Anmeldeinformationen zu Ihrer Anmeldeinformationsdatei hinzu oder führen Sie die folgenden Befehle aus, um die Anmeldeinformationen in Ihre Umgebung zu exportieren:

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

Wenn Sie über eine herkömmliche Kombination aus Zugriffsschlüssel und geheimer Taste verfügen, führen Sie die folgenden Befehle aus:

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

Hinweis: Wenn Sie eine Kombination aus Zugriffsschlüssel und geheimem Schlüssel verwenden, ändern Sie den Anbieter für Anmeldeinformationen in den DistCp Befehlen von "org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider" bis"org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider".

AWSAdministrator

Daten übertragen mit DistCp.

Führen Sie DistCp die folgenden Befehle aus, um Daten zu übertragen:

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>

Hinweis: Die AWS Region des Endpunkts wird nicht automatisch erkannt, wenn Sie den DistCp Befehl with AWS PrivateLink für Amazon S3 verwenden. Hadoop 3.3.2 und spätere Versionen lösen dieses Problem, indem sie die Option aktivieren, die AWS Region des S3-Buckets explizit festzulegen. Weitere Informationen finden Sie unter S3A, um die Option fs.s3a.endpoint.region zur Festlegung der Region hinzuzufügen (Hadoop-Website). AWS

Weitere Informationen zu zusätzlichen S3A-Anbietern finden Sie unter Allgemeine S3A-Clientkonfiguration (Hadoop-Website). Wenn Sie beispielsweise Verschlüsselung verwenden, können Sie der obigen Befehlsreihe je nach Verschlüsselungstyp die folgende Option hinzufügen:

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

Hinweis: Um den Schnittstellenendpunkt mit S3A zu verwenden, müssen Sie einen DNS Aliaseintrag für den S3-Regionalnamen (z. B.s3.<your-aws-region>.amazonaws.com) für den Schnittstellenendpunkt erstellen. Anweisungen finden Sie im Abschnitt Authentifizierung für Amazon S3 konfigurieren. Diese Problemumgehung ist für Hadoop 3.3.2 und frühere Versionen erforderlich. Zukünftige Versionen von S3A benötigen diese Problemumgehung nicht.

Wenn Sie Signaturprobleme mit Amazon S3 haben, fügen Sie eine Option hinzu, um Signature Version 4 (Sigv4) zu signieren:

-Dmapreduce.map.java.opts="-Dcom.amazonaws.services.s3.enableV4=true"
Migrationsingenieur, Administrator AWS