我有一个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以访问位于"隐藏"网络?
答案 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时对我有用的内容-
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”; };
编辑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命令-
答案 2 :(得分:0)
我也无法将 DBeaver 配置为 Hive,我的解决方案是使用 Cloudera's ODBC Driver。它比 JDBC 驱动程序运行得更好(自动完成工作,更快,无需运行 kinit),而且我可以自动创建它。
唯一的问题是您必须是管理员才能安装它。