Clusters E-MapReduce (EMR) com versão 3,42 ou posterior, ou versão 5.8.0 ou posterior, suportam o OSS-HDFS (JindoFS) como armazenamento de dados. O OSS-HDFS oferece aceleração de cache e autenticação Ranger, o que melhora o desempenho e simplifica a migração do HDFS para cenários de ETL de big data com Hive ou Spark. Este tópico descreve como usar o Hive ou o Spark em um cluster EMR para acessar dados no OSS-HDFS.
Informações básicas
O OSS-HDFS é um serviço de armazenamento de data lake nativo da nuvem. Com gerenciamento unificado de metadados, ele é totalmente compatível com a interface do sistema de arquivos HDFS e fornece suporte abrangente ao POSIX. Essas características o tornam ideal para diversos cenários de computação de data lake em big data e IA. Para obter mais informações, consulte O que é o OSS-HDFS?.
Pré-requisitos
Crie um cluster EMR. Para obter mais informações, consulte Criar um cluster.
Procedimento
Etapa 1: Ativar o OSS-HDFS
Ative o OSS-HDFS e conceda as permissões de acesso necessárias. Para obter mais informações, consulte Ativar o OSS-HDFS.
Etapa 2: Obter o endpoint do OSS-HDFS
Na página
Overview
do seu bucket no console OSS, localize a seção
Access Domain Names
e copie o endpoint da linha
HDFS Service
. Esse endpoint é necessário para criar uma tabela Hive na
Etapa 3: Usar o OSS-HDFS em um cluster EMR
. O formato do endpoint é
<Bucket-name>.<region>.oss-dls.aliyuncs.com
.
Etapa 3: Usar o OSS-HDFS em um cluster EMR
Este tópico usa o Hive como exemplo para demonstrar como operar dados no OSS-HDFS. Siga etapas semelhantes para realizar o mesmo procedimento com o Spark.
Faça logon no cluster. Para obter mais informações, consulte Fazer logon em um cluster.
-
Crie uma tabela Hive que aponte para o OSS-HDFS.
-
Execute o comando a seguir para entrar na linha de comando do Hive.
hive -
Execute o comando a seguir para criar um banco de dados que aponte para o OSS-HDFS.
CREATE DATABASE if not exists dw LOCATION 'oss://<your-oss-hdfs-endpoint>/<path>';NotaNo comando anterior,
dwé o nome do banco de dados,<path>é um caminho arbitrário e<your-oss-hdfs-endpoint>é o endpoint do OSS-HDFS obtido na Etapa 2: Obter o endpoint do OSS-HDFS.Este exemplo usa o endpoint do OSS-HDFS como prefixo de caminho. Caso prefira apontar para o OSS-HDFS usando apenas o nome do bucket, configure um endpoint no nível do bucket ou global. Para mais detalhes, consulte Conectar-se ao OSS-HDFS a partir de um cluster não EMR.
-
Execute o comando a seguir para usar o novo banco de dados.
use dw; -
Execute o comando a seguir para criar uma tabela no novo banco de dados.
CREATE TABLE IF NOT EXISTS employee(eid int, name String,salary String,destination String) COMMENT 'Employee details'; -
Execute o comando a seguir para visualizar as informações da tabela.
desc formatted employee;A saída retornada será semelhante à mostrada abaixo. O campo
Location
indica que a tabela aponta para um caminho no 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
-
-
Insira dados na tabela.
Use a instrução INSERT INTO para gravar dados na tabela. Essa instrução gera um job MapReduce.
INSERT INTO employee(eid, name, salary, destination) values(1, 'John Doe', '100.0', ''); -
Verifique os dados da tabela.
SELECT * FROM employee WHERE eid = 1;A saída inclui os dados inseridos.
OK 1 John Doe 100.0 Time taken: 12.379 seconds, Fetched: 1 row(s)
Autorizar o cluster EMR
Se o seu cluster EMR não usar a função RAM de instância padrão AliyunECSInstanceForEMRRole, conceda permissões ao cluster.
A função RAM de instância AliyunECSInstanceForEMRRole está associada à política AliyunECSInstanceForEMRRolePolicy, que inclui a permissão oss:PostDataLakeStorageFileOperation por padrão. Portanto, clusters que usam a função padrão podem acessar o OSS-HDFS sem autorização adicional.