5

我有一个 Hortonworks Hadoop 集群,其中数据节点位于主/头节点之外的单独网络上。访问数据节点的唯一方法是通过主节点或边缘节点。从边缘节点,我执行 hive 命令以连接到我的 hive 数据库。

我无法使用 DBeaver(4.3.0,64 位 Windows)或 hive 命令行界面从我的桌面连接到 hive 数据库。通过 DBeaver,我尝试创建到我的边缘节点的 SSH 隧道并不断收到“无法使用 JDBC Uri 打开客户端传输jdbc:hive2://127.0.0.1:[port#]/[database]。.

Hive/Apache Hive 驱动的配置:

 General Tab:
     Host: dataNodeName
     Port: 10000
     Database/Schema: databaseName
     User name: myUID

 SSH Tunnel Tab (Network page):
     Checked Use SSH Tunnel
     Host/IP:   edgeNodeServerName
     Port:      22
     User Name: myUID
     Authentication Method:  Password
     Password:  myPWD

     Advanced
       Local port: 0
       Keep-Alive interval (ms): 0

当我选择“测试连接”并将本地端口设置为“0”时,我收到上述带有随机端口号的错误消息。如果我将本地端口设置为“10000”,则会收到端口号“10000”的上述错误。

看起来 DBeaver 忽略了通用 JDBC 连接设置——创建的 JDBC 字符串中的主机名是 127.0.0.1 而不是数据节点名。

我错过了什么?如何设置 DBeaver 以访问位于“隐藏”网络上的 Hive 数据库?

4

3 回答 3

2

您的主机名是否配置了 jdbc 连接语法 (127.0.0.1) 中提到的 IP 地址?你能从你的 Unix shell 连接到直线吗?连接直线的语法(hiveserver2): beeline -u jdbc:hive2://<hostname>:<hive listener port>/<database> -n username> -p <password>

如果您能够连接到直线,您应该能够使用来自 DBeaver 的相同端口号和主机连接到配置单元。Hive 侦听器端口默认配置为 10000,但您的管理员可能会更改端口号。检查 hive-site.xml 中的端口号,或从管理员处获取。

您能否取消选中 SSH 隧道并尝试?

此链接包含从头开始的所有设置,请检查您是否错过了任何步骤。

https://www.linkedin.com/pulse/query-hive-hiveserver2-from-windows-using-universal-database-nimmala

于 2018-11-18T12:50:07.833 回答
0

不确定您的环境是否是 Kerberized,但假设它是 -

以下是连接到 Cloudera 时对我有用的方法 -

  1. 从您的管理员处获取 krb5.conf 或 krb5.ini 并将其放置在某个目录中。我通常将文件放在放置密钥表的位置。
  2. 创建 jaas.conf 文件并将其放在同一位置(或您选择的位置)
  3. jaas.conf 必须如下所示(复制粘贴) -

    客户端 { com.sun.security.auth.module.Krb5LoginModule 需要 debug=true doNotPrompt=true useKeyTab=true keyTab="C:\Users{user}\krb5cc_{user}" useTicketCache=true renewTGT=true principal="{user }@DOMAIN.ORG" ; };

  4. 编辑您的 dbeaver.ini 文件并提供对这两个文件的引用(将以下行附加到现有的 dbeaver.ini)。确保备份 dbeaver.ini,重新安装或替换为较新版本,dbeaver.ini 可能会被替换,在这种情况下,您可以从备份 dbeaver.ini 文件中复制以下行 -

-Djavax.security.auth.useSubjectCredsOnly=false

-Djava.security.krb5.debug=true

-Dsun.security.krb5.debug=true

-Djava.security.krb5.conf=C:\Users{用户}\Documents\Keytabs\krb5.conf

-Djava.security.auth.login.config=C:\Users{用户}\Documents\Keytabs\jaas.conf

最后一步(您可能需要也可能不需要)

我在连接之前初始化了我的密钥表。所以我使用 Shell 命令 -

  1. 创建连接后按 F4
  2. 确保在 user 中只输入要为其初始化 keytab 的用户名,而不是其他任何内容。它不应该是 {user}@domain.org。
  3. 使用 shell 命令初始化 keytab

在此处输入图像描述

于 2019-12-14T12:24:01.883 回答
0

我也无法将 DBeaver 配置为 Hive,我的解决方案是使用Cloudera 的 ODBC Driver。它比 JDBC 驱动程序工作得更好(自动完成工作,更快,不需要运行 kinit),我可以自动创建它。

唯一的问题是您必须是管理员才能安装它。

于 2021-02-09T17:51:17.450 回答