2013-09-23 32 views
1

我試圖從CDH3升級到CDH4,並從編譯運行時得到版本衝突。 我得到這個錯誤: 異常線程「main」 java.lang.IncompatibleClassChangeError:找到接口org.apache.hadoop.mapreduce.Counter,但類預計CDH4:版本衝突:找到接口org.apache.hadoop.mapreduce.Counter,但期望的類

從谷歌上搜索,似乎我的代碼正在針對Hadoop 1.x進行編譯,並且正在Hadoop 2.0上運行。 我在同一個Hadoop客戶端上編譯和運行應用程序,所以它應該都是Hadoop 2.0。 以下是我在客戶端或此測試羣集中的任何其他節點上運行「hadoop版本」所得到的結果: Hadoop 2.0.0-cdh4.4.0 Subversion file:/// data/1/jenkins/workspace/generic-package-rhel64-6-0/topdir/BUILD/hadoop-2.0.0-cdh4.4.0/src/hadoop-common-project/hadoop-common -r c0eba6cd38c984557e96a16ccd7356b7de835e79 jenkins在9月3日星期二19:33編譯: 17 PDT 2013 從源與校驗ac7e170aa709b3ace13dc5f775487180 該命令使用/usr/lib/hadoop/hadoop-common-2.0.0-cdh4.4.0.jar

下面是從我POM相關的依賴性和回購協議運行。 xml:

<dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-core</artifactId> 
      <version>2.0.0-mr1-cdh4.4.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-client</artifactId> 
      <version>2.0.0-mr1-cdh4.4.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.mrunit</groupId> 
      <artifactId>mrunit</artifactId> 
      <version>0.9.0-incubating</version> 
      <classifier>hadoop1</classifier> 
</dependency> 
... 
<repository> 
      <id>cloudera</id> 
      <name>cloudera</name> 
      <url>https://repository.cloudera.com/artifactory/cloudera-repos</url> 
     </repository> 

和編譯我的應用程序後,該目錄中我的Maven的回購存在(我不希望和好像我的問題): .m2目錄/庫/組織/阿帕奇/ Hadoop的/ Hadoop的核心/ 0.20.2-cdh3u0

但我搜索應用程序的Maven依賴:樹和Hadoop的核心唯一的參考是: org.apache.hadoop:Hadoop的核心中:jar:2.0.0-MR1-CDH4 .4.0:編譯 僅供參考 - 我也嘗試排除MRunit依賴和所有我的測試代碼,但結果相同。

任何人都可以告訴我如何讓我的版本從編譯過渡到運行時(爲什麼在構建應用程序時hadoop-core/0.20.2-cdh3u0被拉下來了)? 我相信因爲我已經安裝了hadoop MRv1,它應該是編譯和運行時的Hadoop 2.0代碼......但是我仍然對MRv1中的版本化感到困惑。

回答

2

想通了 - MVN依賴性:樹它自己並沒有告訴我,在呼喚出來CDH3的依賴性,但MVN依賴性:樹-Dverbose透露衝突的依賴。 從那裏我添加了一個排除在pom上,現在工作正常運行。

+0

嘿@alexP_Keaton:請您詳細說明一下嗎?我遇到了同樣的錯誤,而且在Maven方面我是新手。 – abhinavkulkarni

+0

@abhinavkulkarni,maven多個版本的相同包中的依賴關係樹功能。但是當我添加詳細選項(-Dverbose)時,它顯示了其他版本,並且我能夠看到我的哪些依賴對0.20.2-cdh3u0具有傳遞依賴性。然後,我排除這種依賴Hadoop的在我的POM這樣的: org.apache.hadoop Hadoop的核心

相關問題