Consulte dados em tempo real em tabelas do Delta Lake ou Apache Hudi em clusters Hadoop usando a arquitetura de data lakehouse do MaxCompute.
Contexto
O MaxCompute oferece suporte aos mecanismos de armazenamento Delta Lake e Apache Hudi por meio de uma arquitetura de data lakehouse executada em clusters Hadoop open source e no Alibaba Cloud E-MapReduce (EMR). A figura a seguir ilustra essa arquitetura.

|
Módulo |
service da alibaba cloud |
Descrição |
|
Hadoop open source |
|
O cluster Hadoop armazena os dados brutos. |
Configurar um data lakehouse em um cluster Hadoop
Pré-requisitos
Você deve ter um projeto do MaxCompute existente que não seja um projeto externo. Para mais informações, consulte Create a MaxCompute project.
Limitações
A solução de data lakehouse baseada em clusters Hadoop apresenta as seguintes limitações:
Este recurso está disponível apenas nas seguintes regiões: China (Hangzhou), China (Shanghai), China (Beijing), China (Shenzhen), China (Hong Kong), Singapore e Germany (Frankfurt).
Procedimento
O exemplo a seguir usa um cluster do Alibaba Cloud E-MapReduce (EMR) para demonstrar como construir um data lakehouse.
-
Step 1: Create an EMR cluster.
Ignore esta etapa se você já tiver um cluster Hadoop implantado em um data center ou em uma máquina virtual.
-
Crie um banco de dados e prepare os dados no cluster.
-
Step 3: Analyze data from the Hadoop cluster in real time by using MaxCompute.
No console do DataWorks, crie um projeto externo para analisar os dados no cluster Hadoop.
Etapa 1: Criar um cluster EMR
-
Crie um cluster Hadoop no console do E-MapReduce.
Para obter detalhes sobre a criação de um cluster Hadoop, consulte Create an EMR cluster. Configure os parâmetros a seguir e mantenha os valores padrão para os demais.
Área de configuração
Parâmetro
Exemplo
Descrição
Configuração de software
Cenário de negócios
Custom Cluster
Selecione um cenário de negócios.
Versão do product
EMR-3.43.0
Selecione uma versão EMR-3.x baseada em Hadoop 2.x e Hive 2.x.
Serviços opcionais
Hadoop-Common, HDFS, Hive, YARN, Spark3, DeltaLake, Hudi, ZooKeeper
Selecione os componentes necessários de Hadoop, HDFS, Hive, Spark, DeltaLake e Hudi. Os service correspondentes aos componentes selecionados são iniciados automaticamente.
Metadados
Built-in MySQL
Selecione Built-in MySQL ou Self-managed RDS.
-
Self-managed RDS: usa uma instância auto gerenciada do ApsaraDB RDS como banco de metadados.
Ao escolher esta opção, configure os parâmetros de conexão do banco de dados. Para mais informações, consulte Configure a self-managed RDS database.
-
Built-in MySQL: armazena metadados no banco de dados MySQL do ambiente local do cluster.
NotaEsta opção é recomendada apenas para testes. Em ambientes de produção, selecione Self-managed RDS.
-
Após criar o cluster, clique em Nodes na coluna Actions do cluster desejado.
Na página Nodes, clique no ID do nó alvo no grupo de nós emr-master para acessar o console do ECS.
-
Escolha uma ferramenta para conectar-se à instância ECS. Para mais informações, consulte Connection methods.
NotaEste tópico usa o Workbench para estabelecer a conexão com a instância. A senha corresponde àquela definida durante a criação do cluster.
Etapa 2: Preparar dados
Após fazer login no cluster, use o Spark SQL para criar tabelas do Delta Lake e do Apache Hudi.
-
O Alibaba Cloud E-MapReduce Hudi 0.8.0 suporta operações de leitura e escrita em tabelas Hudi via Spark SQL. Para mais informações, consulte Integrate Hudi with Spark SQL. O exemplo abaixo usa uma tabela Apache Hudi. Em um terminal, execute o comando a seguir para iniciar o cliente
spark-sql.spark-sql \ --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer' \ --conf 'spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension' -
Depois de entrar no shell
spark-sql, execute os comandos abaixo para criar uma tabela e inserir dados.NotaCaso nenhum banco de dados seja criado, os dados serão armazenados no banco
default.-- Create a table. CREATE TABLE h0 ( id BIGINT, name STRING, price DOUBLE, ts LONG ) USING hudi tblproperties ( primaryKey="id", preCombineField="ts" ); -- Insert data. INSERT INTO h0 VALUES (1, 'a1', 10, 1000); -- Query the table. SELECT id, name, price, ts FROM h0;
Etapa 3: Analisar dados do Hadoop com o MaxCompute
Para analisar dados do seu cluster Hadoop, crie um projeto externo e mapeie-o para o seu projeto existente do MaxCompute. Assim, você pode usar o projeto do MaxCompute para consultar dados no projeto externo. Somente o proprietário do projeto ou um usuário com a função Admin ou Super_Administrator pode criar um projeto externo.
Atribua a função Super_Administrator no nível de tenant na aba Users do console do MaxCompute. Apenas uma conta da Alibaba Cloud ou um usuário RAM que já possua a função Super_Administrator no nível de tenant tem permissão para atribuir funções. Para mais informações, consulte Assign a role to a user.
-
Crie um projeto externo no console do DataWorks.
Faça login no console do DataWorks e selecione uma região.
No painel de navegação à esquerda, escolha .
Na página Lake and Warehouse Integration (Data Lakehouse), clique em Start.
-
Na página Create Data Lakehouse, siga as instruções exibidas na tela.
Tabela 1. Criar Data Lakehouse
Parâmetro
Descrição
External project name
Exemplo:
test_extproject_ddd.MaxCompute project
Exemplo:
test_lakehouse.Tabela 2. Criar uma conexão externa de data lake
Parâmetro
Descrição
Heterogeneous data platform type
Selecione Alibaba Cloud E-MapReduce/Hadoop Cluster.
Network connection
Escolha uma conexão de rede existente. Para mais informações, consulte Create an external data lake connection.
External data source
Selecione uma fonte de dados externa existente. Para mais informações, consulte Create an external data lake connection.
Tabela 3. Criar um mapeamento de dados
Parâmetro
Descrição
External data source object
Este campo é preenchido automaticamente com o valor de External Data Source.
Destination database
Banco de dados de destino no cluster Hadoop.
-
Clique em Complete Creation and Preview e, em seguida, clique em Preview. Uma configuração bem-sucedida permite visualizar as tabelas do banco de dados no cluster Hadoop.
NotaO projeto externo é criado no console do DataWorks. Para gerenciar o projeto externo usando SQL, consulte Use SQL statements to manage an external project.
-
Na página Ad Hoc Query do DataWorks, crie um nó ODPS SQL e visualize as tabelas do projeto externo. Exemplo:
SHOW TABLES IN test_extproject_ddd; -- The following result is returned: ALIYUN$***@test.aliyunid.com:h0NotaPara mais informações sobre como executar consultas ad hoc no DataWorks, consulte Use an ad hoc query node to execute SQL statements (Optional).
-
Na página Ad Hoc Query do DataWorks, consulte dados de uma tabela no projeto externo. Exemplo:
SELECT * FROM test_extproject_ddd.h0; -
Conecte-se ao cluster Hadoop usando o Workbench, acesse o terminal do Spark SQL e execute a instrução a seguir para atualizar dados na tabela h0:
INSERT INTO h0 VALUES (2, 'a2', 11, 1000); -
Na página Ad Hoc Query do DataWorks, verifique a atualização. Exemplo:
SELECT * FROM test_extproject_ddd.h0 WHERE id ='2';
Documentos relacionados
Para construir um data lakehouse com MaxCompute, DLF e OSS, consulte Supporting Delta Lake or Hudi storage mechanisms with DLF, RDS or Flink, and OSS.