我在运行ubuntu的计算机上创建了一台vmware机器。我在那里使用演示ldap设置了ApacheKnox,目前我正在尝试通过squirrel设置到knox的连接字符串。我不能使用hortonworks沙盒,因为我需要使它与cloudera下的hive兼容。在开始配置knox之前,我希望能够首先使用hivejdbc驱动程序连接到它。以下是我目前掌握的字符串: jdbc:hive2://<host>:8443/;ssl=1;sslTrustStore=/gateway.jks;trustStorePassword=<master secret>?hive.server2.transport.mode=http;httpPath=gateway/default/hive
我的具体问题是:
我应该用哪条路来完成我的任务 sslTrustStore
? 目前位于 /home/<user>/Downloads/knox-1.0.0/data/security/keystores/gateway.jks
. 我试过同样的线,但还是没有成功。
我应该用什么 httpPath
? 我的虚拟机上没有特定的配置单元,因为knox将使用配置单元连接到hadoop节点。
连接字符串中还有什么我遗漏的吗?
在squirrel中,当我得到错误消息并单击“stack trace”后,这是我得到的一般要点:
java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.sql.SQLException: [Cloudera][HiveJDBCDriver](500164) Error initialized or created transport for authentication: \home\anudeep\Downloads\knox-1.0.0\data\security\keystores\gateway.jks (The system cannot find the path specified).
at java.util.concurrent.FutureTask.report(Unknown Source)
at java.util.concurrent.FutureTask.get(Unknown Source)
at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand.awaitConnection(OpenConnectionCommand.java:132)
at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand.access$100(OpenConnectionCommand.java:45)
at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand$2.run(OpenConnectionCommand.java:115)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
1条答案
按热度按时间hxzsmxv21#
你能不用诺克斯直接连接到Hive吗?查看堆栈跟踪,似乎找不到密钥库(gateway.jks),这可能是权限问题。尝试在主机上安装knox。我在从虚拟机连接到外部服务(在主机操作系统上运行)时遇到了很多问题,但这可能就是我自己。调试的方法很少,在此之前,请允许我回答您的问题:
你是对的,你需要使用
security/keystores/gateway.jks
路径,以便beeline(或任何jdbc客户机)可以信任knox提供的证书。看起来您正在使用apacheknox,因此您的路径看起来像
gateway/sandbox/hive
(您需要更新下的配置单元服务url。)sandbox.xml
拓扑)。gateway/default/hive
主要由ambari配置的knox示例使用,我认为在您的情况下不是这样。试着做一些改变,比如
ssl=true
,而不是查询字符串(?)使用冒号(:)表示transport.mode,即。;transportMode=http
这是我和beeline的联系现在开始调试。
我认为,如果你只是在你的主机操作系统(而不是虚拟机)上下载knox并与hive交谈,knox需要“视线”来服务it代理,而虚拟机则可能很棘手。而且,我发现排除故障和检查日志很方便。你不需要Hive运行在同一台机器上,只要一个视线诺克斯就足够了。
确保
hive-server.xml
有财产吗hive.server2.servermode=http
,这一直让我着迷:)本教程/示例介绍如何使用knox和jdbc连接到hive2,它使用groovy脚本,但您只需查看设置和连接字符串即可。
这是使用knoxshell连接到hive2的另一个示例。
希望这有帮助。