Storage Transfer Service unterstützt Übertragungen aus Cloud- und lokalen Hadoop Distributed File System-Quellen (HDFS).
Für Übertragungen aus HDFS muss Cloud Storage als Ziel verwendet werden.
Anwendungsfälle sind die Migration von lokalem Speicher zu Cloud Storage, das Archivieren von Daten, um lokalen Speicherplatz freizugeben, die Replikation von Daten in Google Cloud zur Geschäftskontinuität oder die Übertragung von Daten in Google Cloud zur Analyse und Verarbeitung.
Berechtigungen konfigurieren
Bevor Sie eine Übertragung erstellen, müssen Sie Berechtigungen für die folgenden Entitäten konfigurieren:
Das Nutzerkonto, mit dem die Übertragung erstellt wurde. Das ist das Konto, mit dem Sie in der Google Cloud Console angemeldet sind, oder das Konto, das bei der Authentifizierung in der gcloud CLI angegeben wird. Das Nutzerkonto kann ein reguläres Nutzerkonto oder ein nutzerverwaltetes Dienstkonto sein. | |
Das von Google verwaltete Dienstkonto, auch als Dienst bezeichnet
Agent, der vom Storage Transfer Service verwendet wird. Dieses Konto ist im Allgemeinen durch
seine E-Mail-Adresse, die das Format
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
|
|
Das Konto des Migrations-Agents, das Google Cloud-Berechtigungen für Migrations-Agents bereitstellt. Für Übertragungs-Agent-Konten wird die des Nutzers, der sie installiert, oder die Anmeldedaten eines nutzerverwaltetes Dienstkonto zur Authentifizierung. |
Weitere Informationen finden Sie unter Agent-basierte Übertragungsberechtigungen .
Agents in einem Agent-Pool installieren
Bei agentbasierten Übertragungen werden Software-Agents verwendet, um Übertragungen zu orchestrieren. Diese Agents müssen auf einem oder mehreren Rechnern mit Zugriff auf in Ihrem Dateisystem. Die Agents müssen Zugriff auf den Namenode, alle Datanodes, den Hadoop Key Management Server (KMS) und das Kerberos Key Distribution Center (KDC) haben.
Transfer-Kundenservicemitarbeiter arbeiten in einem Kundenservicemitarbeiterpool zusammen. Die Anzahl der Kundenservicemitarbeiter zu erhöhen, kann die Gesamtleistung des Jobs steigern. Dies hängt jedoch von mehreren Faktoren ab.
Es kann helfen, mehr Agenten hinzuzufügen, bis zu etwa der Hälfte der Anzahl der Knoten in Ihrem HDFS-Cluster. Bei einem Cluster mit 30 Knoten wird beispielsweise von 5 auf 15 Agents erhöht die Leistung zu verbessern, aber mehr als 15 macht wahrscheinlich keinen großen Unterschied aus.
Für einen kleinen HDFS-Cluster kann ein Agent ausreichen.
Zusätzliche Agenten wirken sich in der Regel stärker auf die Leistung aus, wenn eine Übertragung eine große Anzahl kleiner Dateien umfasst. Der Storage Transfer Service erreicht einen hohen Durchsatz, indem Übertragungsaufgaben parallel auf mehrere Agenten verteilt werden. Je mehr Dateien in der Arbeitslast vorhanden sind, desto vorteilhafter ist es, weitere Agents hinzuzufügen.
Agent-Pool erstellen
Erstellen Sie einen Agent-Pool. Verwenden Sie für diese Aktion Ihr Nutzerkonto.
Agents installieren
Installieren Sie Agents im Agent-Pool. Verwende für diese Aktion dein Konto für den Kundenservicemitarbeiter für die Übertragung.
Google Cloud Console
Rufen Sie in der Google Cloud Console die Seite Agent-Pools auf.
Wählen Sie den Agent-Pool aus, dem Sie den neuen Agent hinzufügen möchten.
Klicken Sie auf Agent installieren.
Folgen Sie der Anleitung, um den Agent zu installieren und auszuführen.
Weitere Informationen zu den Befehlszeilenoptionen des Agents finden Sie unter Agent-Befehlszeilenoptionen.
gcloud-CLI
Wenn Sie einen oder mehrere Agents mithilfe der gcloud CLI installieren möchten, führen Sie gcloud transfer agents install
aus:
gcloud transfer agents install --pool=POOL_NAME \
--count=NUM_AGENTS \
--mount-directories=MOUNT_DIRECTORIES \
--hdfs-namenode-uri=HDFS_NAMENODE_URI \
--hdfs-username=HDFS_USERNAME \
--hdfs-data-transfer-protection=HDFS_DATA_TRANSFER_PROTECTION \
--kerberos-config-file=KERBEROS_CONFIG_FILE \
--kerberos-keytab-file=KERBEROS_KEYTAB_FILE \
--kerberos-user-principal=KERBEROS_USER_PRINCIPAL \
--kerberos-service-principal=KERBEROS_SERVICE_PRINCIPAL \
Wobei:
--hdfs-namenode-uri
gibt einen HDFS-Cluster einschließlich eines Schemas an. namenode und Port im URI-Format an. Beispiel:rpc://my-namenode:8020
http://my-namenode:9870
Verwenden Sie HTTP oder HTTPS für WebHDFS. Wenn kein Schema angegeben ist, wird von RPC ausgegangen. Wenn Es wird kein Port angegeben. Der Standardwert ist
8020
für RPC,9870
für HTTP und9871
für HTTPS. Beispielsweise wird die Eingabe-my-namenode
zurpc://my-namenode:8020
.Wenn Ihr Cluster mit mehreren Namenodes konfiguriert ist, geben Sie die aktuellen primären Knoten. Weitere Informationen finden Sie unter Cluster mit mehreren Namenoden.
--hdfs-username
ist der Nutzername zum Herstellen einer Verbindung zu einem HDFS-Cluster mit einfache Authentifizierung. Lassen Sie dieses Flag weg, wenn Sie sich mit Kerberos authentifizieren oder wenn Sie eine Verbindung ohne Authentifizierung herstellen.--hdfs-data-transfer-protection
(optional) ist die clientseitige Qualität von Schutzeinstellung (QOP) für mit Kerberos gesicherte Cluster. Der Wert darf nicht strenger sein als der serverseitige QOP-Wert. Gültige Werte sindauthentication
,integrity
undprivacy
.
Wenn Sie sich mit Kerberos authentifizieren, fügen Sie auch die folgenden Flags hinzu:
--kerberos-config-file
ist der Pfad zu einer Kerberos-Konfigurationsdatei. Beispiel:--kerberos-config-file=/etc/krb5.conf
--kerberos-user-principal
ist das zu verwendende Kerberos-Nutzerprinzipal. Beispiel:--kerberos-user-principal=user1
--kerberos-keytab-file
ist der Pfad zu einer Keytab-Datei, die die mit dem Flag--kerberos-user-principal
angegebene Nutzerprincipal enthält. Beispiel:--kerberos-keytab-file=/home/me/kerberos/user1.keytab
.--kerberos-service-principal
ist der zu verwendende Kerberos-Dienstprinzipal vom Typ<primary>/<instance>
. Der Bereich wird aus Ihrer Kerberos-Konfigurationsdatei zugeordnet. Ein angegebener Bereich wird ignoriert. Wenn dieses Flag nicht festgelegt ist, ist der Standardwerthdfs/<namenode_fqdn>
, wobei<namenode_fqdn>
den Wert Der in der Konfigurationsdatei angegebene voll qualifizierte Domainname.Beispiel:
--kerberos-service-principal=hdfs/my-namenode.a.example.com
Das Tool führt Sie durch die erforderlichen Schritte zur Installation des Agents. Dieser Befehl installiert NUM_AGENTS Agents auf Ihrem Computer, die dem Poolnamen angegeben als POOL_NAME zugeordnet sind und authentifiziert die Agents mithilfe Ihrer gcloud
-Anmeldedaten. Der Poolname muss vorhanden sein oder ein Fehler wird zurückgegeben.
Das Flag --mount-directories
ist optional, wird aber dringend empfohlen. Das
value ist eine durch Kommas getrennte Liste von Verzeichnissen im Dateisystem, in die
um dem Agent Zugriff zu gewähren.
Wenn Sie dieses Flag weglassen, wird das gesamte Dateisystem im Agent-Container bereitgestellt. Weitere Informationen finden Sie unter
die
Referenz zu gcloud
.
docker run
Bevor Sie Agents mit docker run
installieren, folgen Sie der Anleitung zum
Installieren Sie Docker.
Mit dem Befehl docker run
wird ein Agent installiert. Um die Anzahl der Agents zu erhöhen
in Ihrem Pool, führen Sie diesen Befehl so oft wie nötig aus.
Welche Befehlsflags erforderlich sind, hängt vom verwendeten Authentifizierungstyp ab.
Kerberos
Um sich mit Kerberos bei Ihrem Dateisystem zu authentifizieren, verwenden Sie die folgenden Befehl:
sudo docker run -d --ulimit memlock=64000000 --rm \
--network=host \
-v /:/transfer_root \
gcr.io/cloud-ingest/tsop-agent:latest \
--enable-mount-directory \
--project-id=${PROJECT_ID} \
--hostname=$(hostname) \
--creds-file="service_account.json" \
--agent-pool=${AGENT_POOL_NAME} \
--hdfs-namenode-uri=cluster-namenode \
--kerberos-config-file=/etc/krb5.conf \
--kerberos-user-principal=user \
--kerberos-keytab-file=/path/to/folder.keytab
Wobei:
--network=host
sollte weggelassen werden, wenn Sie mehr als einen Agent ausführen auf diesem Computer.--hdfs-namenode-uri
: Ein Schema, ein Namenode und ein Port im URI-Format, die einen HDFS-Cluster darstellen. Beispiel:rpc://my-namenode:8020
http://my-namenode:9870
Verwenden Sie HTTP oder HTTPS für WebHDFS. Wenn kein Schema angegeben ist, wird von RPC ausgegangen. Wenn
Es wird kein Port angegeben. Der Standardwert ist 8020
für RPC, 9870
für HTTP und
9871
für HTTPS. Beispielsweise wird die Eingabe-my-namenode
zu
rpc://my-namenode:8020
.
Wenn Ihr Cluster mit mehreren Namenodes konfiguriert ist, geben Sie die aktuellen primären Knoten. Weitere Informationen finden Sie unter Cluster mit mehreren Namenodes für weitere Informationen.
--kerberos-config-file
: Pfad zu einer Kerberos-Konfigurationsdatei. Standardeinstellung ist/etc/krb5.conf
.--kerberos-user-principal
: Das Kerberos-Nutzerhauptkonto.--kerberos-keytab-file
: Pfad zu einer Keytab-Datei, die die mit--kerberos-user-principal
angegebene Nutzerprincipal enthält.--kerberos-service-principal
: zu verwendender Kerberos-Dienstprinzipal des in der Form 'service/instance'. Der Bereich wird aus Ihrer Kerberos-Konfigurationsdatei zugeordnet. Ein angegebener Bereich wird ignoriert. Wenn dieses Flag nicht angegeben ist, wird standardmäßighdfs/<namenode_fqdn>
verwendet, wobeifqdn
der voll qualifizierte Domainname ist.
Einfache Authentifizierung
So authentifizieren Sie sich mit der einfachen Authentifizierung bei Ihrem Dateisystem:
sudo docker run -d --ulimit memlock=64000000 --rm \
--network=host \
-v /:/transfer_root \
gcr.io/cloud-ingest/tsop-agent:latest \
--enable-mount-directory \
--project-id=${PROJECT_ID} \
--hostname=$(hostname) \
--creds-file="${CREDS_FILE}" \
--agent-pool="${AGENT_POOL_NAME}" \
--hdfs-namenode-uri=cluster-namenode \
--hdfs-username="${USERNAME}"
Wobei:
--hdfs-username
: Nutzername, der beim Herstellen einer Verbindung zu einem HDFS-Cluster verwendet werden soll mit einfacher Authentifizierung.--hdfs-namenode-uri
: Ein Schema, ein Namenode und ein Port im URI-Format. für einen HDFS-Cluster. Beispiel:rpc://my-namenode:8020
http://my-namenode:9870
Verwenden Sie HTTP oder HTTPS für WebHDFS. Wenn kein Schema angegeben ist, wird RPC angenommen.
Wenn kein Port angegeben ist, wird standardmäßig 8020
für RPC, 9870
für HTTP und 9871
für HTTPS verwendet. Beispielsweise wird die Eingabe-my-namenode
zu
rpc://my-namenode:8020
.
Wenn Ihr Cluster mit mehreren Namenodes konfiguriert ist, geben Sie die aktuellen primären Knoten. Weitere Informationen finden Sie unter Cluster mit mehreren Namenodes für weitere Informationen.
Keine Authentifizierung
So stellen Sie eine Verbindung zu Ihrem Dateisystem ohne Authentifizierung her:
sudo docker run -d --ulimit memlock=64000000 --rm \
--network=host \
-v /:/transfer_root \
gcr.io/cloud-ingest/tsop-agent:latest \
--enable-mount-directory \
--project-id=${PROJECT_ID} \
--hostname=$(hostname) \
--creds-file="${CREDS_FILE}" \
--agent-pool="${AGENT_POOL_NAME}" \
--hdfs-namenode-uri=cluster-namenode \
Wobei:
--hdfs-namenode-uri
: Ein Schema, ein Namenode und ein Port im URI-Format, die einen HDFS-Cluster darstellen. Beispiel:rpc://my-namenode:8020
http://my-namenode:9870
Verwenden Sie HTTP oder HTTPS für WebHDFS. Wenn kein Schema angegeben ist, wird RPC angenommen.
Wenn kein Port angegeben ist, wird standardmäßig 8020
für RPC, 9870
für HTTP und 9871
für HTTPS verwendet. Beispielsweise wird die Eingabe-my-namenode
zu
rpc://my-namenode:8020
.
Wenn Ihr Cluster mit mehreren Namensknoten konfiguriert ist, geben Sie den aktuellen primären Knoten an. Weitere Informationen finden Sie unter Cluster mit mehreren Namenoden.
Übertragungsoptionen
Die folgenden Storage Transfer Service-Features sind für Übertragungen von HDFS zu Cloud Storage.
Aus dem HDFS übertragene Dateien behalten nicht metadata an.
Übertragung erstellen
Geben Sie keine vertraulichen Daten wie personenidentifizierbare Informationen an (PII) oder Sicherheitsdaten in den Namen des Übertragungsjobs ein. Ressourcennamen können an die Namen anderer Google Cloud-Ressourcen weitergegeben und für interne Google-Systeme außerhalb Ihres Projekts freigegeben werden.
Storage Transfer Service bietet mehrere Schnittstellen zum Erstellen eines übertragen werden.
Google Cloud Console
Rufen Sie in der Google Cloud Console die Seite Storage Transfer Service auf.
Klicken Sie auf Übertragung erstellen. Die Seite Übertragungsjob erstellen wird angezeigt.
Wählen Sie als Quelltyp Hadoop Distributed File System aus. Das Ziel muss Google Cloud Storage sein.
Klicken Sie auf Next step (Nächster Schritt).
Quelle konfigurieren
Geben Sie die erforderlichen Informationen für diese Übertragung an:
Wählen Sie den Agent-Pool aus, den Sie für diese Übertragung konfiguriert haben.
Geben Sie den Pfad, aus dem die Übertragung erfolgen soll, relativ zum Stammverzeichnis ein.
Geben Sie optional eine beliebige Filter, um auf die Quelldaten anwenden.
Klicken Sie auf Nächster Schritt.
Senke konfigurieren
Geben Sie im Feld Bucket oder Ordner den Ziel-Bucket und optional den Ordnernamen ein. Sie können auch auf Durchsuchen klicken, um einen Bucket aus einer Liste der vorhandenen Buckets im aktuellen Projekt auszuwählen. Klicken Sie zum Erstellen eines neuen Buckets auf Neuen Bucket erstellen
Klicken Sie auf Nächster Schritt.
Übertragung planen
Sie können Ihre Übertragung für die einmalige Ausführung planen oder eine wiederkehrende Übertragung konfigurieren.
Klicken Sie auf Nächster Schritt.
Übertragungseinstellungen auswählen
Geben Sie im Feld Beschreibung eine Beschreibung der Übertragung ein. Geben Sie als Best Practice eine aussagekräftige Beschreibung ein, damit Sie die Jobs unterscheiden können.
Wählen Sie unter Metadatenoptionen Ihre Cloud Storage-Speicherklasse aus. und ob die einzelnen Objekte Zeitpunkt der Erstellung. Weitere Informationen finden Sie unter Aufbewahrung von Metadaten .
Wählen Sie unter Wann überschreiben? eine der folgenden Optionen aus:
Nie: Zieldateien werden nicht überschrieben. Wenn bereits eine Datei mit demselben Namen vorhanden ist, wird sie nicht übertragen.
Falls unterschiedlich: Überschreibt Zieldateien, wenn die Quelldatei mit demselben Namen unterschiedliche ETags oder Prüfsummenwerte hat.
Immer: Zieldateien werden immer geschrieben, wenn die Quelldatei denselben Namen hat, auch wenn sie identisch sind.
Wählen Sie unter Löschzeitpunkt eine der folgenden Optionen aus:
Nie: Dateien werden niemals aus der Quelle oder dem Ziel gelöscht.
Dateien aus dem Ziel löschen, wenn sie nicht auch in der Quelle sind: Wenn sich Dateien im Cloud Storage-Ziel-Bucket nicht auch in der Quelle befinden, löschen Sie die Dateien aus dem Cloud Storage-Bucket.
Mit dieser Option wird sichergestellt, dass der Cloud Storage-Ziel-Bucket genau mit Ihrer Quelle übereinstimmt.
Wählen Sie aus, ob Übertragungsprotokollierung und/oder Pub/Sub-Benachrichtigungen aktiviert werden sollen.
Klicken Sie auf Erstellen, um die Übertragung zu erstellen.
gcloud-CLI
Verwenden Sie zum Erstellen eines neuen Übertragungsjobs den Befehl gcloud transfer jobs create
. Das Erstellen eines neuen Jobs initiiert die angegebene Übertragung, sofern weder ein Zeitplan noch --do-not-run
angegeben ist.
gcloud transfer jobs create \
hdfs:///PATH/ gs://BUCKET_NAME/PATH/
--source-agent-pool=AGENT_POOL_NAME
Wobei:
PATH
ist ein absoluter Pfad vom Stammverzeichnis des HDFS-Clusters. Der Cluster-Namenode und der Port werden auf Agentebene konfiguriert. Daher müssen im Befehl zum Erstellen des Jobs nur der (optionale) Pfad und der Agent-Pool angegeben werden.--source-agent-pool
gibt den für diese Übertragung zu verwendenden Quell-Agent-Pool an.
Weitere Optionen:
--do-not-run
verhindert, dass Storage Transfer Service nach dem Senden des Befehls den Job ausführt. Zum Ausführen des Jobs aktualisieren Sie ihn, um einen Zeitplan hinzuzufügen, oder verwendenjobs run
, um ihn manuell zu starten.--manifest-file
gibt den Pfad zu einer CSV-Datei in Cloud Storage an, die eine Liste der Dateien enthält, die von Ihrer Quelle übertragen werden sollen. Informationen zur Formatierung von Manifestdateien finden Sie unter Bestimmte Dateien oder Objekte mithilfe eines Manifests übertragen.Jobinformationen: Sie können
--name
und--description
angeben.Zeitplan: Geben Sie
--schedule-starts
,--schedule-repeats-every
und--schedule-repeats-until
oder--do-not-run
an.Objektbedingungen: Mit Bedingungen können Sie bestimmen, welche Objekte übertragen werden. Dazu gehören
--include-prefixes
und--exclude-prefixes
sowie die zeitbasierten Bedingungen in--include-modified-[before | after]-[absolute | relative]
. Wenn Sie einen Ordner mit Ihrer Quelle angegeben haben, beziehen sich Präfixfilter auf diesen Ordner. Weitere Informationen finden Sie unter Quellobjekte nach Präfix filtern.Übertragungsoptionen: Geben Sie an, ob Zieldateien überschrieben werden sollen (
--overwrite-when=different
oderalways
) und ob bestimmte Dateien während oder nach der Übertragung gelöscht werden sollen (--delete-from=destination-if-unique
odersource-after-transfer
). Legen Sie optional eine Speicherklasse für übertragene Objekte fest (--custom-storage-class
).Benachrichtigungen: Konfigurieren Sie Pub/Sub-Benachrichtigungen für Übertragungen mit
--notification-pubsub-topic
,--notification-event-types
und--notification-payload-format
.
Führen Sie gcloud transfer jobs create --help
aus oder sehen Sie sich die gcloud
-Referenzdokumentation an, um alle Optionen aufzurufen.
REST API
Erstellen Sie ein JSON-Objekt ähnlich dem folgenden Beispiel, um eine Übertragung von einer HDFS-Quelle mithilfe der REST API zu erstellen.
POST https://storagetransfer.googleapis.com/v1/transferJobs
{
...
"transferSpec": {
"source_agent_pool_name":"POOL_NAME",
"hdfsDataSource": {
"path": "/mount"
},
"gcsDataSink": {
"bucketName": "SINK_NAME"
},
"transferOptions": {
"deleteObjectsFromSourceAfterTransfer": false
}
}
}
Weitere Informationen zu zusätzlichen unterstützten Feldern finden Sie in der Referenz zu transferJobs.create
.
Cluster mit mehreren Namensknoten
Storage Transfer Service-Agents können nur mit einem einzelnen Namenode konfiguriert werden. Wenn Ihr HDFS-Cluster mit mehreren Namenoden („Hochverfügbarkeit“) konfiguriert ist und es zu einem Failover-Ereignis kommt, das zu einem neuen primären Namenode führt, müssen Sie Ihre Agenten mit dem richtigen Namenode neu installieren.
Informationen zum Löschen der alten Kundenservicemitarbeiter finden Sie unter Kundenservicemitarbeiter löschen.
Der aktive NameNode Ihres Clusters kann mit folgendem Befehl abgerufen werden:
hdfs haadmin -getAllServiceState