gpt4 book ai didi

hadoop - 使用 Hive JDBC 驱动程序通过 Squirrel 连接到 Knox

转载 作者:行者123 更新时间:2023-12-02 20:35:48 32 4
gpt4 key购买 nike

我在运行 Ubuntu 的计算机上创建了一台 VMWare 机器。我在那里使用演示 LDAP 设置了 Apache Knox,我目前正在尝试通过 SQuirreL 设置到 Knox 的连接字符串。我不能使用 Hortonworks Sandboxes,因为我需要使它与 Cloudera 下的 Hive 兼容。在开始配置 Knox 之前,我希望能够先使用 Hive JDBC 驱动程序连接到它。这是我到目前为止的字符串:
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 我应该使用什么?我的虚拟机上没有专门的 Hive,因为 Knox 将使用 Hive 连接到 Hadoop 节点。
  • 我在连接字符串中还缺少什么吗?

  • 在 SQuirreL 中,收到错误消息并单击“堆栈跟踪”后,这是我得到的一般要点:
    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)

    最佳答案

    您可以在没有 Knox 的情况下直接连接到 Hive 吗?查看堆栈跟踪似乎找不到 keystore (gateway.jks),这可能是权限问题。尝试在主机上安装 Knox。我从 VM 连接到外部服务(在主机操作系统上运行)时遇到了很多问题,但这可能只是我。
    调试的方法很少,在此之前让我回答您的问题:

  • 你是对的,你需要使用 security/keystores/gateway.jks路径,以便 Beeline(或任何 JDBC 客户端)可以信任 Knox 提供的证书。
  • 看起来您正在使用 Apache Knox,因此您的路径类似于 gateway/sandbox/hive (您需要更新 sandbox.xml 拓扑下的 HIVE 服务 url)。 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 需要“视线”来为其代理服务,而使用虚拟机可能会很棘手。此外,我发现故障排除和检查日志很方便。您不需要在同一台机器上运行 Hive,只需看到 Knox 的视线就足够了。
  • 确保 hive-server.xml有属性(property)hive.server2.servermode=http ,这让我一直很兴奋 :)
  • 这个tutorial/example解释了如何使用 JDBC 使用 Knox 连接到 Hive2,它使用 groovy 脚本,但您可以只查看设置和连接字符串。
  • 这是另一个 example使用 KnoxShell 连接到 Hive2。

  • 希望这可以帮助。

    关于hadoop - 使用 Hive JDBC 驱动程序通过 Squirrel 连接到 Knox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51158572/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com