2013-08-12 25 views
0

我在MapReduce的工作程序(它實際上是一個相當複雜的單詞計數算法)對亞馬遜網絡服務運行鏈接。我生成了一個.jar以在AWS節點上運行。我現在正在做的是將所有mapreduce庫jar包含到我的.jar文件中。一切工作正常,但我認爲這不是一個很好的做法(他們做了一些更新他們的機器圖像,我收到奇怪的異常,可能與此有關)。有人可以解釋我如何自動鏈接到安裝在亞馬遜上的hadoop版本,這樣我就可以在不將外部庫添加到我的jar的情況下執行操作了。與MapReduce的庫中自動

THX很多對您有所幫助!

回答

2

讓你在使用亞馬遜彈性MapReduce!? 有不同的可用hadoop版本的ami版本,請參見http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-ami.html#emr-default-versions

Hadoop的罐子本身+是第三方的依賴(如公地IO例如)已經在你的工作的classpath中。所以你是對的,如果你把Hadoop罐與其他版本捆綁在你的工作瓶上,可能會產生問題。 所以,我要說,你可以: - 決定你啓動(根據AMI-版),Hadoop的版本 - 確定哪些是在Hadoop的版本使用的庫(無論是檢查正在運行的EC2實例或下載的Hadoop版本從apache website) - 編譯你再次編程正確的hadoop,並排除所有hadoop和hadoops-第三方罐子時,你捆綁脂肪罐

+0

非常感謝我試試看! – DDW

+0

嗨,起初我試圖用eclipse打包成一個可運行的jar,現在我注意到還有作爲jar打包的選項(選擇了一個主類)。這樣我可以排除哈託普罐。在AWS上一切都完美無瑕,thx又一次! – DDW