簡體   English   中英

使用 DBeaver 連接 Hive 數據庫

[英]Connecting to Hive Database with 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 以訪問位於“隱藏”網絡上的 Hive 數據庫?

您的主機名是否配置了 jdbc 連接語法 (127.0.0.1) 中提到的 IP 地址? 你能從你的 Unix shell 連接到直線嗎? 連接到 beeline(hiveserver2) 的語法beeline -u jdbc:hive2://<hostname>:<hive listener port>/<database> -n username> -p <password>

如果您能夠連接到直線,您應該能夠使用 DBeaver 中的相同端口號和主機連接到 hive。 Hive 偵聽器端口默認配置為 10000,但您的管理員可能會更改端口號。 檢查 hive-site.xml 中的端口號,或從 admin 獲取它。

您能否取消選中 SSH 隧道並嘗試?

此鏈接包含從頭開始的所有設置,請檢查您是否遺漏了任何步驟。

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

不確定您的環境是否是 Kerberized,但假設它是 -

以下是連接到 Cloudera 時對我有用的內容 -

  1. 從您的管理員那里獲取 krb5.conf 或 krb5.ini 並將其放在某個目錄中。 我通常將文件放在放置密鑰表的位置。
  2. 創建 jaas.conf 文件並將其放置在同一位置(或您選擇的位置)
  3. jaas.conf 必須如下所示(復制粘貼)-

    客戶端 { com.sun.security.auth.module.Krb5LoginModule required debug=true doNotPrompt=true useKeyTab=true keyTab="C:\\Users{user}\\krb5cc_{user}" useTicketCache=true refreshTGT=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{用戶}\\Documents\\Keytabs\\krb5.conf

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

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

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

  1. 創建連接后按F4
  2. 確保在 user 中只輸入要為其初始化密鑰表的用戶名,而沒有其他任何內容。 它不應該是 {user}@domain.org。
  3. 使用 shell 命令初始化密鑰表

在此處輸入圖片說明

我也無法將 DBeaver 配置為 Hive,我的解決方案是使用Cloudera 的 ODBC 驅動程序 它比 JDBC 驅動程序運行得更好(自動完成工作,更快,無需運行 kinit),而且我可以自動創建它。

唯一的問題是您必須是管理員才能安裝它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM