Conecte-se ao Hive no E-MapReduce usando o cliente Hive, Beeline ou JDBC.
Pré-requisitos
-
Crie um cluster com o service Hive habilitado (por exemplo, DataLake ou Custom) e ative a chave Assign Public Network IP do nó mestre para permitir login remoto. Para mais informações sobre como criar clusters, consulte Create a cluster.
Clusters comuns: clusters sem Kerberos Authentication ou High Service Availability habilitados.
Clusters de alta segurança: clusters criados com a chave Kerberos Authentication ativada.
Clusters de alta disponibilidade: clusters criados com a chave High Service Availability ativada. Ao criar um cluster de alta disponibilidade, selecione também o service ZooKeeper.
Faça login no nó mestre do cluster. Para mais informações, consulte Log on to a cluster.
Observações
-
master-1-1e<Master node public IP address>: nome do host e endereço IP público do nó mestre. Essas informações estão disponíveis na página Nodes do cluster no console EMR. Para mais detalhes, consulte Log on to a cluster.Geralmente, o nome do host do nó mestre é master-1-1. Se o cluster for Hadoop, o nome do host será emr-header-1.
Por padrão, o HiveServer2 não valida nomes de usuário e senhas. Para habilitar essa autenticação, ative a autenticação LDAP. Para mais informações, consulte Use LDAP authentication.
Procedimento
Clusters comuns
Conexão via cliente Hive
-
Execute o comando a seguir para conectar-se ao Hive.
hive Opcional: execute
quit;ouexit;para sair do Hive.
Conexão via cliente Beeline
-
Execute o comando a seguir para conectar-se ao Hive.
beeline -u jdbc:hive2://master-1-1:10000 Opcional: execute
!quitou!exitpara sair do Beeline.
Conexão via JDBC
Certifique-se de ter instalado um ambiente Java e ferramentas de desenvolvimento, além de configurar as variáveis de ambiente correspondentes.
-
Configure as dependências do projeto (hadoop-common e hive-jdbc) no arquivo
pom.xml. Exemplo:<dependencies> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>3.1.3</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>3.2.1</version> </dependency> </dependencies>Verifique se as versões do hadoop-common e do hive-jdbc correspondem às versões do Hadoop-Common e do Hive no seu cluster EMR. Visualize essas informações na aba Basic Information, na seção Software Information do cluster de destino no console EMR.
-
Escreva o código para conectar-se ao HiveServer2 e operar dados das tabelas Hive. Código de exemplo:
import java.sql.*; public class App { private static String driverName = "org.apache.hive.jdbc.HiveDriver"; public static void main(String[] args) throws SQLException { try { Class.forName(driverName); } catch (ClassNotFoundException e) { e.printStackTrace(); } Connection con = DriverManager.getConnection( "jdbc:hive2://<Master node public IP address>:10000", "root", ""); Statement stmt = con.createStatement(); String sql = "select * from sample_tbl limit 10"; ResultSet res = stmt.executeQuery(sql); while (res.next()) { System.out.println(res.getString(1) + "\t" + res.getString(2)); } } }NotaEste método exige que a porta 10000 esteja aberta. Para mais informações, consulte Manage security groups.
-
Compile o projeto para gerar um arquivo JAR e envie-o para o ambiente de execução.
ImportanteO arquivo JAR depende do hadoop-common e do hive-jdbc. Se essas dependências não estiverem disponíveis no ambiente de execução, baixe-as e configure-as ou inclua-as no pacote do arquivo JAR. A ausência de qualquer uma das dependências resultará em um dos seguintes erros:
Falta do hadoop-common:
java.lang.NoClassDefFoundError: org/apache/hadoop/conf/ConfigurationFalta do hive-jdbc:
java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver
Neste exemplo, o arquivo JAR gerado chama-se
emr-hiveserver2-1.0.jar. Envie este arquivo JAR para o nó mestre do seu cluster E-MapReduce. -
Teste se o arquivo JAR executa corretamente.
ImportanteO servidor que executa o arquivo JAR e o cluster E-MapReduce devem estar na mesma VPC e no mesmo grupo de segurança. Se estiverem em VPCs ou ambientes de rede diferentes, conecte-se pelo endereço IP público ou use produtos de rede da Alibaba Cloud para estabelecer conectividade interna. Para testar a conectividade de rede:
Rede pública:
telnet public IP address of master-1-1 10000Rede privada:
telnet private IP address of master-1-1 10000
java -jar emr-hiveserver2-1.0.jar
Clusters de alta segurança
Conexão via cliente Hive
-
Execute o comando a seguir para iniciar a ferramenta Kerberos admin.local.
-
Se você fez login no nó master-1-1, onde o servidor Kerberos Key Distribution Center (KDC) roda como usuário
root, execute o comando a seguir para acessar diretamente a ferramenta de administração.kadmin.localA saída a seguir indica que você entrou na interface de linha de comando
kadmin.local:Authenticating as principal hadoop/admin@EMR.C-85D4B8D74296****.COM with password. kadmin.local: -
Se o login for feito em outro nó ou via gateway, execute este comando para acessar a ferramenta de administração.
kadmin -p <admin-user> -w <admin-password>NotaAo usar o KDC fornecido pelo E-MapReduce, observe os seguintes parâmetros:
<admin-user>: o valor é fixo comoroot/admin.<admin-password>: no console E-MapReduce, acesse a aba Configure do service Kerberos para obter o valor do parâmetro admin_pwd.
A saída a seguir confirma a entrada na interface de linha de comando
kadmin:Authenticating as principal root/admin with password. kadmin:
-
-
Execute o comando a seguir para criar um principal chamado
test.Neste exemplo, a senha é
123456.addprinc -pw 123456 testA saída a seguir indica que o principal foi criado com sucesso:
Principal "test@EMR.C-85D4B8D74296****.COM" created.NotaAnote o nome de usuário e a senha. Eles serão necessários para criar um ticket-granting ticket (TGT).
Execute o comando
quitpara sair da ferramenta Kerberos admin.local. -
Faça login na máquina onde deseja executar o cliente Hive e execute os comandos a seguir para criar e alternar para o usuário
test.useradd test su test -
Execute o comando a seguir para criar um TGT.
kinitPressione Enter e insira a senha do usuário
test. Neste exemplo, a senha é123456. -
Execute o comando
hivepara acessar o cliente Hive.hive
Conexão via cliente Beeline
-
Execute o comando a seguir para iniciar a ferramenta Kerberos admin.local.
-
Se você fez login no nó master-1-1, onde o servidor Kerberos Key Distribution Center (KDC) roda como usuário
root, execute o comando a seguir para acessar diretamente a ferramenta de administração.kadmin.localA saída a seguir indica que você entrou na interface de linha de comando
kadmin.local:Authenticating as principal hadoop/admin@EMR.C-85D4B8D74296****.COM with password. kadmin.local: -
Se o login for feito em outro nó ou via gateway, execute este comando para acessar a ferramenta de administração.
kadmin -p <admin-user> -w <admin-password>NotaAo usar o KDC fornecido pelo E-MapReduce, observe os seguintes parâmetros:
<admin-user>: o valor é fixo comoroot/admin.<admin-password>: no console E-MapReduce, acesse a aba Configure do service Kerberos para obter o valor do parâmetro admin_pwd.
A saída a seguir confirma a entrada na interface de linha de comando
kadmin:Authenticating as principal root/admin with password. kadmin:
-
-
Execute o comando a seguir para criar um principal chamado
test.Neste exemplo, a senha é
123456.addprinc -pw 123456 testA saída a seguir indica que o principal foi criado com sucesso:
Principal "test@EMR.C-85D4B8D74296****.COM" created.NotaAnote o nome de usuário e a senha. Eles serão necessários para criar um ticket-granting ticket (TGT).
Execute o comando
quitpara sair da ferramenta Kerberos admin.local. -
Faça login na máquina onde deseja executar o cliente Hive e execute os comandos a seguir para criar e alternar para o usuário
test.useradd test su test -
Execute o comando a seguir para criar um TGT.
kinitPressione Enter e insira a senha do usuário
test. Neste exemplo, a senha é123456. -
Execute o comando a seguir para acessar o cliente Hive.
beeline -u "jdbc:hive2://master-1-1.c-56187feb57f0****.cn-hangzhou.emr.aliyuncs.com:10000/;principal=hive/_HOST@EMR.c-56187feb57f0****.COM"Substitua os placeholders a seguir pelas suas informações:
master-1-1.c-56187feb57f0****.cn-hangzhou.emr.aliyuncs.com: nome do host totalmente qualificado, incluindo o nome de domínio. Obtenha o nome do host executando o comandohostname -fno nó onde o service HiveServer2 está rodando (geralmente o nó master-1-1).EMR.c-56187feb57f0****.COM: nome do realm. No console E-MapReduce, acesse a aba Configure do service Kerberos para encontrar o valor do parâmetrorealm.
Clusters de alta disponibilidade
Conexão via cliente Beeline
Dependendo do modo de descoberta de service selecionado (zooKeeper ou multiServers), use o comando correspondente para configurar a conexão do Beeline.
-
Modo zooKeeper
beeline -u 'jdbc:hive2://master-1-1:2181,master-1-2:2181,master-1-3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2' -
Modo multiServers
beeline -u 'jdbc:hive2://master-1-1:10000,master-1-2:10000,master-1-3:10000/default;serviceDiscoveryMode=multiServers'