使用 Beeline 连接到 HiveServer2,或在本地安装 Beeline 以从本地连接
Apache Beeline 是一个 Hive 客户端,它包含在 HDInsight 群集的头节点上。 本文介绍如何使用 HDInsight 群集上安装的 Beeline 客户端通过不同连接类型连接到 HiveServer2。 还介绍了如何在本地安装 Beeline 客户端。
连接类型
从 SSH 会话
如果从 SSH 会话连接到群集头节点,则可随后连接到端口 10001
上的 headnodehost
地址:
beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
通过 Azure 虚拟网络
通过 Azure 虚拟网络从客户端连接到 HDInsight 时,必须提供群集头节点的完全限定域名 (FQDN)。 由于直接与群集节点建立此连接,因此此连接使用端口 10001
:
beeline -u 'jdbc:hive2://<headnode-FQDN>:10001/;transportMode=http'
将 <headnode-FQDN>
替换为群集头节点的完全限定域名。 若要查找头节点的完全限定域名,请使用使用 Apache Ambari REST API 的托管 HDInsight 文档中的信息。
使用 Kerberos 连接到 HDInsight 企业安全性套餐 (ESP) 群集
从客户端连接到已加入 Microsoft Entra 域服务的企业安全性套餐 (ESP) 群集时,如果客户端所在的计算机与群集位于同一领域中,那么你还必须指定域名 <AAD-Domain>
和有权访问群集 <username>
的一个域用户帐户的名称:
kinit <username>
beeline -u 'jdbc:hive2://<headnode-FQDN>:10001/default;principal=hive/_HOST@<AAD-Domain>;auth-kerberos;transportMode=http' -n <username>
将 <username>
替换为域中有权访问群集的帐户的名称。 将 <AAD-DOMAIN>
替换为群集加入的 Microsoft Entra ID 的名称。 对于 <AAD-DOMAIN>
值,请使用大写字符串,否则会找不到凭据。 如果需要,请查看 /etc/krb5.conf
中是否有领域名。
若要从 Ambari 查找 JDBC URL,请执行以下任务:
在 Web 浏览器中,导航到
https://CLUSTERNAME.azurehdinsight.cn/#/main/services/HIVE/summary
,其中CLUSTERNAME
是群集的名称。 确保 HiveServer2 正在运行。使用剪贴板复制 HiveServer2 JDBC URL。
通过公共或专用终结点
使用公共或专用终结点连接到群集时,必须提供群集登录帐户名(默认值为 admin
)和密码。 例如,使用 Beeline 从客户端系统连接到 clustername.azurehdinsight.cn
地址。 此连接通过端口 443
建立,并使用 TLS/SSL 进行加密。
将 clustername
替换为 HDInsight 群集的名称。 将 admin
替换为群集的群集登录帐户。 对于 ESP 群集,请使用完整的 UPN(例如 user@domain.com)。 将 password
替换为群集登录帐户的密码。
beeline -u 'jdbc:hive2://clustername.azurehdinsight.cn:443/;ssl=true;transportMode=http;httpPath=/hive2' -n admin -p 'password'
或对于专用终结点:
beeline -u 'jdbc:hive2://clustername-int.azurehdinsight.cn:443/;ssl=true;transportMode=http;httpPath=/hive2' -n admin -p 'password'
专用终结点指向一个基本的负载均衡器,后者只能从在同一区域中进行对等互连的 VNET 访问。 有关详细信息,请参阅对全局 VNet 对等互连和负载均衡器的约束。 在使用 beeline 之前,可以将 curl
命令与 -v
选项配合使用,以便排查公共或专用终结点的任何连接问题。
将 Beeline 与 Apache Spark 配合使用
Apache Spark 提供自己的 HiveServer2 实现(有时称为 Spark Thrift 服务器)。 此服务使用 Spark SQL 而不是 Hive 来解析查询。 并且,此服务可以提供更好的性能,具体取决于查询。
通过公共或专用终结点
使用的连接字符串略有不同。 它使用 httpPath/sparkhive2
,而不包含 httpPath=/hive2
。 将 clustername
替换为 HDInsight 群集的名称。 将 admin
替换为群集的群集登录帐户。 将 password
替换为群集登录帐户的密码。
注意
对于 ESP 群集,请将 admin
替换为完整的 UPN(例如 user@domain.com)。
beeline -u 'jdbc:hive2://clustername.azurehdinsight.cn:443/;ssl=true;transportMode=http;httpPath=/sparkhive2' -n admin -p 'password'
或对于专用终结点:
beeline -u 'jdbc:hive2://clustername-int.azurehdinsight.cn:443/;ssl=true;transportMode=http;httpPath=/sparkhive2' -n admin -p 'password'
专用终结点指向一个基本的负载均衡器,后者只能从在同一区域中进行对等互连的 VNET 访问。 有关详细信息,请参阅对全局 VNet 对等互连和负载均衡器的约束。 在使用 beeline 之前,可以将 curl
命令与 -v
选项配合使用,以便排查公共或专用终结点的任何连接问题。
使用 Apache Spark 从群集头节点或 Azure 虚拟网络进行连接
当直接从群集头节点或者从 HDInsight 群集所在的 Azure 虚拟网络中的资源进行连接时,应当为 Spark Thrift 服务器使用端口 10002
而非 10001
。 以下示例演示如何直接连接到头节点:
/usr/hdp/current/spark2-client/bin/beeline -u 'jdbc:hive2://headnodehost:10002/;transportMode=http'
安装 Beeline 客户端
虽然头节点上包含 Beeline,但建议将其安装在本地。 本地计算机的安装步骤基于适用于 Linux 的 Windows 子系统。
更新包列表。 在 bash shell 中输入以下命令:
sudo apt-get update
安装 Java(如果未安装)。 可以使用
which java
命令进行检查。如果未安装 java 包,请输入以下命令:
sudo apt install openjdk-11-jre-headless
打开 bashrc 文件(通常位于 ~/.bashrc 中):
nano ~/.bashrc
。修改 bashrc 文件。 在该文件的末尾添加以下行:
export JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
依次按 Ctrl+X、Y、Enter。
下载 Hadoop 和 Beeline 存档,输入以下命令:
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
解压缩这些存档,输入以下命令:
tar -xvzf hadoop-2.7.3.tar.gz tar -xvzf apache-hive-1.2.1-bin.tar.gz
进一步修改 bashrc 文件。 你需要确定存档解压缩到的路径。 如果使用适用于 Linux 的 Windows 子系统,并严格按步骤操作,则路径为
/mnt/c/Users/user/
,其中user
是你的用户名。打开文件
nano ~/.bashrc
用适当的路径修改下面的命令,并将其输入到 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
依次按 Ctrl+X、Y、Enter。
关闭并重新打开 bash 会话。
测试连接。 使用上面的公共或专用终结点的连接格式。
后续步骤
- 有关将 Beeline 客户端与 Apache Hive 配合使用的示例,请参阅将 Apache Beeline 与 Apache Hive 配合使用
- 有关 HDInsight 中的 Hive 的更多常规信息,请参阅将 Apache Hive 与 Apache Hadoop on HDInsight 配合使用