使用hivejdbc驱动程序通过squirrel连接到knox

ruoxqz4g  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(522)

我在运行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)
hxzsmxv2

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的联系

beeline -u "jdbc:hive2://<knox-host>:8443/;ssl=true;sslTrustStore=/var/lib/knox/security/keystores/gateway.jks;trustStorePassword=<trustPassword>;transportMode=http;httpPath=gateway/sandbox/hive" -n admin -p admin-password

现在开始调试。
我认为,如果你只是在你的主机操作系统(而不是虚拟机)上下载knox并与hive交谈,knox需要“视线”来服务it代理,而虚拟机则可能很棘手。而且,我发现排除故障和检查日志很方便。你不需要Hive运行在同一台机器上,只要一个视线诺克斯就足够了。
确保 hive-server.xml 有财产吗 hive.server2.servermode=http ,这一直让我着迷:)
本教程/示例介绍如何使用knox和jdbc连接到hive2,它使用groovy脚本,但您只需查看设置和连接字符串即可。
这是使用knoxshell连接到hive2的另一个示例。
希望这有帮助。

相关问题