El Servicio de transferencia de almacenamiento admite transferencias desde la nube y Hadoop local fuentes del sistema de archivos distribuidos (HDFS).
Las transferencias desde HDFS deben usar Cloud Storage como destino.
Entre los casos de uso, se incluye migrar del almacenamiento local a Cloud Storage, archivar datos para liberar espacio de almacenamiento local, replicar datos en Google Cloud para la continuidad empresarial o transferir datos a Google Cloud para su análisis y procesamiento.
Configura permisos
Antes de crear una transferencia, debes configurar los permisos de las siguientes entidades:
La cuenta de usuario que se usa para crear la transferencia. Este es el con la que accediste a la consola de Google Cloud que se especifica cuando se realiza la autenticación en la CLI de “gcloud”. La cuenta de usuario puede ser una cuenta de usuario normal o una cuenta de servicio administrada por el usuario. | |
La cuenta de servicio administrada por Google, también conocida como la
que usa el Servicio de transferencia de almacenamiento. Generalmente, esta cuenta se identifica por
su dirección de correo electrónico, que usa el formato
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
|
|
La cuenta de agente de transferencia que proporciona permisos de Google Cloud para los agentes de transferencia Las cuentas del agente de transferencia usan credenciales del usuario que las instala o las credenciales de un de servicio administrada por el usuario, para autenticar. |
Consulta Permisos de transferencia basados en agentes para obtener instrucciones.
Instala agentes en un grupo de agentes
Las transferencias basadas en agentes usan agentes de software para organizar las transferencias. Estos agentes se deben instalar en una o más máquinas con acceso al sistema de archivos. Los agentes deben tener acceso al nombre, a todos el servidor de administración de claves (KMS) de Hadoop, y el centro de distribución de claves de Kerberos (KDC).
Los agentes de transferencia trabajan juntos en un grupo de agentes. Aumenta la cantidad de agentes aumentar el rendimiento general del trabajo, pero esto depende de varios factores.
Agregar más agentes puede ser útil, hasta la mitad de la cantidad de nodos en tu HDFS. clúster. Por ejemplo, con un clúster de 30 nodos, aumentar de 5 a 15 agentes debería mejorar el rendimiento, pero es poco probable que más de 15 agentes marquen una gran diferencia.
Para un clúster de HDFS pequeño, un agente puede ser suficiente.
Los agentes adicionales suelen tener un mayor impacto en el rendimiento cuando se incluye una gran cantidad de archivos pequeños. El Servicio de transferencia de almacenamiento logra una alta productividad paralelizando las tareas de transferencia entre varios agentes. Cuantos más archivos haya en la carga de trabajo, más beneficios se obtendrán si se agregan más agentes.
Crea un grupo de agentes
Crea un grupo de agentes. Usa tu cuenta de usuario para esta acción.
Instalar agentes
Instala agentes en el grupo de agentes. Usar tu cuenta de agente de transferencia para esta acción.
Consola de Google Cloud
En la consola de Google Cloud, ve a la página Grupos de agentes.
Selecciona el grupo de agentes al que deseas agregar el agente nuevo.
Haz clic en Instalar agente.
Sigue las instrucciones que se muestran para instalar y ejecutar el agente.
Para obtener más información sobre las opciones de línea de comandos del agente, consulta Opciones de línea de comandos del agente.
CLI de gcloud
Para instalar uno o más agentes mediante la CLI de gcloud, ejecuta gcloud transfer agents install
:
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 \
Aquí:
--hdfs-namenode-uri
especifica un clúster de HDFS que incluye un esquema, un nombre de nodo y un puerto en formato URI. Por ejemplo:rpc://my-namenode:8020
http://my-namenode:9870
Usa HTTP o HTTPS para WebHDFS. Si no se proporciona un esquema, suponemos que es RPC. Si no se proporciona un puerto, el valor predeterminado es
8020
para RPC,9870
para HTTP y9871
para HTTPS. Por ejemplo, la entradamy-namenode
se convierte enrpc://my-namenode:8020
.Si tu clúster está configurado con varios namenodes, especifica el nodo principal actual. Consulta Clústeres con varios nombres de nodos para obtener más información.
--hdfs-username
es el nombre de usuario para conectarse a un clúster HDFS con autenticación simple. Omite esta marca si te autenticas con Kerberos o si te conectas sin ninguna autenticación.--hdfs-data-transfer-protection
(opcional) es la calidad del cliente de (QOP) para clústeres con kerber. El valor no puede ser mayor restrictivo que el valor de QOP del servidor. Los valores válidos sonauthentication
,integrity
yprivacy
.
Si autenticas con Kerberos, incluye también las siguientes marcas:
--kerberos-config-file
es la ruta de acceso a un archivo de configuración de Kerberos. Por ejemplo,--kerberos-config-file=/etc/krb5.conf
.--kerberos-user-principal
es el usuario principal de Kerberos que se debe usar. Por ejemplo,--kerberos-user-principal=user1
.--kerberos-keytab-file
es la ruta de acceso a un archivo Keytab que contiene el principal del usuario especificado con la marca--kerberos-user-principal
. Por ejemplo,--kerberos-keytab-file=/home/me/kerberos/user1.keytab
.--kerberos-service-principal
es el servicio principal de Kerberos que se debe usar. con el formato<primary>/<instance>
. El dominio está asignado desde tu cuenta de Kerberos de configuración de Terraform; se ignora cualquier dominio proporcionado. Si no se especifica esta marca, el valor predeterminado eshdfs/<namenode_fqdn>
, donde<namenode_fqdn>
es el nombre de dominio completamente calificado especificado en el archivo de configuración.Por ejemplo,
--kerberos-service-principal=hdfs/my-namenode.a.example.com
.
La herramienta te guía a través de los pasos necesarios para instalar los agentes. Con este comando, se instalan NUM_AGENTS agentes en tu máquina, asignados al nombre del grupo especificado como POOL_NAME, y autentica al agente con tus credenciales gcloud
. El nombre del grupo debe existir o se mostrará un error.
La marca --mount-directories
es opcional, pero se recomienda usarla. Es
es una lista separada por comas de directorios en el sistema de archivos al que
para otorgar acceso al agente.
Si omites esta marca, se activará todo el sistema de archivos en el contenedor del agente. Consulta la referencia de gcloud
para obtener más detalles.
docker run
Antes de usar docker run
para instalar agentes, sigue las instrucciones para instalar Docker.
El comando docker run
instala un agente. Aumentar la cantidad de agentes
en tu grupo, vuelve a ejecutar este comando tantas veces como sea necesario.
Las marcas de comando requeridas dependen del tipo de autenticación que uses.
Kerberos
Para autenticarte en tu sistema de archivos con Kerberos, usa el siguiente comando:
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
Aquí:
- Se debe omitir
--network=host
si ejecutas más de un agente en esta máquina. --hdfs-namenode-uri
: Un esquema, un nodo de nombre y un puerto, en formato URI. que representan un clúster de HDFS. Por ejemplo:rpc://my-namenode:8020
http://my-namenode:9870
Usa HTTP o HTTPS para WebHDFS. Si no se proporciona un esquema, suponemos que es RPC. Si no se proporciona un puerto, el valor predeterminado es 8020
para RPC, 9870
para HTTP y 9871
para HTTPS. Por ejemplo, la entrada my-namenode
se convierte en rpc://my-namenode:8020
.
Si tu clúster está configurado con varios namenodes, especifica el nodo principal actual. Consulta Clústeres con varios nombres de nodos para obtener más información.
--kerberos-config-file
: Es la ruta de acceso a un archivo de configuración de Kerberos. Predeterminada es/etc/krb5.conf
.--kerberos-user-principal
: El principal de usuario de Kerberos--kerberos-keytab-file
: Ruta de acceso a un archivo keytab que contiene al usuario principal especificada con--kerberos-user-principal
.--kerberos-service-principal
: Es el principal de servicio de Kerberos que se usará, del formato "service/instance". El dominio se asigna desde tu archivo de configuración de Kerberos. Se ignora cualquier dominio proporcionado. Si no se especifica esta marca, el valor predeterminado eshdfs/<namenode_fqdn>
, dondefqdn
es el nombre de dominio completamente calificado.
Autenticación simple
Para autenticarte en tu sistema de archivos con la autenticación simple, haz lo siguiente:
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}"
Aquí:
--hdfs-username
: Es el nombre de usuario que se usará cuando te conectes a un clúster de HDFS con autenticación simple.--hdfs-namenode-uri
: Un esquema, un nombre de nodo y un puerto, en formato URI, que representa un clúster de HDFS. Por ejemplo:rpc://my-namenode:8020
http://my-namenode:9870
Usa HTTP o HTTPS para WebHDFS. Si no se proporciona un esquema, se asume que es RPC.
Si no se proporciona ningún puerto, el valor predeterminado es 8020
para RPC, 9870
para HTTP,
y 9871
para HTTPS. Por ejemplo, la entrada my-namenode
se convierte en
rpc://my-namenode:8020
Si tu clúster está configurado con varios namenodes, especifica el nodo principal actual. Consulta Clústeres con varios namenodes para obtener más información.
Sin autenticación
Para conectarte al sistema de archivos sin autenticación, haz lo siguiente:
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 \
Aquí:
--hdfs-namenode-uri
: Un esquema, un nombre de nodo y un puerto, en formato URI, que representa un clúster de HDFS. Por ejemplo:rpc://my-namenode:8020
http://my-namenode:9870
Usa HTTP o HTTPS para WebHDFS. Si no se proporciona un esquema, se asume que es RPC.
Si no se proporciona ningún puerto, el valor predeterminado es 8020
para RPC, 9870
para HTTP,
y 9871
para HTTPS. Por ejemplo, la entrada my-namenode
se convierte en
rpc://my-namenode:8020
Si tu clúster está configurado con varios nombres de nodos, especifica el nodo principal actual. Consulta Clústeres con varios namenodes para obtener más información.
Opciones de transferencia
Las siguientes funciones del Servicio de transferencia de almacenamiento están disponibles para las transferencias de HDFS a Cloud Storage.
Los archivos transferidos desde HDFS no retienen sus metadatos.
Crear una transferencia
No incluyas información sensible, como información de identificación personal (PII) o datos de seguridad en el nombre del trabajo de transferencia. Los nombres de los recursos se pueden propagar a los nombres de otros recursos de Google Cloud y pueden exponerse a sistemas internos de Google fuera de tu proyecto.
El Servicio de transferencia de almacenamiento proporciona múltiples interfaces para crear un de datos entre sitios.
Consola de Google Cloud
Ve a la página Servicio de transferencia de almacenamiento en la consola de Google Cloud.
Haz clic en Crear trabajo de transferencia. Se muestra la página Crea un trabajo de transferencia.
Selecciona Sistema de archivos distribuido de Hadoop como el Tipo de fuente. El el destino debe ser Google Cloud Storage.
Haz clic en Próximo paso.
Configura la fuente
Especifica la información necesaria para esta transferencia:
Selecciona el grupo de agentes que configuraste para esta transferencia.
Ingresa la ruta de acceso desde la que deseas transferir, en relación con el directorio raíz.
De manera opcional, especifica los filtros que se aplicarán a los datos de origen.
Haz clic en Próximo paso.
Configura tu sink
En el campo Bucket o carpeta, ingresa el bucket de destino y el nombre de la carpeta (opcional) o haz clic en Explorar para seleccionar un bucket de una lista de buckets existentes en tu proyecto actual. Para crear un bucket nuevo, haz clic en Crear un bucket nuevo.
Haz clic en Próximo paso.
Programa la transferencia
Puedes programar la transferencia para que se ejecute solo una vez o configurar una transferencia recurrente.
Haz clic en Próximo paso.
Elige la configuración de transferencia
En el campo Descripción, ingresa una descripción de la transferencia. Como práctica recomendada, ingresa una descripción que sea significativa y única para que puedas distinguir los trabajos.
En Opciones de metadatos, selecciona tu clase de almacenamiento de Cloud Storage y si deseas guardar la hora de creación de cada objeto. Consulta Conservación de metadatos para obtener más información.
En Cuándo reemplazar, selecciona una de las siguientes opciones:
Nunca: No reemplaces los archivos de destino. Si existe un archivo con el mismo nombre, no se transferirá.
Si es diferente: Reemplaza los archivos de destino si el archivo de origen con el mismo nombre tiene diferentes ETags o valores de suma de verificación.
Siempre: Siempre escribe archivos de destino cuando el archivo de origen tiene el mismo nombre, incluso si son idénticos.
En Cuándo borrar, selecciona una de las siguientes opciones:
Nunca: Nunca borres archivos de origen o de destino.
Borra los archivos del destino si no están también en el origen: Si los archivos en el bucket de Cloud Storage de destino no están también en el origen, borra los archivos del bucket de Cloud Storage.
Esta opción garantiza que el bucket de destino de Cloud Storage coincida exactamente con tu fuente.
Selecciona si deseas habilitar esta opción registro de transferencia y/o Notificaciones de Pub/Sub.
Haz clic en Crear para crear el trabajo de transferencia.
gcloud CLI
Para crear un nuevo trabajo de transferencia, usa el comando gcloud transfer jobs create
. La creación de un trabajo nuevo inicia la transferencia especificada, a menos que se especifique un programa o --do-not-run
.
gcloud transfer jobs create \
hdfs:///PATH/ gs://BUCKET_NAME/PATH/
--source-agent-pool=AGENT_POOL_NAME
Aquí:
PATH
es una ruta de acceso absoluta desde la raíz del clúster de HDFS. El clúster namenode y el puerto se configuran a nivel del agente, por lo que la creación de trabajos solo necesita especificar la ruta de acceso (opcional) y el grupo de agentes.--source-agent-pool
especifica el grupo de agentes de origen que se usará para esta transferencia.
Las opciones adicionales incluyen:
--do-not-run
evita que el Servicio de transferencia de almacenamiento ejecute el trabajo cuando se envía el comando. Si deseas ejecutar el trabajo, actualízalo para agregar una programación o usajobs run
a fin de iniciarlo de forma manual.--manifest-file
especifica la ruta a un archivo CSV en Cloud Storage, que contiene una lista de archivos para transferir de tu fuente. Para formatear archivos de manifiesto, consulta Transfiere archivos o objetos específicos con un manifiesto.Información del trabajo: puedes especificar
--name
y--description
.Programa: Especifica
--schedule-starts
,--schedule-repeats-every
, y--schedule-repeats-until
o--do-not-run
.Condiciones de objetos: Usa condiciones para determinar qué objetos se transfieren. Estos incluyen
--include-prefixes
y--exclude-prefixes
, y las condiciones basadas en el tiempo en--include-modified-[before | after]-[absolute | relative]
. Si especificaste una carpeta con tu fuente, los filtros de prefijo son relativos a esa carpeta. Consulta Filtra objetos de origen por prefijo para obtener más información. información.Opciones de transferencia: Especifica si deseas reemplazar el destino. archivos (
--overwrite-when=different
oalways
) y si deseas borrar ciertos archivos durante o después de la transferencia (--delete-from=destination-if-unique
osource-after-transfer
); y De manera opcional, establece una clase de almacenamiento en objetos transferidos--custom-storage-class
.Notificaciones: Configura las notificaciones de Pub/Sub para transferencias con
--notification-pubsub-topic
,--notification-event-types
y--notification-payload-format
.
Para ver todas las opciones, ejecuta gcloud transfer jobs create --help
o consulta la documentación de referencia de gcloud
.
API de REST
Para crear una transferencia desde una fuente de HDFS con la API de REST, crea un objeto JSON similar al siguiente ejemplo.
POST https://storagetransfer.googleapis.com/v1/transferJobs
{
...
"transferSpec": {
"source_agent_pool_name":"POOL_NAME",
"hdfsDataSource": {
"path": "/mount"
},
"gcsDataSink": {
"bucketName": "SINK_NAME"
},
"transferOptions": {
"deleteObjectsFromSourceAfterTransfer": false
}
}
}
Consulta la referencia de transferJobs.create
para obtener detalles sobre
campos admitidos adicionales.
Clústeres con varios namenodes
Los agentes del Servicio de transferencia de almacenamiento solo se pueden configurar con un solo nodo de nombres. Si el El clúster de HDFS se configura con varios namenode (“alta disponibilidad”) y hay un evento de conmutación por error que genera un nodo de nombre principal nuevo, vuelve a instalar tus agentes con el namenode correcto.
Para borrar los agentes antiguos, consulta Borra un agente.
El namenode activo del clúster se puede recuperar si ejecutas el siguiente comando:
hdfs haadmin -getAllServiceState