2014-10-10 46 views
5

試圖在Windows 7 x64下從源代碼構建hadoop。根據指令Hadoop2OnWindowsBUILDING如何在windows下構建hadoop源代碼?

我分身hadoop的來源從git,結帳origin/branch-2.5(SHA-1:fa3bb675a728105d69614f53abe4339958550adf) 然後從窗口控制檯I運行:

  1. set Platform=x64
  2. clean install -Pdist,native-win -DskipTests -Dtar

並獲取錯誤 - [ERROR] Failed to execute goal org.apache.hadoop:hadoop-maven-plugins:2.5.0-SNAPSHOT:protoc (compile-protoc) on project hadoop-common: org.apache.maven.plugin.MojoExecutionException: 'protoc --version' did not return a version -> [Help 1]

任何想法如何解決這個問題?

回答

0

看來你錯過了protoc編譯器。

您可以下載並從here

安裝2.5.0二進制那麼你可以設置HADOOP_PROTOC_PATH指向安裝目錄。

+0

要建立在Mac/OSX 下載的protobuf:HTTPS://protobuf.googlecode。 焦油xfvj的protobuf-2.5.0.tar.bz2 CD的protobuf-2.5.0 的./configure CC =鐺:與鐺/ libc的++ COM /文件/ protobuf的-2.5.0.tar.bz2 編譯協議緩衝區CXX = clang ++ CXXFLAGS =' - std = C++ 11 -stdlib = libC++ -O3 -g'LDFLAGS =' - stdlib = libC++'LIBS =「 - lC++ -lC++ abi」 make -j 4 sudo make install 請參閱https://wiki.ripple.com/OSX_Build_Instructions – amar 2014-12-05 15:35:50

6

類Hadoop Maven的插件的protoc的魔力確實是它的第一件事就是使用Java的java.lang.Process類嘗試執行以下命令:

protoc --version 

基本上,它這樣做是爲了檢查版本您系統上的協議緩衝區編譯器(protoc)與protobuf JAR的版本相匹配。

有4個結果此:

  • 它找不到protoc要執行的命令(它接收127的出口值)
  • 它並沒有收到 127退出值,但也沒有得到返回的版本值
  • 返回一個版本,但不匹配protobuf罐的版本
  • 返回一個版本,它確實匹配protobuf罐的版本

您正在遇到第2個問題。

如果您嘗試從命令行運行protoc --version它工作嗎?

正如他們在他們的網站中所述,如果您的系統中有多個版本的protoc,您可以在您的構建shell中設置HADOOP_PROTOC_PATH環境變量以指向您希望用於Hadoop構建的環境變量。如果您未定義此環境變量,則在PATH中查找protoc。它是否可用於您的PATH

如果您尚未安裝協議緩衝編譯器,你可以從下面的位置下載它: https://developers.google.com/protocol-buffers/docs/downloads