Los clústeres de E-MapReduce (EMR) con versión 3.42 o posterior, o versión 5.8.0 o posterior, admiten OSS-HDFS (JindoFS) como almacén de datos. OSS-HDFS ofrece aceleración de caché y autenticación mediante Ranger, lo que mejora el rendimiento y simplifica la migración de HDFS en escenarios ETL de big data que utilizan Hive o Spark. Este tema describe cómo usar Hive o Spark en un clúster de EMR para acceder a los datos en OSS-HDFS.
Contexto
OSS-HDFS es un servicio de almacenamiento de lagos de datos nativo de la nube. Gracias a su gestión unificada de metadatos, es totalmente compatible con la interfaz del sistema de archivos HDFS y proporciona soporte integral para POSIX. Esto lo hace ideal para una amplia variedad de escenarios de computación de lagos de datos en big data e IA. Para obtener más información, consulte What is OSS-HDFS?.
Requisitos previos
Debe haber creado un clúster de EMR. Para obtener más información, consulte Create a cluster.
Procedimiento
Paso 1: Habilitar OSS-HDFS
Habilite OSS-HDFS y otorgue los permisos de acceso obligatorios. Para obtener más información, consulte Enable OSS-HDFS.
Paso 2: Obtener el endpoint de OSS-HDFS
En la página
Overview
de su bucket en la consola de OSS, dentro de la sección
Access Domain Names
, copie el endpoint de la fila
HDFS Service
. Necesitará este endpoint para crear una tabla de Hive en
Step 3: Use OSS-HDFS in an EMR cluster
. El formato del endpoint es
<Bucket-name>.<region>.oss-dls.aliyuncs.com
.
Paso 3: Usar OSS-HDFS en un clúster de EMR
Este tema utiliza Hive como ejemplo para demostrar cómo operar con datos en OSS-HDFS. Puede seguir pasos similares para realizar las mismas operaciones con Spark.
Inicie sesión en el clúster. Para obtener más información, consulte Log on to a cluster.
-
Cree una tabla de Hive que apunte a OSS-HDFS.
-
Ejecute el siguiente comando para ingresar a la línea de comandos de Hive.
hive -
Ejecute el siguiente comando para crear una base de datos que apunte a OSS-HDFS.
CREATE DATABASE if not exists dw LOCATION 'oss://<your-oss-hdfs-endpoint>/<path>';NotaEn el comando anterior,
dwes el nombre de la base de datos,<path>es una ruta arbitraria y<your-oss-hdfs-endpoint>es el endpoint de OSS-HDFS que obtuvo en Step 2: Obtain the OSS-HDFS endpoint.Este ejemplo utiliza el endpoint de OSS-HDFS como prefijo de ruta. Si desea apuntar a OSS-HDFS usando únicamente el nombre del bucket, puede configurar un endpoint a nivel de bucket o global. Para obtener más información, consulte Connect to OSS-HDFS from a non-EMR cluster.
-
Ejecute el siguiente comando para usar la nueva base de datos.
use dw; -
Ejecute el siguiente comando para crear una tabla en la nueva base de datos.
CREATE TABLE IF NOT EXISTS employee(eid int, name String,salary String,destination String) COMMENT 'Employee details'; -
Ejecute el siguiente comando para consultar la información de la tabla.
desc formatted employee;Se devuelve el siguiente resultado. El campo
Location
muestra que la tabla apunta a una ruta en OSS-HDFS.
# col_name data_type comment eid int name string salary string destination string # Detailed Table Information Database: dw Owner: root CreateTime: Fri May 06 16:40:06 CST 2022 LastAccessTime: UNKNOWN Retention: 0 Location: oss://****.cn-hangzhou.oss-dls.aliyuncs.com/dw/employee Table Type: MANAGED_TABLE
-
-
Inserte datos en la tabla.
Utilice la sentencia INSERT INTO para escribir datos en la tabla. Esta sentencia genera un trabajo de MapReduce.
INSERT INTO employee(eid, name, salary, destination) values(1, 'John Doe', '100.0', ''); -
Compruebe los datos de la tabla.
SELECT * FROM employee WHERE eid = 1;El resultado incluye los datos que insertó.
OK 1 John Doe 100.0 Time taken: 12.379 seconds, Fetched: 1 row(s)
Autorizar el clúster de EMR
Si su clúster de EMR no utiliza el rol de RAM de instancia predeterminado AliyunECSInstanceForEMRRole, debe otorgar permisos al clúster.
El rol de RAM de instancia AliyunECSInstanceForEMRRole está asociado con la política AliyunECSInstanceForEMRRolePolicy, que incluye el permiso oss:PostDataLakeStorageFileOperation de forma predeterminada. Por lo tanto, los clústeres que utilizan el rol predeterminado pueden acceder a OSS-HDFS sin necesidad de autorización adicional.