Após configurar um catálogo do Hive, você pode ler metadados do Hive diretamente no console de desenvolvimento do Realtime Compute for Apache Flink, sem precisar registrar tabelas do Hive manualmente. Isso aumenta a eficiência no desenvolvimento de jobs e garante a precisão dos dados. Este tópico explica como configurar metadados do Hive, além de criar e utilizar um catálogo do Hive.
Contexto
Para configurar um catálogo do Hive no console de desenvolvimento do Realtime Compute for Apache Flink, primeiro armazene o arquivo de configuração do catálogo do Hive e as dependências do Hadoop em um diretório específico no console do Object Storage Service (OSS). Com o catálogo do Hive configurado, é possível usar instruções DML para criar lógica de negócios e recuperar metadados de tabelas do Hive diretamente no console de desenvolvimento, eliminando a necessidade de declarar tabelas com instruções DDL. As tabelas do catálogo do Hive podem funcionar como tabelas de origem ou de resultado tanto para implantações em streaming quanto em lote.
O Realtime Compute for Apache Flink suporta o Hive metastore ou Alibaba Cloud Data Lake Formation (DLF) como centro de metadados para catálogos do Hive. Este tópico descreve as seguintes operações para gerenciar catálogos do Hive:
Pré-requisitos
Para utilizar o Hive MetaStore ou o Alibaba Cloud DLF como centro de gerenciamento de metadados de um Catálogo do Hive, conclua as configurações a seguir:
-
Uso do Hive MetaStore como centro de gerenciamento de metadados de um Catálogo do Hive
Requisito
Descrição
Ative o serviço Hive MetaStore.
Utilize os seguintes comandos:
-
Para iniciar o serviço Hive MetaStore:
hive --service metastore -
Para verificar se o serviço Hive MetaStore está ativado:
netstat -ln | grep 9083A porta padrão do Hive MetaStore é 9083. Caso tenha configurado uma porta diferente no arquivo hive-site.xml, substitua 9083 pelo número correto da porta.
Configure uma lista de permissões no Hive MetaStore para permitir o acesso do Flink.
Para obter os blocos CIDR do Flink, consulte Configure a whitelist. Para configurar a lista de permissões do Hive MetaStore, consulte Add a security group rule.
-
-
Uso do Alibaba Cloud DLF como centro de gerenciamento de metadados de um Catálogo do Hive
Ative o Alibaba Cloud DLF.
Limitações
Metastores do Hive autogerenciados são suportados.
Somente o Ververica Runtime (VVR) 6.x suporta Hive 1.x, 2.1.x e 2.2.x, pois o suporte a essas versões foi descontinuado no Apache Flink 1.16 e posteriores.
Caso um catálogo do Hive utilize o Data Lake Formation (DLF) como metastore, apenas o Ververica Runtime (VVR) 8.0.6 ou posterior permite a criação de tabelas não-Hive.
A gravação de dados no OSS-HDFS é suportada exclusivamente pelo Ververica Runtime (VVR) 8.0.6 ou posterior.
Configurar metadados do Hive
-
Conecte a Virtual Private Cloud (VPC) do cluster Hadoop à VPC do Realtime Compute for Apache Flink.
Conecte as VPCs usando o Alibaba Cloud DNS PrivateZone. Para mais informações, consulte Resolver. Após estabelecer a conexão de rede, o Realtime Compute for Apache Flink utiliza os arquivos de configuração do cluster Hadoop para acessá-lo.
-
Um catálogo do Hive pode usar o Hive MetaStore ou o Data Lake Formation (DLF) para gerenciamento de metadados. As seções a seguir descrevem as configurações necessárias.
Hive MetaStore
Certifique-se de que o parâmetro hive.metastore.uris no arquivo de configuração hive-site.xml esteja definido corretamente.
<property> <name>hive.metastore.uris</name> <value>thrift://xx.yy.zz.mm:9083</value> <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description> </property>No exemplo anterior,
xx.yy.zz.mmrepresenta o endereço IP interno ou público do Hive MetaStore.NotaSe você definir hive.metastore.uris como um nome de host, será necessário configurar um serviço de resolução de nomes de domínio. Caso contrário, quando o console de desenvolvimento do Flink acessar o Hive remotamente, o valor do parâmetro hive.metastore.uris não poderá ser resolvido, resultando no erro
UnknownHostException. Para mais informações sobre como configurar um serviço de resolução de nomes de domínio, consulte Add a PrivateZone record.Data Lake Formation (DLF)
Para permitir que o catálogo do Hive acesse o DLF, adicione as seguintes propriedades ao arquivo de configuração hive-site.xml.
NotaSe o seu arquivo hive-site.xml contiver a propriedade dlf.catalog.akMode, você deverá excluí-la. Caso contrário, o catálogo do Hive não conseguirá acessar o DLF.
<property> <name>hive.imetastoreclient.factory.class</name> <value>com.aliyun.datalake.metastore.hive2.DlfMetaStoreClientFactory</value> </property> <property> <name>dlf.catalog.uid</name> <value>${YOUR_DLF_CATALOG_UID}</value> </property> <property> <name>dlf.catalog.endpoint</name> <value>${YOUR_DLF_ENDPOINT}</value> </property> <property> <name>dlf.catalog.region</name> <value>${YOUR_DLF_CATALOG_REGION}</value> </property> <property> <name>dlf.catalog.accessKeyId</name> <value>${YOUR_ACCESS_KEY_ID}</value> </property> <property> <name>dlf.catalog.accessKeySecret</name> <value>${YOUR_ACCESS_KEY_SECRET}</value> </property>Parâmetro
Descrição
Observações
dlf.catalog.uid
O ID da sua conta Alibaba Cloud.
Para consultar as informações da sua conta, acesse a página User Information.
dlf.catalog.endpoint
O endpoint do serviço DLF.
Para mais informações, consulte Regions and endpoints.
Nota-
Recomendamos definir o parâmetro dlf.catalog.endpoint como o endpoint de VPC do DLF. Por exemplo, se a região selecionada for China (Hangzhou), defina o parâmetro dlf.catalog.endpoint como dlf-vpc.cn-hangzhou.aliyuncs.com.
-
Para acessar o DLF entre diferentes VPCs, consulte How do I access services across VPCs?.
dlf.catalog.region
A região do serviço DLF.
Para mais informações, consulte Regions and endpoints.
NotaGaranta que esta região corresponda àquela especificada no parâmetro dlf.catalog.endpoint.
dlf.catalog.accessKeyId
O AccessKey ID da sua conta Alibaba Cloud.
Para mais informações, consulte Obtain an AccessKey pair.
dlf.catalog.accessKeySecret
O AccessKey secret da sua conta Alibaba Cloud.
Para mais informações, consulte Obtain an AccessKey pair.
-
-
Um catálogo do Hive pode armazenar tabelas no Object Storage Service (OSS) ou no serviço OSS-HDFS. As seções a seguir detalham as configurações necessárias.
OSS
Para permitir que o catálogo do Hive acesse o OSS, adicione as seguintes propriedades ao arquivo de configuração hive-site.xml.
<property> <name>fs.oss.impl.disable.cache</name> <value>true</value> </property> <property> <name>fs.oss.impl</name> <value>org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem</value> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>${YOUR_OSS_WAREHOUSE_DIR}</value> </property> <property> <name>fs.oss.endpoint</name> <value>${YOUR_OSS_ENDPOINT}</value> </property> <property> <name>fs.oss.accessKeyId</name> <value>${YOUR_ACCESS_KEY_ID}</value> </property> <property> <name>fs.oss.accessKeySecret</name> <value>${YOUR_ACCESS_KEY_SECRET}</value> </property> <property> <name>fs.defaultFS</name> <value>oss://${YOUR_OSS_BUCKET_DOMIN}</value> </property>A tabela a seguir descreve os parâmetros.
Parâmetro
Descrição
Observações
hive.metastore.warehouse.dir
O caminho de armazenamento para os dados da tabela.
fs.oss.endpoint
O endpoint do Object Storage Service (OSS).
Para mais informações, consulte Regions and endpoints.
fs.oss.accessKeyId
O AccessKey ID da sua conta Alibaba Cloud.
Para mais informações, consulte Obtain an AccessKey pair.
fs.oss.accessKeySecret
O AccessKey secret da sua conta Alibaba Cloud.
Para mais informações, consulte Obtain an AccessKey pair.
fs.defaultFS
O sistema de arquivos padrão para os dados da tabela.
Certifique-se de que o valor seja o nome de domínio do serviço HDFS do bucket de destino. Exemplo:
oss://oss-hdfs-bucket.cn-hangzhou.oss-dls.aliyuncs.com/.OSS-HDFS
-
Para permitir que o catálogo do Hive acesse o serviço OSS-HDFS, adicione as seguintes propriedades ao arquivo de configuração hive-site.xml.
<property> <name>fs.jindo.impl</name> <value>com.aliyun.jindodata.jindo.JindoFileSystem</value> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>${YOUR_OSS_WAREHOUSE_DIR}</value> </property> <property> <name>fs.oss.endpoint</name> <value>${YOUR_OSS_ENDPOINT}</value> </property> <property> <name>fs.oss.accessKeyId</name> <value>${YOUR_ACCESS_KEY_ID}</value> </property> <property> <name>fs.oss.accessKeySecret</name> <value>${YOUR_ACCESS_KEY_SECRET}</value> </property> <property> <name>fs.defaultFS</name> <value>oss://${YOUR_OSS_HDFS_BUCKET_DOMIN}</value> </property>Parâmetro
Descrição
Observações
hive.metastore.warehouse.dir
O caminho de armazenamento para os dados da tabela.
fs.oss.endpoint
O endpoint do Object Storage Service (OSS).
Para mais informações, consulte Regions and endpoints.
fs.oss.accessKeyId
O AccessKey ID da sua conta Alibaba Cloud.
Para mais informações, consulte Obtain an AccessKey pair.
fs.oss.accessKeySecret
O AccessKey secret da sua conta Alibaba Cloud.
Para mais informações, consulte Obtain an AccessKey pair.
fs.defaultFS
O sistema de arquivos padrão para os dados da tabela.
Certifique-se de que o valor seja o nome de domínio do serviço HDFS do bucket de destino. Exemplo:
oss://oss-hdfs-bucket.cn-hangzhou.oss-dls.aliyuncs.com/. -
(Opcional) Para ler tabelas do Hive formatadas em Parquet a partir do serviço OSS-HDFS, adicione os seguintes parâmetros ao arquivo de configuração do Realtime Compute for Apache Flink:
fs.oss.jindo.accessKeyId: ${YOUR_ACCESS_KEY_ID} fs.oss.jindo.accessKeySecret: ${YOUR_ACCESS_KEY_SECRET} fs.oss.jindo.endpoint: ${YOUR_JINODO_ENDPOINT} fs.oss.jindo.buckets: ${YOUR_JINDO_BUCKETS}Para mais detalhes sobre os parâmetros, consulte Write data to OSS-HDFS.
NotaSe você utilizar o recurso de armazenamento totalmente gerenciado do Realtime Compute for Apache Flink, não será necessário executar as etapas a seguir. Prossiga diretamente para Create a Hive catalog.
-
-
No console do OSS, crie diretórios e carregue os arquivos de configuração do Hive e as dependências do Hadoop nos caminhos de destino.
Faça login no console do OSS.
No painel de navegação à esquerda, clique em Buckets.
Clique no nome do bucket desejado.
-
No caminho oss://${bucket}/artifacts/namespaces/${ns}/, crie um diretório chamado ${hms}.
Para mais informações sobre como criar um diretório no console do OSS, consulte Create directories. A tabela abaixo descreve as variáveis presentes no caminho.
Parâmetro
Descrição
${bucket}
O nome do bucket utilizado pelo Realtime Compute for Apache Flink.
${ns}
O workspace onde você utilizará o catálogo do Hive.
${hms}
Recomendamos usar o mesmo nome do catálogo do Hive que você pretende criar.
NotaAo ativar um workspace, o Realtime Compute for Apache Flink cria automaticamente o diretório /artifacts/namespaces/${ns}/ no bucket especificado para armazenar dados como pacotes JAR. Se não encontrar esse diretório no console do OSS, acesse a página Artifacts no console de desenvolvimento e carregue um arquivo para acionar a criação do diretório.
-
No caminho oss://${bucket}/artifacts/namespaces/${ns}/${hms}, crie dois diretórios: hive-conf-dir e hadoop-conf-dir. Para mais informações, consulte Create directories.
Armazene os seguintes arquivos nos diretórios hive-conf-dir e hadoop-conf-dir:
O diretório oss://${bucket}/artifacts/namespaces/${ns}/${hms}/hive-conf-dir/ armazena o arquivo de configuração do Hive hive-site.xml.
O diretório oss://${bucket}/artifacts/namespaces/${ns}/${hms}/hadoop-conf-dir/ armazena arquivos de configuração do Hadoop, incluindo core-site.xml, hdfs-site.xml, yarn-site.xml e mapred-site.xml.
Após criar os diretórios, você poderá visualizá-los e copiar suas URLs do OSS na página Files.
Carregue seu arquivo de configuração do Hive (hive-site.xml) no diretório hive-conf-dir. Para mais informações, consulte Upload objects.
-
Carregue os seguintes arquivos de configuração no diretório hadoop-conf-dir. Para mais informações, consulte Upload objects.
core-site.xml
hdfs-site.xml
mapred-site.xml
Outros arquivos, como pacotes compactados utilizados por jobs do Hive.
Criar um catálogo do Hive
Depois de configurar os metadados do Hive, você poderá criar um catálogo do Hive. É possível criar um catálogo pela interface gráfica ou executando comandos SQL. Recomendamos o uso da interface gráfica.
UI
-
Acesse a página Catalogs.
Faça login no console do Realtime Compute for Apache Flink. Na coluna Actions do workspace desejado, clique em Console.
No painel de navegação à esquerda, clique em Catalogs.
Clique em Create Catalog. Na página exibida, selecione Hive e clique em Next.
-
Configure os parâmetros.
ImportanteNão é possível modificar os parâmetros de configuração após a criação do catálogo. Para fazer alterações, você deve excluir o catálogo existente e criar um novo.
Parâmetro
Descrição
Catalog name
O nome do catálogo do Hive.
hive-version
A versão do metastore do Hive.
O Realtime Compute for Apache Flink suporta as versões 2.0.0 a 2.3.9 e 3.1.0 a 3.1.3 do Hive. Ao criar um catálogo do Hive, defina o parâmetro hive-version da seguinte forma:
-
Para Hive 2.0.x e 2.1.x, defina este parâmetro como 2.2.0.
-
Para Hive 2.2.x, 2.3.x e 3.1.x, defina este parâmetro como 2.2.0, 2.3.6 e 3.1.2, respectivamente.
default-database
O nome do banco de dados padrão.
hive-conf-dir
-
OSS: O diretório onde os arquivos de configuração do Hive estão armazenados. Você deve criar o diretório
hive-conf-dirantecipadamente. Para mais informações, consulte Configure Hive metadata. -
Armazenamento totalmente gerenciado: Carregue os arquivos correspondentes conforme solicitado no console.
hadoop-conf-dir
-
OSS: O diretório onde as dependências do Hadoop estão armazenadas. Você deve criar o diretório
hadoop-conf-dirantecipadamente. Para mais informações, consulte Configure Hive metadata. -
Armazenamento totalmente gerenciado: Carregue os arquivos correspondentes conforme solicitado no console.
hive-kerberos
Ativa a autenticação Kerberos. É necessário configurar o cluster Kerberos registrado e o principal. Se você ainda não registrou um cluster Kerberos, consulte Register a Kerberized Hive cluster.
-
Clique em Confirm.
Na seção Catalogs à esquerda, visualize o catálogo criado.
SQL
-
No editor da página Scripts, insira a seguinte instrução.
CREATE CATALOG ${HMS Name} WITH ( 'type' = 'hive', 'default-database' = 'default', 'hive-version' = '<hive-version>', 'hive-conf-dir' = '<hive-conf-dir>', 'hadoop-conf-dir' = '<hadoop-conf-dir>' );Parâmetro
Descrição
${HMS Name}
O nome do catálogo do Hive.
type
O tipo de conector. O valor deve ser hive.
default-database
O nome do banco de dados padrão.
hive-version
A versão do metastore do Hive.
O Realtime Compute for Apache Flink suporta as versões 2.0.0 a 2.3.9 e 3.1.0 a 3.1.3 do Hive. Ao criar um catálogo do Hive, defina o parâmetro hive-version da seguinte forma:
-
Para Hive 2.0.x e 2.1.x, defina este parâmetro como 2.2.0.
-
Para Hive 2.2.x, 2.3.x e 3.1.x, defina este parâmetro como 2.2.0, 2.3.6 e 3.1.2, respectivamente.
hive-conf-dir
O diretório onde os arquivos de configuração do Hive estão armazenados. Você deve criar o diretório
hive-conf-dirantecipadamente. Para mais informações, consulte Configure Hive metadata.hadoop-conf-dir
O diretório onde as dependências do Hadoop estão armazenadas. Você deve criar o diretório
hadoop-conf-dirantecipadamente. Para mais informações, consulte Configure Hive metadata. -
-
Selecione a instrução CREATE CATALOG e clique em Run à esquerda dos números de linha.
Após configurar o catálogo do Hive, você pode referenciar suas tabelas nos jobs como tabelas de resultado e tabelas de dimensão sem declará-las em instruções DDL. O nome da tabela deve estar no formato ${hive-catalog-name}.${hive-db-name}.${hive-table-name}.
Para parar de usar o catálogo do Hive, consulte Drop a Hive catalog.
Usar um catálogo Hive
Criar uma tabela Hive
UI
-
Acesse a página Catalogs.
Faça login no console do Realtime Compute for Apache Flink. Na coluna Actions do workspace desejado, clique em Console.
No painel de navegação à esquerda, clique em Catalogs.
Localize o catálogo desejado e clique em View na coluna Actions.
Encontre o banco de dados desejado e clique em View na coluna Actions.
Clique em Create Table.
Na aba Built-in, selecione um conector e clique em Next.
-
Insira a instrução CREATE TABLE e configure seus parâmetros.
CREATE TABLE `${catalog_name}`.`${db_name}`.`${table_name}` ( id INT, name STRING ) WITH ( 'connector' = 'hive' ); Clique em OK.
Comandos SQL
-
No editor Scripts, insira o seguinte comando:
CREATE TABLE `${catalog_name}`.`${db_name}`.`${table_name}` ( id INT, name STRING ) WITH ( 'connector' = 'hive' ); Selecione a instrução e clique em Run à esquerda dos números de linha.
Exemplo:
-- Create the flink_hive_test table in the flinkhive database of the flinkexporthive catalog.
CREATE TABLE `flinkexporthive`.`flinkhive`.`flink_hive_test` (
id INT,
name STRING
) WITH (
'connector' = 'hive'
);
Modificar uma tabela Hive
No editor Scripts, insira os seguintes comandos.
-- Add a column to the Hive table.
ALTER TABLE `${catalog_name}`.`${db_name}`.`${table_name}`
ADD column type-column;
-- Drop a column from the Hive table.
ALTER TABLE `${catalog_name}`.`${db_name}`.`${table_name}`
DROP column;
Exemplo:
-- Add the color column to the Hive table.
ALTER TABLE `flinkexporthive`.`flinkhive`.`flink_hive_test`
ADD color STRING;
-- Drop the color column from the Hive table.
ALTER TABLE `flinkexporthive`.`flinkhive`.`flink_hive_test`
DROP color;
Ler dados de uma tabela Hive
INSERT INTO ${other_sink_table}
SELECT ...
FROM `${catalog_name}`.`${db_name}`.`${table_name}`;
Gravar dados em uma tabela Hive
INSERT INTO `${catalog_name}`.`${db_name}`.`${table_name}`
SELECT ...
FROM ${other_source_table};
Excluir uma tabela Hive
UI
-
Acesse a página Catalogs.
Faça login no console do Realtime Compute for Apache Flink. Na coluna Actions do workspace desejado, clique em Console.
No painel de navegação à esquerda, clique em Catalogs.
No painel Catalogs, expanda o catálogo e o banco de dados desejados e clique na tabela que você deseja excluir.
Na página de detalhes da tabela, clique em Delete Table.
Na caixa de diálogo de confirmação, clique em OK.
Comandos SQL
No editor Scripts, insira o seguinte comando:
-- Drop the Hive table.
DROP TABLE `${catalog_name}`.`${db_name}`.`${table_name}`;
Exemplo:
-- Drop the Hive table.
DROP TABLE `flinkexporthive`.`flinkhive`.`flink_hive_test`;
Visualizar catálogo Hive
-
Acesse a página Catalogs.
Faça login no console do Realtime Compute for Apache Flink.
Na coluna Actions do workspace de destino, clique em Console.
Clique em Catalogs.
-
Na página Catalog List, verifique as colunas Name e Type.
NotaPara visualizar os bancos de dados e tabelas de um catálogo, clique em View na coluna Actions.
Excluir um catálogo Hive
A exclusão de um catálogo Hive não afeta deployments em execução. No entanto, isso impacta deployments offline ou quaisquer outros que precisem ser pausados e retomados. Prossiga com cautela.
UI
-
Acesse a página Catalog List.
Faça login no console do Realtime Compute for Apache Flink e, na coluna Actions do workspace de destino, clique em Console.
Clique em Catalogs.
Na página Catalog List, localize o catálogo que deseja excluir e clique em Delete na coluna Actions.
Na caixa de diálogo de confirmação, clique em Delete.
Na área Catalogs à esquerda, verifique se o catálogo foi removido.
Comando SQL
-
No editor script, insira o seguinte comando.
DROP CATALOG ${HMS Name};Neste comando, ${HMS Name} é o nome do catálogo Hive a ser excluído.
Selecione o comando, clique com o botão direito e selecione Run.
Na área Catalogs à esquerda, verifique se o catálogo foi removido.