Gobblin編譯支持CDH5.4.0


作者:Syn良子 出處:http://www.cnblogs.com/cssdongl 轉載請注明出處

Gobblin的前身是linkedin的Camus,好多人也用過,准備用Gobblin的方式來抽取數據,不過由於連接的集群是CDH的,而Gobblin默認支持的是hadoop2.3.0,因此需要手動編譯一個支持CDH的Gobblin版本,否則使用中會遇到無法寫入hdfs等不兼容的問題.整理記錄其中遇到的一些問題和解決方式.

一.編譯准備

1.github上下載gobblin0.6.2的源代碼解壓到本地.

2.了解Gradle自動化構建工具的基本使用

二.編譯和問題解決

在源代碼根目錄下用該命令進行編譯: ./gradlew clean build -PhadoopVersion=2.6.0-cdh5.4.0,不出意外會報錯,總結為以下幾類錯誤

1.找不到依賴的jar包,比如gradle-processors,coveralls-gradle-plugin等,這類問題都是因為對應的jar包無法下載成功(下載超時失敗居多),多執行幾次命令,如果還是不行,請手動下載,例如

https://plugins.gradle.org/m2/org/kt3k/gradle/plugin/coveralls-gradle-plugin/1.0.2/coveralls-gradle-plugin-1.0.2.jar

根據錯誤提示手動下載需要的jar包,必要時請自覺翻牆

下載jar包完成后,放入gradle的module目錄,比如我的在當前用戶的 ~/.gradle/caches/modules-2/,根據jar包名放入對應的module文件夾下,重新build執行命令即可

2. fatal: Not a git repository (or any of the parent directories): .git  異常

這個問題和git有關系,如果是用git命令checkout下來的源代碼,一般不會有這個問題,而我是手動從github上下載的src壓縮包,則需要加上另外一個版本參數,如下

./gradlew clean build  -PhadoopVersion=2.6.0-cdh5.4.0 -Pversion=gobblin_0.6.2-180-g5a11598

重新執行命令,該錯誤消失

3.Could not resolve all dependencies for configuration ':gobblin-compaction:runtime'.

這個錯誤需要加上另外一個參數,如下

 ./gradlew clean build -PhadoopVersion=2.6.0-cdh5.4.0 -Pversion=gobblin_0.6.2-180-g5a11598 –PuseHadoop2

4.Execution failed for task ':gobblin-yarn:test'.

這個問題大家基本都知道,test模塊編譯不過去,官方給的建議是加上另外一個參數來跳過,如下

./gradlew clean build -PhadoopVersion=2.6.0-cdh5.4.0 -Pversion=gobblin_0.6.2-180-g5a11598 -PuseHadoop2 -x test

繼續build,問題消失

5.編譯成功后,根目錄下找到gobblin-distribution-0.6.2.tar.gz解壓后,配置好后執行官方提供的wikipedia例子時報錯:gobblin-runtime-0.6.2.jar not a valid jar

去lib下查看,發現只有gobblin-runtime-gobblin-0.6.2.jar,沒有gobblin-runtime-0.6.2.jar,因此推斷這里Pversion多了個gobblin,修改命令如下

./gradlew clean build -PhadoopVersion=2.6.0-cdh5.4.0 -Pversion=0.6.2 -PuseHadoop2 -x test

這次打包正常,執行bin/gobblin-mapreduce.sh又報第2條中的異常:Not a git repository

又耐心翻了翻官方的issues,發現0.6.2這塊兒編譯問題很多,所以決定直接編譯gobblin-0.7.0源代碼,進入gobblin-0.7.0源代碼根目錄執行如下命令

./gradlew clean build -PhadoopVersion=2.6.0-cdh5.4.0 -Pversion=0.7.0 -PuseHadoop2 -x test

ok,這次一次性成功,解壓生成的gobblin-distribution-0.7.0.tar.gz,重新執行wikipedia的demo,成功執行

三.問題總結

Gobblin的編譯主要會遇到一些jar包依賴和版本的問題,所以按照上述方式來一步一步解決后可以編譯出適合自己的版本.官方文檔還是很詳細,大家可以多多查閱,另外還有源代碼可以參考.

參考資料:

http://gobblin.readthedocs.io/en/latest/Getting-Started/

https://github.com/linkedin/gobblin/issues/662

https://github.com/linkedin/gobblin/issues/822

https://github.com/linkedin/gobblin/issues/577


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM