Condividi tramite


Connessione a HiveServer2 usando Beeline o installare Beeline in locale per connettersi dall'ambiente locale

Apache Beeline è un client Hive incluso nei nodi head del cluster HDInsight. Questo articolo descrive come connettersi a HiveServer2 usando il client Beeline installato nel cluster HDInsight in diversi tipi di connessioni. Viene inoltre illustrato come installare il client Beeline in locale.

Tipi di connessioni

Da una sessione SSH

Quando ci si connette da una sessione SSH a un nodo head del cluster, è quindi possibile connettersi all'indirizzo headnodehost sulla porta 10001:

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

In un Rete virtuale di Azure

Quando ci si connette da un client a HDInsight tramite un Rete virtuale di Azure, è necessario specificare il nome di dominio completo (FQDN) di un nodo head del cluster. Poiché questa connessione viene eseguita direttamente ai nodi del cluster, la connessione usa la porta 10001:

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

Sostituire <headnode-FQDN> con il nome di dominio completo di un nodo head del cluster. Per trovare il nome di dominio completo di un nodo head, usare le informazioni contenute nel documento Gestire i cluster HDInsight mediante l'API REST Apache Ambari.

Per il cluster HDInsight Enterprise Security Package (ESP) tramite Kerberos

Quando ci si connette da un client a un cluster ESP (Enterprise Security Package) aggiunto a Microsoft Entra Domain Services in un computer nello stesso ambito del cluster, è necessario specificare anche il nome <AAD-Domain> di dominio e il nome di un account utente di dominio con le autorizzazioni per accedere al cluster <username>:

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

Sostituire <username> con il nome di un account nel dominio che disponga delle autorizzazioni per accedere al cluster. Sostituire <AAD-DOMAIN> con il nome dell'ID Microsoft Entra a cui viene aggiunto il cluster. Usare una stringa in maiuscolo per il valore <AAD-DOMAIN> per trovare le credenziali. Se necessario, selezionare /etc/krb5.conf per i nomi dell'area di autenticazione.

Per trovare l'URL JDBC da Ambari:

  1. In un Web browser passare a https://CLUSTERNAME.azurehdinsight.net/#/main/services/HIVE/summary dove CLUSTERNAME è il nome del cluster. Assicurarsi che HiveServer2 sia in esecuzione.

  2. Usare gli Appunti per copiare l'URL JDBC HiveServer2.

Tramite endpoint pubblici o privati

Quando ci si connette a un cluster usando gli endpoint pubblici o privati, è necessario specificare il nome dell'account di accesso del cluster (impostazione predefinita admin) e la password. Ad esempio, l'uso di Beeline da un sistema client per connettersi all'indirizzo clustername.azurehdinsight.net. Questa connessione viene stabilita sulla porta 443e viene crittografata tramite TLS/SSL.

Sostituire clustername con il nome del cluster HDInsight. Sostituire admin con l'account di accesso del cluster. Per i cluster ESP, usare l'UPN completo (ad esempio, user@domain.com). Sostituire password con la password dell'account di accesso del cluster.

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

o per l'endpoint privato:

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

Gli endpoint privati puntano a un servizio di bilanciamento del carico di base, accessibile solo dalle reti virtuali con peering nella stessa area. Per altre informazioni, vedere Vincoli sul peering reti virtuali globali e sui servizi di bilanciamento del carico. È possibile usare il comando con -v l'opzione curl per risolvere eventuali problemi di connettività con endpoint pubblici o privati prima di usare beeline.

Usare Beeline con Apache Spark

Apache Spark fornisce la propria implementazione di HiveServer2, spesso definita come server Spark Thrift. Questo servizio usa Spark SQL per risolvere le query anziché Hive. E può offrire prestazioni migliori a seconda della query.

Tramite endpoint pubblici o privati

Il stringa di connessione utilizzato è leggermente diverso. Anziché contenere httpPath=/hive2 , usa httpPath/sparkhive2. Sostituire clustername con il nome del cluster HDInsight. Sostituire admin con l'account di accesso del cluster. Sostituire password con la password dell'account di accesso del cluster.

Nota

Per i cluster ESP, sostituire admin con l'UPN completo (ad esempio, user@domain.com).

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

o per l'endpoint privato:

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

Gli endpoint privati puntano a un servizio di bilanciamento del carico di base, accessibile solo dalle reti virtuali con peering nella stessa area. Per altre informazioni, vedere Vincoli sul peering reti virtuali globali e sui servizi di bilanciamento del carico. È possibile usare il comando con -v l'opzione curl per risolvere eventuali problemi di connettività con endpoint pubblici o privati prima di usare beeline.

Dal nodo head del cluster o all'interno di Azure Rete virtuale con Apache Spark

Quando ci si connette direttamente dal nodo head del cluster o da una risorsa all'interno della stessa istanza di Rete virtuale di Azure del cluster HDInsight, è necessario usare la porta 10002 per il server Spark Thrift invece di 10001. L'esempio seguente illustra come connettersi direttamente al nodo head:

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

Installare il client Beeline

Beeline è incluso nei nodi head, ma può essere necessario installarlo in locale. I passaggi di installazione per un computer locale si basano su un sottosistema Windows per Linux.

  1. Aggiornare gli elenchi di pacchetti. Immettere il comando seguente nella shell bash:

    sudo apt-get update
    
  2. Installare Java se non è installato. È possibile controllare con il which java comando .

    1. Se non è installato alcun pacchetto Java, immettere il comando seguente:

      sudo apt install openjdk-11-jre-headless
      
    2. Aprire il file bashrc (spesso presente in ~/.bashrc): nano ~/.bashrc.

    3. Modificare il file bashrc. Aggiungere la riga seguente alla fine del file:

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

      Premere QUINDI CTRL+X, quindi Y, quindi immettere.

  3. Scaricare gli archivi Hadoop e Beeline, immettere i comandi seguenti:

    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. Decomprimere gli archivi, immettere i comandi seguenti:

    tar -xvzf hadoop-2.7.3.tar.gz
    tar -xvzf apache-hive-1.2.1-bin.tar.gz
    
  5. Modificare ulteriormente il file bashrc. Sarà necessario identificare il percorso in cui sono stati decompressi gli archivi. Se si usa il sottosistema Windows per Linux e sono stati eseguiti esattamente i passaggi, il percorso sarà /mnt/c/Users/user/, dove user è il nome utente.

    1. Aprire il file: nano ~/.bashrc

    2. Modificare i comandi seguenti con il percorso appropriato e quindi immetterli alla fine del file 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. Premere QUINDI CTRL+X, quindi Y, quindi immettere.

  6. Chiudere e riaprire la sessione bash.

  7. Testare la connessione. Usare il formato di connessione da Over public or private endpoints(Over public or private endpoints) sopra.

Passaggi successivi