使用DBeaver连接到Hive数据库

时间:2017-12-19 21:35:14

标签: hadoop jdbc hive dbeaver

我有一个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以访问位于"隐藏"网络?

3 个答案:

答案 0 :(得分:0)

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

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

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

我为此写了一篇文章,请检查是否有帮助。

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

答案 1 :(得分:0)

不确定环境是否为Kerberized,但假定为-

以下是在连接Cloudera时对我有用的内容-

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

    客户{     需要com.sun.security.auth.module.Krb5LoginModule     调试=真     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 {User} \ Documents \ Keytabs \ krb5.conf

     

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

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

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

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

enter image description here

答案 2 :(得分:0)

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

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