首先添加壹下hadoop的參數:
$ gpconfig -c gp_hadoop_target_version -v"hdp2"
$ gpconfig -c gp_hadoop_home -v"/usr/lib/hadoop"
具體的版本參數參照官網,hadoop的home自己設定
然後配置java環境目錄,每個segment節點都配置壹下。這裏最好每臺機器都check壹下。
遇到的問題:No class found壹類的問題。
在greenplum-db/lib/hadoop目錄下的hadoop_env.sh 文件缺少應該加載的類的配置。
在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安裝目錄。
指定PXF_CONF=/usr/local/greenplum-db/pxf/conf,也可是其他目錄。根據官方指導,
在這個目錄下的servers/default?
加入hadoop經典的四個配置文件:
hdfs-site.xml,core-site.xml,yarn-site.xml,mapred-site.xml
當然,加入hive-site.xml,hbase-site.xml 如果需要讀取hive,hbase的數據。
在/usr/local/greenplum-db/pxf/conf/conf目錄下pxf-env.sh中,這個目錄和第二步中的PXF_CONF設定對應,
加入對應的keytab與principal。
這裏需要重點強調壹下, 上面的配置對應的是segment節點 ,master節點不做要求。最好所有的配置都壹樣,省的出現各類問題。
我用的gp是pivolt的5.16版本,自帶的hadoop版本是2.8.5,我的hadoop版本是2.7.3的,然後查詢的時候,
就報錯了各種NosuchMethod。最後實在沒辦法了,我就把gp自帶的jar替換成我的hadoop版本的。
gp需要的hadoop的jar在 ${妳的安裝目錄}/greenplum-db/pxf/lib/shared 這個目錄下,
替換的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
其實就是hadoop相關的,然後就可以了。
以上四步中,官方文檔有第二步,第三步,第壹步在網上其他教程中也能夠解決。但是,第四部,官方文檔中沒有提及,網上的相關的資料基本上沒有。pxf這個功能也是最近才發布,gp用的人比較少,更別提pxf了。作為第壹個采坑,希望分享出來,幫助大家。
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"?
正在解決……