我制作了一个GPDB(greenplum-db-5.18.0)群集,其中包含一个主节点和3个段主机。然后遵循此link,我配置了kerberos和hdfs核心xml,并成功启动了PXF服务。当我运行指向远程hdfs文件的查询时,它会不断给出错误日志,如:
SEVERE: The exception contained within MappableContainerException could not be mapped to a response, re-throwing to the HTTP container
java.lang.VerifyError: Bad return type
Exception Details:
Location:
org/apache/hadoop/hdfs/DFSClient.getQuotaUsage(Ljava/lang/String;)Lorg/apache/hadoop/fs/QuotaUsage; @160: areturn
Reason:
Type 'org/apache/hadoop/fs/ContentSummary' (current frame, stack[0]) is not assignable to 'org/apache/hadoop/fs/QuotaUsage' (from method signature)
Current Frame:
bci: @160
flags: { }
locals: { 'org/apache/hadoop/hdfs/DFSClient', 'java/lang/String', 'org/apache/hadoop/ipc/RemoteException', 'java/io/IOException' }
PXF服务从openjdk 1.8.0_131开始。而且我们的hdfs集群基于hadoop mdh 2.6.0.4,因此我将hadoop- * 2.6.0-mdh2.6.0.4.jar放入$ PXF_CONF / lib,而GPDB 5.18本身基于hadoop 2.8.5。这个错误有冲突吗?
我发现一个类似的错误但没有明确的解决方案:Exception in thread "main" java.lang.VerifyError: Bad type on operand stack
顺便说一句,使用PXF访问hdfs文件还有其他事情,例如通过gpconfig设置HADOOP VERSION,这在指南文档中没有提到。
答案 0 :(得分:1)
PXF与Cloudera,Hortonworks Data Platform,MapR和通用Apache Hadoop发行版兼容。 Microsoft的(Microsoft Hadoop发行版(MDH))不在发行说明之内。
答案 1 :(得分:0)
尝试清除$ PXF_CONF / lib文件夹。通常,我们提供的库足以连接到大多数hadoop发行版。我建议您尝试以下操作:
$ rm -rf $PXF_CONF/lib/*
$ $PXF_HOME/bin/pxf restart
如果在多节点群集上,则需要在每个段主机上从$ PXF_CONF / lib /中手动删除jar文件,然后重新启动PXF群集。