Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Migre datos de un entorno Hadoop local a Amazon S3 con DistCp AWS PrivateLink para Amazon S3
Creado por Jason Owens (AWS), Andrés Cantor (AWS), Jeff Klopfenstein (AWS), Bruno Rocha Oliveira (AWS) y Samuel Schmidt (AWS)
Resumen
Este patrón demuestra cómo migrar prácticamente cualquier cantidad de datos desde un entorno Apache Hadoop local a la nube de Amazon Web Services (AWS) mediante la herramienta de código abierto Apache con DistCpAWS for PrivateLink Amazon Simple Storage Service (Amazon S3). En lugar de utilizar la Internet pública o una solución proxy para migrar los datos, puede utilizar AWS PrivateLink para Amazon S3 para migrar los datos a Amazon S3 a través de una conexión de red privada entre su centro de datos local y una Amazon Virtual Private Cloud (Amazon VPC). Si usa entradas de DNS en Amazon Route 53 o añade entradas en el archivo /etc/hosts en todos los nodos del clúster de Hadoop en las instalaciones, se le redirigirá automáticamente al punto de conexión de interfaz correcto.
Esta guía proporciona instrucciones de uso DistCp para migrar datos a la nube de AWS. DistCp es la herramienta más utilizada, pero hay otras herramientas de migración disponibles. Por ejemplo, puede usar herramientas de AWS sin conexión, como AWS Snowball o AWS Snowmobile, o herramientas de AWS en línea, como AWS Storage Gateway o AWS. DataSync Además, puede utilizar otras herramientas de código abierto, como Apache. NiFi
Requisitos previos y limitaciones
Requisitos previos
Una cuenta de AWS activa con una conexión de red privada entre el centro de datos en las instalaciones y la nube de AWS
Hadoop, instalado in situ con DistCp
Un usuario de Hadoop con acceso a los datos de migración en el sistema de archivos distribuido de Hadoop (HDFS)
Interfaz de la línea de comandos de AWS (AWS CLI) instalada y configurada
Permisos para colocar objetos en un bucket de S3
Limitaciones
Las limitaciones de la nube privada virtual (VPC) se aplican a AWS PrivateLink para Amazon S3. Para obtener más información, consulte las propiedades y limitaciones de los puntos de conexión de la interfaz y PrivateLink las cuotas de AWS ( PrivateLink documentación de AWS).
AWS PrivateLink para Amazon S3 no admite lo siguiente:
Arquitectura
Pila de tecnología de origen
Pila de tecnología de destino
Arquitectura de destino
El diagrama muestra cómo el administrador de Hadoop copia datos desde un entorno local DistCp a través de una conexión de red privada, como AWS Direct Connect, a Amazon S3 a través de un punto de enlace de la interfaz Amazon S3.
Servicios de AWS
AWS Identity and Access Management (IAM) le permite administrar de forma segura el acceso a los recursos de AWS mediante el control de quién está autenticado y autorizado a utilizarlos.
Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos basado en la nube que le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.
Amazon Virtual Private Cloud (Amazon VPC) le permite lanzar recursos de AWS en una red virtual que haya definido. Esta red virtual es similar a la red tradicional que utiliza en su propio centro de datos, con los beneficios de usar la infraestructura escalable de AWS.
Otras herramientas
Epics
Tarea | Descripción | Habilidades requeridas |
---|
Cree un punto de conexión para AWS PrivateLink para Amazon S3. | Inicie sesión en la consola de administración de AWS y abra la consola de Amazon VPC. En el panel de navegación, elija Endpoints (puntos de conexión) y, a continuación, elija Create Endpoint (Crear punto de enlace). En Service category, seleccione AWS services. En el campo de búsqueda, escriba s3 y, a continuación, pulse Intro. En los resultados de la búsqueda, elija com.amazonaws. Nombre del servicio < your-aws-region >.s3 donde el valor de la columna Tipo es Interfaz. En VPC, elija su VPC. En Subredes, elija sus subredes. En Grupo de seguridad, elija o cree un grupo de seguridad que permita TCP 443. Añada etiquetas en función de sus necesidades y, a continuación, seleccione Crear punto de conexión.
| Administrador de AWS |
Compruebe los puntos de conexión y busque las entradas de DNS. | Abra la consola de Amazon VPC, elija Puntos de conexión y, a continuación, seleccione el punto de conexión que creó anteriormente. En la pestaña Detalles, busque la primera entrada de DNS en nombres de DNS. Esta es la entrada de DNS regional. Al usar este nombre de DNS, las solicitudes alternan entre las entradas de DNS específicas de las zonas de disponibilidad. Seleccione la pestaña Subredes. Puede encontrar la dirección de la interfaz de red elástica del punto de conexión en cada zona de disponibilidad.
| Administrador de AWS |
Compruebe las reglas del firewall y las configuraciones de enrutamiento. | Para confirmar que las reglas del firewall están abiertas y que la red está configurada correctamente, use Telnet para probar el punto de conexión en el puerto 443. Por ejemplo: $ 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.
Si utiliza la entrada regional, una prueba satisfactoria mostrará que el DNS alterna entre las dos direcciones IP que puede ver en la pestaña Subredes del punto de conexión seleccionado en la consola de Amazon VPC. | Administrador de red, administrador de AWS |
Configure la resolución de nombres. | Debe configurar la resolución de nombres para permitir que Hadoop acceda al punto de conexión de la interfaz Amazon S3. No puede usar el nombre del punto de conexión como tal. En su lugar, debe resolver <your-bucket-name>.s3.<your-aws-region>.amazonaws.com o *.s3.<your-aws-region>.amazonaws.com . Para obtener más información sobre esta limitación de nombres, consulte Presentación del cliente Hadoop S3A (sitio web de Hadoop). Elija una de las siguientes opciones de configuración: Use el DNS en las instalaciones para resolver la dirección IP privada del punto de conexión. Puede anular el comportamiento de todos los buckets o de algunos de ellos. Para obtener más información, consulte «Opción 2: acceder a Amazon S3 mediante zonas de política de respuesta del sistema de nombres de dominio (DNS RPZ)» en Acceso híbrido seguro a Amazon S3 mediante AWS PrivateLink (entrada del blog de AWS). Configure el DNS en las instalaciones para reenviar el tráfico de forma condicional a los puntos de conexión entrantes de la resolución en la VPC. El tráfico se reenvía a Route 53. Para obtener más información, consulte la sección «Opción 3: reenviar solicitudes de DNS desde locales mediante los puntos de enlace entrantes de Amazon Route 53 Resolver» en Acceso híbrido seguro a Amazon S3 mediante AWS (entrada del blog de PrivateLink AWS). Edite el archivo /etc/hosts en todos los nodos de su clúster de Hadoop. Esta es una solución temporal para realizar pruebas, y no se recomienda su uso en producción. Para editar el archivo /etc/hosts, añada una entrada para <your-bucket-name>.s3.<your-aws-region>.amazonaws.com o s3.<your-aws-region>.amazonaws.com . El archivo /etc/hosts no puede tener varias direcciones IP para una entrada. Debe elegir una única dirección IP de una de las zonas de disponibilidad, que luego se convertirá en un único punto de error.
| Administrador de AWS |
Configure la autenticación para Amazon S3. | Para autenticarse en Amazon S3 a través de Hadoop, le recomendamos que exporte las credenciales de rol temporales al entorno de Hadoop. Para obtener más información, consulte Autenticación con S3 (sitio web de Hadoop). En trabajos de larga duración, puede crear un usuario y asignar una política con permisos para colocar datos únicamente en un bucket de S3. La clave de acceso y la clave secreta se pueden almacenar en Hadoop, y solo pueden acceder a ellas el propio DistCp trabajo y el administrador de Hadoop. Para obtener más información sobre el almacenamiento de secretos, consulte Almacenamiento de secretos con los proveedores de credenciales de Hadoop (sitio web de Hadoop). Para obtener más información sobre otros métodos de autenticación, consulte Cómo obtener credenciales de un rol de IAM para su uso con acceso de CLI a una cuenta de AWS en la documentación de AWS IAM Identity Center (sucesor de AWS Single Sign-On). Para usar credenciales temporales, añada las credenciales temporales a su archivo de credenciales o ejecute los siguientes comandos para exportar las credenciales a su entorno: export AWS_SESSION_TOKEN=SECRET-SESSION-TOKEN
export AWS_ACCESS_KEY_ID=SESSION-ACCESS-KEY
export AWS_SECRET_ACCESS_KEY=SESSION-SECRET-KEY
Si tiene una combinación de clave de acceso y clave secreta tradicional, ejecute los siguientes comandos: export AWS_ACCESS_KEY_ID=my.aws.key
export AWS_SECRET_ACCESS_KEY=my.secret.key
Si utiliza una combinación de clave de acceso y clave secreta, cambie el proveedor de credenciales en los DistCp comandos de a. "org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider" "org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider" | Administrador de AWS |
Transfiera datos mediante DistCp. | Para usarlo DistCp para transferir datos, ejecute los siguientes comandos: 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>
La región de AWS del punto de conexión no se detecta automáticamente cuando se utiliza el DistCp comando con AWS PrivateLink para Amazon S3. Hadoop 3.3.2 y las versiones posteriores resuelven este problema habilitando la opción de establecer de forma explícita la región de AWS del bucket de S3. Para obtener más información, consulte S3A para añadir la opción fs.s3a.endpoint.region y establecer la región de AWS (sitio web de Hadoop). Para obtener más información sobre otros proveedores de S3A, consulte Configuración general de cliente S3A (sitio web de Hadoop). Por ejemplo, si usa el cifrado, puede añadir la siguiente opción a la serie de comandos anteriores en función del tipo de cifrado: -Dfs.s3a.server-side-encryption-algorithm=AES-256 [or SSE-C or SSE-KMS]
Para utilizar el punto de enlace de la interfaz con el S3A, debe crear una entrada de alias de DNS para el nombre de la región de S3 (por ejemplos3.<your-aws-region>.amazonaws.com ) en el punto de enlace de la interfaz. Consulte la sección Configurar autenticación para Amazon S3 para obtener más instrucciones. Esta solución alternativa es necesaria para Hadoop 3.3.2 y versiones anteriores. Las versiones futuras de S3A no requieren de esta solución alternativa. Si tiene problemas de firma con Amazon S3, añada una opción para usar Signature Version 4 (SigV4): -Dmapreduce.map.java.opts="-Dcom.amazonaws.services.s3.enableV4=true"
| Ingeniero de migraciones; administrador de AWS |