Conecte-se ao HiveServer2 usando o Beeline ou instale o Beeline localmente para se conectar a partir do seu local

O Apache Beeline é um cliente Hive incluído nos nós principais do cluster HDInsight. Este artigo descreve como se conectar ao HiveServer2 usando o cliente Beeline instalado no cluster HDInsight em diferentes tipos de conexões. Ele também discute como instalar o cliente Beeline localmente.

Tipos de conexões

De uma sessão SSH

Quando você se conecta headnodehost de uma sessão SSH a um nó principal de cluster, você pode se conectar ao endereço na porta 10001:

beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'

Através de uma Rede Virtual do Azure

Ao conectar-se de um cliente ao HDInsight por meio de uma Rede Virtual do Azure, é necessário fornecer o FQDN (nome de domínio totalmente qualificado) de um nó principal do cluster. Como essa conexão é feita diretamente aos nós do cluster, a conexão usa a porta 10001:

beeline -u 'jdbc:hive2://<headnode-FQDN>:10001/;transportMode=http'

Substitua <headnode-FQDN> pelo nome de domínio totalmente qualificado de um headnode de cluster. Para localizar o nome de domínio totalmente qualificado de um nó principal, utilize as informações no documento "Gerir o HDInsight usando a API REST do Apache Ambari".

Para o cluster do HDInsight Enterprise Security Package (ESP) usando Kerberos

Ao ligar-se de um cliente para um cluster ESP (Enterprise Security Package) ligado aos Serviços de Domínio do Microsoft Entra numa máquina no mesmo domínio do cluster, deve também especificar o nome de domínio <AAD-Domain> e o nome de uma conta de utilizador de domínio com permissões para aceder ao cluster <username>:

kinit <username>
beeline -u 'jdbc:hive2://<headnode-FQDN>:10001/default;principal=hive/_HOST@<AAD-Domain>;auth-kerberos;transportMode=http' -n <username>

Substitua <username> pelo nome de uma conta no domínio com permissões para acessar o cluster. Substitua <AAD-DOMAIN> pelo nome da ID do Microsoft Entra à qual o cluster está associado. Use uma cadeia de caracteres maiúscula para o <AAD-DOMAIN> valor, caso contrário, a credencial não será encontrada. Verifique /etc/krb5.conf os nomes dos territórios, se necessário.

Para encontrar o URL JDBC do Ambari:

  1. Em um navegador da Web, navegue até https://CLUSTERNAME.azurehdinsight.net/#/main/services/HIVE/summary, onde CLUSTERNAME é o nome do cluster. Verifique se o HiveServer2 está em execução.

  2. Utilize a área de transferência para copiar a URL JDBC do HiveServer2.

Sobre pontos finais públicos ou privados

Ao se conectar a um cluster usando os pontos de extremidade públicos ou privados, você deve fornecer o nome da conta de login do cluster (padrão admin) e a senha. Por exemplo, usar o Beeline a partir de um sistema cliente para se conectar ao endereço clustername.azurehdinsight.net. Essa conexão é feita pela porta 443e é criptografada usando TLS/SSL.

Substitua clustername pelo nome do seu cluster do HDInsight. Substitua admin pela conta de login do cluster. Para clusters ESP, use o UPN completo (por exemplo, user@domain.com). Substitua password pela senha da conta de login do cluster.

beeline -u 'jdbc:hive2://clustername.azurehdinsight.net:443/;ssl=true;transportMode=http;httpPath=/hive2' -n admin -p 'password'

Ou para o endpoint privado:

beeline -u 'jdbc:hive2://clustername-int.azurehdinsight.net:443/;ssl=true;transportMode=http;httpPath=/hive2' -n admin -p 'password'

Os pontos de extremidade privados apontam para um balanceador de carga básico, que só pode ser acessado a partir das VNETs emparelhadas na mesma região. Consulte restrições para o emparelhamento global de VNet e balanceadores de carga para obter mais informações. Você pode usar o comando curl com a opção -v para solucionar quaisquer problemas de conectividade com endpoints públicos ou privados antes de usar o beeline.

Use Beeline com Apache Spark

O Apache Spark fornece sua própria implementação do HiveServer2, que às vezes é chamado de servidor Spark Thrift. Este serviço usa o Spark SQL para resolver consultas em vez do Hive. E pode fornecer um melhor desempenho dependendo da sua consulta.

Através de terminais públicos ou privados

A cadeia de conexão usada é ligeiramente diferente. Em vez de conter httpPath=/hive2, usa httpPath/sparkhive2. Substitua clustername pelo nome do seu cluster do HDInsight. Substitua admin pela conta de login do cluster. Substitua password pela senha da conta de login do cluster.

Nota

Para clusters ESP, substitua admin por UPN completo (por exemplo, user@domain.com).

beeline -u 'jdbc:hive2://clustername.azurehdinsight.net:443/;ssl=true;transportMode=http;httpPath=/sparkhive2' -n admin -p 'password'

Ou para o endpoint privado:

beeline -u 'jdbc:hive2://clustername-int.azurehdinsight.net:443/;ssl=true;transportMode=http;httpPath=/sparkhive2' -n admin -p 'password'

Os pontos de extremidade privados apontam para um balanceador de carga básico, que só pode ser acessado a partir das VNETs emparelhadas na mesma região. Veja restrições ao emparelhamento global de VNet e balanceadores de carga para mais informações. Você pode usar o comando curl com a opção -v para solucionar quaisquer problemas de conectividade com pontos de extremidade públicos ou privados antes de usar o beeline.

A partir do nó principal do cluster ou dentro da Rede Virtual do Azure com o Apache Spark

Quando você se conecta diretamente do nó principal do cluster ou de um recurso dentro da mesma Rede Virtual do Azure que o cluster HDInsight, a porta 10002 deve ser usada para o servidor Spark Thrift em vez de 10001. O exemplo a seguir mostra como se conectar diretamente ao nó principal:

/usr/hdp/current/spark2-client/bin/beeline -u 'jdbc:hive2://headnodehost:10002/;transportMode=http'

Instalar o cliente Beeline

Embora o Beeline esteja incluído nos nós principais, você pode querer instalá-lo localmente. As etapas de instalação para uma máquina local são baseadas em um subsistema Windows para Linux.

  1. Atualizar listas de pacotes. Digite o seguinte comando em seu shell bash:

    sudo apt-get update
    
  2. Instale o Java se não estiver instalado. Você pode verificar com o which java comando.

    1. Se nenhum pacote java estiver instalado, digite o seguinte comando:

      sudo apt install openjdk-11-jre-headless
      
    2. Abra o arquivo bashrc (geralmente encontrado em ~/.bashrc): nano ~/.bashrc.

    3. Altere o arquivo bashrc. Adicione a seguinte linha no final do ficheiro:

      export JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
      

      Em seguida, pressione Ctrl+X, Y e digite.

  3. Baixe os arquivos Hadoop e Beeline, digite os seguintes comandos:

    wget https://archive.apache.org/dist/hadoop/core/hadoop-2.7.3/hadoop-2.7.3.tar.gz
    wget https://archive.apache.org/dist/hive/hive-1.2.1/apache-hive-1.2.1-bin.tar.gz
    
  4. Descompacte os arquivos, digite os seguintes comandos:

    tar -xvzf hadoop-2.7.3.tar.gz
    tar -xvzf apache-hive-1.2.1-bin.tar.gz
    
  5. Altere ainda mais o arquivo bashrc. Você precisará identificar o caminho para onde os arquivos foram descompactados. Se estiver usando o Subsistema Windows para Linux, e você seguiu as etapas exatamente, seu caminho seria /mnt/c/Users/user/, onde user é seu nome de usuário.

    1. Abra o arquivo: nano ~/.bashrc

    2. Modifique os comandos abaixo com o caminho apropriado e, em seguida, insira-os no final do arquivo bashrc:

      export HADOOP_HOME=/path_where_the_archives_were_unpacked/hadoop-2.7.3
      export HIVE_HOME=/path_where_the_archives_were_unpacked/apache-hive-1.2.1-bin
      PATH=$PATH:$HIVE_HOME/bin
      
    3. Em seguida, pressione Ctrl+X, Y e digite.

  6. Feche e, em seguida, reabra a sua sessão bash.

  7. Teste a sua ligação. Utilize o formato de ligação de terminais públicos ou privados, acima.

Próximos passos