您好,登錄后才能下訂單哦!
這篇文章主要介紹了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 /i18n
2020/10/18 16:16:05 - dept.0 - Error occurred while trying to connect to the database
2020/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#
4.kettle配置
1.下載解壓后,只有一個(gè) data-integration 目錄,開(kāi)始配置連接hive,你所下載的kettle支持的所有版本的hadoop都會(huì)在他的插件子目錄中有對(duì)應(yīng)的文件夾和shims包,如下圖所示:
2.找到對(duì)應(yīng)版本的文件夾hdp30,替換集群的xml配置文件:
3. 修改data-integration\plugins\pentaho-big-data-plugin 目錄下的 plugin.properties 文件中的配置項(xiàng),指定要使用的集群配置是哪個(gè),這里我要啟用的是hdp30,入下圖所示:
4.拷貝連接hive所需的jar包, 從集群Hive的lib目錄下拷貝所有hive開(kāi)頭的jar,其實(shí)有些包不需要,這里我就不再挑選了直接拷貝到了hdp30/lib下,如果報(bào)錯(cuò)你還可以在解壓的根目錄data-integration/lib下也放置一份,如下圖所示:
5. 放上依賴jar后,需要重啟,重啟之前,最好是清理下data-integration、system/karaf的cache和data(如有)目錄,清理緩存:
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.連接成功,如下圖所示:
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“kettle如何連接HDP3組件Hive3.1.0存取數(shù)據(jù)”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
免責(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)容。