溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

kettle如何連接HDP3組件Hive3.1.0存取數(shù)據(jù)

發(fā)布時(shí)間:2021-12-10 10:56:01 來(lái)源:億速云 閱讀:601 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要介紹了kettle如何連接HDP3組件Hive3.1.0存取數(shù)據(jù),具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

kettle報(bào)錯(cuò)研究過(guò)程

    由于沒(méi)有使用過(guò)kettle,一開(kāi)始、下載了最新版的kettle7.0,經(jīng)過(guò)各種百度,下載hive配置和jar包,但是總是連接不上hive,報(bào)各種錯(cuò)誤,不一一舉例了,直到報(bào)錯(cuò):No suitable driver found for jdbc:hive2。

log4j:ERROR No output stream or file set for the appender named [pdi-execution-appender].九月 29, 2020 4:16:05 下午 org.apache.cxf.endpoint.ServerImpl initDestination信息: Setting the server‘s publish address to be /i18n2020/10/18 16:16:05 - dept.0 - Error occurred while trying to connect to the database2020/10/18 16:16:05 - dept.0 -2020/10/18 16:16:05 - dept.0 - Error connecting to database: (using class org.apache.hive.jdbc.HiveDriver)2020/10/18 16:16:05 - dept.0 - No suitable driver found for jdbc:hive2://worker1.hadoop.ljs:10000/lujisen

    首先說(shuō)下我這里hadoop用的是比較新的HDP3.1.4,各個(gè)組件版本分別是Hadoop3.1.1.3.1、Hive3.1.0,各種百度和看官網(wǎng)一直解決不了這個(gè)問(wèn)題。折騰很久才發(fā)現(xiàn),原來(lái)是版本不匹配,因?yàn)閗ettle連接hadoop集群,分為連接CDH還是HDP,從目錄\data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations 就可以看出,每個(gè)版本的kettle只能連接該目錄下指定的集群版本,因?yàn)?pentaho-hadoop-shims*.jar 這個(gè)文件的是用來(lái)匹配kettle和集群版本的,不能隨意搭配。因?yàn)楣倬W(wǎng)上的shims版本是有限的。

kettle下載

    這里我是下載了次新穩(wěn)定版本8.3,我看這個(gè)版本有對(duì)應(yīng)hdp3.0的shims包,

下載地址:https://fr.osdn.net/projects/sfnet_pentaho/releases#

kettle如何連接HDP3組件Hive3.1.0存取數(shù)據(jù)

4.kettle配置

1.下載解壓后,只有一個(gè) data-integration 目錄,開(kāi)始配置連接hive,你所下載的kettle支持的所有版本的hadoop都會(huì)在他的插件子目錄中有對(duì)應(yīng)的文件夾和shims包,如下圖所示:

kettle如何連接HDP3組件Hive3.1.0存取數(shù)據(jù)

2.找到對(duì)應(yīng)版本的文件夾hdp30,替換集群的xml配置文件:

kettle如何連接HDP3組件Hive3.1.0存取數(shù)據(jù)

3. 修改data-integration\plugins\pentaho-big-data-plugin 目錄下的  plugin.properties 文件中的配置項(xiàng),指定要使用的集群配置是哪個(gè),這里我要啟用的是hdp30,入下圖所示:

kettle如何連接HDP3組件Hive3.1.0存取數(shù)據(jù)

4.拷貝連接hive所需的jar包, 從集群Hive的lib目錄下拷貝所有hive開(kāi)頭的jar,其實(shí)有些包不需要,這里我就不再挑選了直接拷貝到了hdp30/lib下,如果報(bào)錯(cuò)你還可以在解壓的根目錄data-integration/lib下也放置一份,如下圖所示:

kettle如何連接HDP3組件Hive3.1.0存取數(shù)據(jù)

5. 放上依賴jar后,需要重啟,重啟之前,最好是清理下data-integration、system/karaf的cache和data(如有)目錄,清理緩存:

kettle如何連接HDP3組件Hive3.1.0存取數(shù)據(jù)

6.重啟,測(cè)試成功。


   1-6步是沒(méi)有啟用kerberos情況下,kettle連接hive,如果集群?jiǎn)⒂昧薻erbeos,執(zhí)行完上面的6步驟之后,還需要執(zhí)行以下幾步:

    這里需要注意的,訪問(wèn)應(yīng)用服務(wù)環(huán)境 hive 的主體 principal 統(tǒng)一為 hive/master.hadoo.ljs@HADOOP.COM,而不是用戶自己的principal ,用戶自己的 principal 僅作為客戶端機(jī)器獲取認(rèn)證票據(jù)。

7. 創(chuàng)建文件 kettle.login,寫入如下內(nèi)容并保存

# :Windows 放置在 C:/ProgramData/MIT/Kerberos5/kettle.login

# :Linux 放置在 /etc/kettle.login

com.sun.security.jgss.initiate{   com.sun.security.auth.module.Krb5LoginModule required   useKeyTab=true   useTicketCache=false   keyTab="C:/ProgramData/MIT/Kerberos5/testuser.keytab"   principal="testuser/master.hadoop.ljs@HADOOP.COM"   doNotPrompt=true   debug=true   debugNative=true;};

注意:

    這上面的keytab和pricipal用哪個(gè)用戶登錄就換成哪個(gè)用戶的票據(jù)和認(rèn)證文件,注意,注意,注意

8.修改 Kettle 啟動(dòng)腳本

# 修改 Kettle 啟動(dòng)腳本## 2.1 window 系統(tǒng)修改 data-integration\Spoon.bat#  對(duì)大概 98 行左右的 OPT 變量修改為如下:#  主要添加了如下四個(gè)參數(shù)(注意每個(gè)參數(shù)用引號(hào)引起,空格分開(kāi),如果想開(kāi)啟動(dòng)的信息,在啟動(dòng)腳本最后一行加上 pause):#    "-Djava.security.auth.login.config=C:/ProgramData/MIT/Kerberos5/kettle.login"#    "-Djava.security.krb5.realm=HADOOP.COM"  自己集群realm名稱#    "-Djava.security.krb5.kdc=192.168.33.9" 自己kdcserver地址#    "-Djavax.security.auth.useSubjectCredsOnly=false"set OPT=%OPT% %PENTAHO_DI_JAVA_OPTIONS% "-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2" "-Djava.library.path=%LIBSPATH%" "-Djava.security.auth.login.config=C:/ProgramData/MIT/Kerberos5/kettle.login"  "-Djava.security.krb5.realm=HADOOP.COM" "-Djava.security.krb5.kdc=192.168.0.201" "-Djavax.security.auth.useSubjectCredsOnly=false" "-DKETTLE_HOME=%KETTLE_HOME%" "-DKETTLE_REPOSITORY=%KETTLE_REPOSITORY%" "-DKETTLE_USER=%KETTLE_USER%" "-DKETTLE_PASSWORD=%KETTLE_PASSWORD%" "-DKETTLE_PLUGIN_PACKAGES=%KETTLE_PLUGIN_PACKAGES%" "-DKETTLE_LOG_SIZE_LIMIT=%KETTLE_LOG_SIZE_LIMIT%" "-DKETTLE_JNDI_ROOT=%KETTLE_JNDI_ROOT%"

## Linux 系統(tǒng)修改 data-integration/spoon.sh## 大概在 205 行,同 Windows 系統(tǒng)類似,添加四個(gè)參數(shù)OPT="$OPT $PENTAHO_DI_JAVA_OPTIONS -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2 -Djava.library.path=$LIBPATH -Djava.security.auth.login.config=/etc/kettle.login -Djava.security.krb5.realm=HADOOP.COM -Djava.security.krb5.kdc=192.168.0.101 -Djavax.security.auth.useSubjectCredsOnly=false -DKETTLE_HOME=$KETTLE_HOME -DKETTLE_REPOSITORY=$KETTLE_REPOSITORY -DKETTLE_USER=$KETTLE_USER -DKETTLE_PASSWORD=$KETTLE_PASSWORD -DKETTLE_PLUGIN_PACKAGES=$KETTLE_PLUGIN_PACKAGES -DKETTLE_LOG_SIZE_LIMIT=$KETTLE_LOG_SIZE_LIMIT -DKETTLE_JNDI_ROOT=$KETTLE_JNDI_ROOT"

9.連接hive

連接名稱:lujisen連接類型:Hadoop Hive 2主機(jī)名稱:hiveserver2 服務(wù)地址,例如:192.168.0.101數(shù)據(jù)庫(kù)名稱:lujisen;principal=hive/master.hadoop.ljs@HADOOP.COM端口號(hào):10000用戶名:hive密碼:

注意:

    上面第四行中principal后面跟的一定是hive管理員的票據(jù),不是某個(gè)登錄用戶的票據(jù),一定注意,注意,注意

10.連接成功,如下圖所示:

kettle如何連接HDP3組件Hive3.1.0存取數(shù)據(jù)

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“kettle如何連接HDP3組件Hive3.1.0存取數(shù)據(jù)”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI