복붙노트

[HADOOP] java.lang.NoSuchMethodError 않는 한 : org.apache.hadoop.conf.Configuration.reloadExistingConfigurations

HADOOP

java.lang.NoSuchMethodError 않는 한 : org.apache.hadoop.conf.Configuration.reloadExistingConfigurations

나는 NiFi의 흐름에서 푸른 데이터 호수에 푸른 데이터 Lake.Connecting에 쓸 Nifi putHDFS을 설정하려면이 링크를 따라하고

HDF 3.1 VM과 Nifi 버전 1.5 내의 Nifi입니다.

우리는 헤드 노드 (하둡 2.7을 지원 V 3.6)를 HD 인사이트에서, 위의 링크에서 언급 된 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에 복사 (우리는 단지 클러스터의 한 호스트가). 그리고 putHDFS의 설정 (사진)가 같은 (위의 링크가 그대로) putHDFS 속성 첨부되어 있습니다.

그러나 nifi 우리가이 점점 로그 :

AdlConfKeys 클래스는 위의 하둡 - 푸른-datalake.jar 파일입니다. 위의 예외에서, 나에게이 AdlConfKeys가 reloadExistingConfigurations 방법이없는 org.apache.hadoop.conf.Configuration 클래스의 이전 버전을로드하는 것 같다. 그러나 우리는이 세 클래스가로드되는 곳에서 찾을 수 없습니다. 이 HDF 3.1 여러 위치에 하둡 - 공통 XXXX.jar을 가지고, 버전 2.7 일에 모든 사람들이 메소드 reloadExistingConfigurations를 포함하는 org.apache.hadoop.conf.Configuration을 가지고, 전용 버전 2.3에 사람들은이 방법이 없습니다. (나는 알아 둘 다 2.7 및 2.3 항아리를 디 컴파일)

[root@NifiHost /]# find . -name *hadoop-common*

(출력은 대부분이 그 중 2 버전 2.3에있는, 2.7에있는, 내가 디스플레이 목적을 위해 일부를 제거하지만, 아래보다 더 많은입니다) :

./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는 하둡 - 일반 jar 파일 또는 뭔가 다른 방법의 reloadExistingConfigurations이없는 구성 클래스를 포함 ()를 찾기 위해 관리 방법을 모르겠어요. 우리는 하나 Nifi에 배포 된 모든 사용자 정의 나르 파일이없는, 모든 3.1 Nifi에 가지고 어떤 HDF에서 거의 기본값입니다.

알려 주시기 바랍니다. 나는이에 하루 종일을 소비했습니다하지만, 문제를 해결할 수 없습니다. 당신의 도움을 주셔서 감사합니다.

해결법

  1. ==============================

    1.난 당신이 사용하고있는 푸른 JAR 파일은 하둡 - 일반 NiFi가 사용하는 2.7.3보다 최신 버전을 필요로 생각합니다.

    난 당신이 사용하고있는 푸른 JAR 파일은 하둡 - 일반 NiFi가 사용하는 2.7.3보다 최신 버전을 필요로 생각합니다.

    당신이 2.7.3에서 구성 클래스를 보면 더 "reloadExistingConfigurations"방법이 없다 :

    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

  2. from https://stackoverflow.com/questions/49059136/nifi-java-lang-nosuchmethoderror-org-apache-hadoop-conf-configuration-reloadexi by cc-by-sa and MIT license