我正在单击此链接来设置Nifi putHDFS以写入Azure Data Lake。 Connecting to Azure Data Lake from a NiFi dataflow

Nifi在HDF 3.1 VM中,Nifi版本为1.5。

我们从HD Insight(v 3.6,支持hadoop 2.7)头节点获得了上述链接中提到的jar文件,这些jar是:

adls2-oauth2-token-provider-1.0.jar

azure-data-lake-store-sdk-2.1.4.jar

hadoop-azure-datalake.jar

jackson-core-2.2.3.jar

okhttp-2.4.0.jar

okio-1.4.0.jar

然后将它们复制到HDF群集Nifi主机的文件夹/ usr / lib / hdinsight-datalake(群集中只有1个主机)。 putHDFS config(picture)附加为putHDFS attributes(与上面的链接完全一样)。

但是在nifi日志中,我们得到的是:



AdlConfKeys类来自上面的hadoop-azure-datalake.jar文件。从上述异常来看,在我看来,这个AdlConfKeys正在加载org.apache.hadoop.conf.Configuration类的旧版本,该类没有reloadExistingConfigurations方法。但是,我们无法找到此较旧类的加载位置。这个HDF 3.1在多个位置都有hadoop-common-XXXX.jar,所有2.7版的东西都有org.apache.hadoop.conf.Configuration包含方法reloadExistingConfigurations,只有2.3版的人没有此方法。 (我反编译了2.7和2.3 jar 以进行查找)
[root@NifiHost /]# find . -name *hadoop-common*

(输出比下面的要多得多,但是我出于显示目的删除了一些,其中大多数在2.7上,只有2项在2.3版上):
./var/lib/nifi/work/nar/extensions/nifi-hadoop-libraries-nar-1.5.0.3.1.0.0-564.nar-unpacked/META-INF/bundled-dependencies/hadoop-common-2.7.3.jar

./var/lib/ambari-agent/cred/lib/hadoop-common-2.7.3.jar

./var/lib/ambari-server/resources.backup/views/work/WORKFLOW_MANAGER{1.0.0}/WEB-INF/lib/hadoop-common-2.7.3.2.6.2.0-205.jar

./var/lib/ambari-server/resources.backup/views/work/HUETOAMBARI_MIGRATION{1.0.0}/WEB-INF/lib/hadoop-common-2.3.0.jar

./var/lib/ambari-server/resources/views/work/HUETOAMBARI_MIGRATION{1.0.0}/WEB-INF/lib/hadoop-common-2.3.0.jar

./var/lib/ambari-server/resources/views/work/HIVE{1.5.0}/WEB-INF/lib/hadoop-common-2.7.3.2.6.4.0-91.jar

./var/lib/ambari-server/resources/views/work/CAPACITY-SCHEDULER{1.0.0}/WEB-INF/lib/hadoop-common-2.7.3.2.6.4.0-91.jar

./var/lib/ambari-server/resources/views/work/TEZ{0.7.0.2.6.2.0-205}/WEB-INF/lib/hadoop-common-2.7.3.2.6.2.0-205.jar

./usr/lib/ambari-server/hadoop-common-2.7.2.jar

./usr/hdf/3.1.0.0-564/nifi/ext/ranger/install/lib/hadoop-common-2.7.3.jar

./usr/hdf/3.0.2.0-76/nifi/ext/ranger/install/lib/hadoop-common-2.7.3.jar

所以我真的不知道Nifi如何设法找到一个hadoop常见的jar文件,或者其他包含Configuration类的东西没有方法reloadExistingConfigurations()。我们也没有将任何自定义的Nar文件部署到Nifi,所有内容几乎都是Nifi上HDF 3.1的默认设置。

请指教。我已经花了整整一整天的时间,但无法解决问题。感谢您的帮助。

最佳答案

我认为您使用的Azure JAR需要比NiFi使用的2.7.3更高的hadoop-common版本。

如果从2.7.3开始查看Configuration类,则没有“reloadExistingConfiguration”方法:

https://github.com/apache/hadoop/blob/release-2.7.3-RC2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java

它似乎是在2.8.x期间引入的:

https://github.com/apache/hadoop/blob/release-2.8.3-RC0/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java

07-28 02:42
查看更多