最近在搞greenplum連接hadoop似炎,采用pxf插件。hadoop集群是kerberos認(rèn)證的涧卵。
首先添加一下hadoop的參數(shù):
$ gpconfig -c gp_hadoop_target_version -v"hdp2"
$ gpconfig -c gp_hadoop_home -v"/usr/lib/hadoop"
具體的版本參數(shù)參照官網(wǎng)埃篓,hadoop的home自己設(shè)定
然后配置java環(huán)境目錄察净,每個(gè)segment節(jié)點(diǎn)都配置一下吼句。這里最好每臺機(jī)器都check一下锅必。
1.添加加載類
遇到的問題:No class found一類的問題。
在greenplum-db/lib/hadoop目錄下的hadoop_env.sh 文件缺少應(yīng)該加載的類的配置惕艳。
在hadoop_env.sh文件中搞隐,JAVA_LIBRARY_PATH之前加上
if [ -d "/usr/hdp/2.6.1.0-129/hadoop/client" ]; then
for f in /usr/hdp/2.6.1.0-129/hadoop/client/*.jar; do
? CLASSPATH=${CLASSPATH}:$f;
done
fi
其中/usr/hdp/2.6.1.0-129/是我的hadoop安裝目錄。
2.指定hadoop配置文件
指定PXF_CONF=/usr/local/greenplum-db/pxf/conf,也可是其他目錄远搪。根據(jù)官方指導(dǎo)劣纲,
在這個(gè)目錄下的servers/default?
加入hadoop經(jīng)典的四個(gè)配置文件:
hdfs-site.xml,core-site.xml,yarn-site.xml,mapred-site.xml
當(dāng)然,加入hive-site.xml,hbase-site.xml 如果需要讀取hive谁鳍,hbase的數(shù)據(jù)癞季。
3.指定kerberos配置文件
在/usr/local/greenplum-db/pxf/conf/conf目錄下pxf-env.sh中,這個(gè)目錄和第二步中的PXF_CONF設(shè)定對應(yīng)倘潜,
加入對應(yīng)的keytab與principal绷柒。
這里需要重點(diǎn)強(qiáng)調(diào)一下,上面的配置對應(yīng)的是segment節(jié)點(diǎn)窍荧,master節(jié)點(diǎn)不做要求辉巡。最好所有的配置都一樣,省的出現(xiàn)各類問題蕊退。
4.替換hadoop版本。
我用的gp是pivolt的5.16版本憔恳,自帶的hadoop版本是2.8.5瓤荔,我的hadoop版本是2.7.3的,然后查詢的時(shí)候钥组,
就報(bào)錯(cuò)了各種NosuchMethod输硝。最后實(shí)在沒辦法了,我就把gp自帶的jar替換成我的hadoop版本的程梦。
gp需要的hadoop的jar在 ${你的安裝目錄}/greenplum-db/pxf/lib/shared 這個(gè)目錄下点把,
替換的jar有
hadoop-auth-2.7.3.2.6.1.0-129.jar
hadoop-aws-2.7.3.2.6.1.0-129.jar
hadoop-azure-2.7.3.2.6.1.0-129.jar
hadoop-azure-datalake-2.7.3.2.6.1.0-129.jar
hadoop-common-2.7.3.2.6.1.0-129.jar
hadoop-hdfs-2.7.3.2.6.1.0-129.jar
hadoop-mapreduce-client-core-2.7.3.2.6.1.0-129.jar
hadoop-yarn-api-2.7.3.2.6.1.0-129.jar
其實(shí)就是hadoop相關(guān)的,然后就可以了屿附。
以上四步中郎逃,官方文檔有第二步,第三步挺份,第一步在網(wǎng)上其他教程中也能夠解決褒翰。但是,第四部,官方文檔中沒有提及优训,網(wǎng)上的相關(guān)的資料基本上沒有朵你。pxf這個(gè)功能也是最近才發(fā)布,gp用的人比較少揣非,更別提pxf了抡医。作為第一個(gè)采坑,希望分享出來早敬,幫助大家魂拦。
gp連接hive的出現(xiàn)的問題
1.??User null does not belong to hdfs
在hive-site.xml中加入
<property>
? ? ? <name>hive.warehouse.subdir.inherit.perms</name>
? ? ? <value>false</value>
? ? </property>
2.ERROR: "set_ugi() not successful, Likely cause: new client talking to old server. Continuing without it"?
正在解決……