2012-09-19 76 views
0

如果我使用舊版hadoop lib版本(如0.20.0)開發map-reduce邏輯,然後創建一個jar文件並在羣集版本更高的集羣上運行jar文件像1.0.3那麼會發生什麼?集羣是否使用與編譯我的代碼相同版本的hadoop,還是忽略我編譯過的代碼?你能解釋一下這個過程如何在hadoop上工作嗎?Hadoop使用不同於集羣的版本進行編譯

我知道它會運行,但我看到一些日誌看起來是舊版本的hadoop.common被使用。 jar文件也不包括lib。

回答

0

首先,你需要從fat jar中排除hadoop-core庫,hadoop提供了這個功能。

我認爲會發生的是,如果您使用過任何API的版本更改的庫,您將會得到一個異常指示。從理論上講,如果API沒有改變,它應該可以工作,儘管這並不能保證。最好在同一個版本上編譯和運行。

+0

我明白,但編譯相同的版本不是一個選項。 API是相同的,但邏輯看起來不同。我的問題是hadoop如何處理這個問題?我不包括hadoop核心lib與我的jar,但我認爲我的類路徑是引用我編譯代碼的核心庫。 hadoop關心我的jar中的類路徑文件嗎? – iCode

相關問題