2013-04-01 15 views
7

Tôi gặp một số vấn đề khi tôi sử dụng maven để complie hadoop từ mã nguồn. Đây là lỗi, bất cứ ai có thể giúp tôi? Cảm ơn.org.apache.maven.plugin.MojoExecutionException: lỗi protoc

[ERROR] Failed to execute goal org.apache.hadoop:hadoop-maven-plugins:3.0.0-SNAPSHOT:protoc (compile-protoc) on project hadoop-c 
[Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.hadoop:hadoop-maven-plugins:3.0.0-SNAP 
plugin.MojoExecutionException: protoc failure 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 
     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
     at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
Caused by: org.apache.maven.plugin.MojoExecutionException: org.apache.maven.plugin.MojoExecutionException: protoc failure 
     at org.apache.hadoop.maven.plugin.protoc.ProtocMojo.execute(ProtocMojo.java:81) 
     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
     ... 19 more 
**Caused by: org.apache.maven.plugin.MojoExecutionException: protoc failure** 
     at org.apache.hadoop.maven.plugin.protoc.ProtocMojo.execute(ProtocMojo.java:78) 
     ... 21 more 
[ERROR] 
[ERROR] 
+0

Mã ??????????? –

+0

xin lỗi, tôi là một anh chàng mới. Tôi cố chuyển nó sang định dạng mã, nhưng nó không thành công. – huang

+0

Tại sao bạn cần biên dịch Hadoop từ nguồn? – TC1

Trả lời

11

Hướng dẫn tại http://wiki.apache.org/hadoop/HowToContribute giải thích một số khía cạnh ít rõ ràng hơn của tòa nhà - kể cả điều này. Vấn đề chính ở đây là các bộ đệm giao thức được yêu cầu bởi khung công tác YARN của hadoop và bạn rất có thể không có chúng được cài đặt.

Nó có vẻ như vấn đề có thể là bạn không interpretting lỗi một cách chính xác, vì vậy -

Làm thế nào để cô lập các lỗi xây dựng

Bất kỳ mojo mà không cần phải kết hợp với một lớp.

Trong trường hợp này, mojo đó là thất bại là ở đây:

https://svn.apache.org/repos/asf/hadoop/common/trunk/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/protoc/ProtocMojo.java

Nhìn vào mã này, nhưng rõ ràng rằng Mojo này đòi hỏi chương trình "protoc" để chạy.

http://code.google.com/p/protobuf/

Giải pháp

Xây dựng hadoop, bạn cần bộ đệm giao thức. Điều này có thể được cài đặt trên máy * NIX từ nguồn, bằng cách chạy các lệnh sau để lấy mã từ googlecode (lấy từ http://numbers.brighterplanet.com/2012/04/14/how-to-install-mosh-on-amazon-ec2/).

wget http://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz 
tar xzf protobuf-2.4.1.tar.gz 
cd protobuf-2.4.1 
./configure 
make 
sudo make install 
sudo ldconfig 
+3

Cập nhật: thân cây bây giờ yêu cầu protobuf 2.5: 'wget http: // protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz' – cabad

+1

Làm thế nào để bạn biên dịch nó trên một cửa sổ? –

+1

@Sambit Tripathy: Để có được điều này cho Windows, hãy truy cập https://developers.google.com/protocol-buffers/docs/downloads và lấy Windows Binary. Bạn chỉ cần thêm đường dẫn đến protoc.exe trong môi trường PATH của bạn, và nó sẽ được cài đặt! Đối với gói cài đặt Hadoop dành cho Eclipse tôi nhận được từ trang Apache Nutch, phiên bản 2.5.0 là cần thiết, vì vậy chỉ cần có một phiên bản đó, và bạn đã sẵn sàng! – kajarigd

Các vấn đề liên quan