1. 程式人生 > >編譯hadoop 1.0.4的 libhdfs庫

編譯hadoop 1.0.4的 libhdfs庫

2013-02-04

周海漢 2013.2.4 [[email protected] hadoop-1.0.4]$ echo $JAVA_HOME /usr/java/jdk1.7.0 [[email protected] hadoop-1.0.4]$ uname -a Linux Hadoop48 2.6.18-348.el5 #1 SMP Tue Jan 8 17:53:53 EST 2013 x86_64 x86_64 x86_64 GNU/Linux [[email protected] hadoop-1.0.4]$ chmod +x src/c++/pipes/configure [[email protected]

hadoop-1.0.4]$ chmod +x src/c++/utils/configure [[email protected] hadoop-1.0.4]$ chmod +x src/c++/libhdfs/configure

編譯libhdfs [[email protected] hadoop-1.0.4]$ ant compile -Dcompile.c++=true -Dlibhdfs=true

如果此前手動執行過configure,則會報下面的錯誤 [exec] configure: error: source directory already configured; run “make distclean” there first 執行 make distclean

[[email protected] hadoop-1.0.4]$ ant compile -Dcompile.c++=true -Dlibhdfs=true compile: [echo] contrib: gridmix [javac] /home/zhouhh/hadoop-1.0.4/src/contrib/build-contrib.xml:185: warning: ‘includeantruntime’ was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds [javac] Compiling 19 source files to /home/zhouhh/hadoop-1.0.4/build/contrib/gridmix/classes [javac] /home/zhouhh/hadoop-1.0.4/src/contrib/gridmix/src/java/org/apache/hadoop/mapred/gridmix/Gridmix.java:396: error: type argument ? extends T is not within bounds of type-variable E [javac] private String getEnumValues(Enum[] e) { [javac] ^ [javac] where T,E are type-variables: [javac] T extends Object declared in method getEnumValues(Enum[]) [javac] E extends Enum declared in class Enum [javac] /home/zhouhh/hadoop-1.0.4/src/contrib/gridmix/src/java/org/apache/hadoop/mapred/gridmix/Gridmix.java:399: error: type argument ? extends T is not within bounds of type-variable E [javac] for (Enum v : e) { [javac] ^ [javac] where T,E are type-variables: [javac] T extends Object declared in method getEnumValues(Enum[]) [javac] E extends Enum declared in class Enum [javac] Note: Some input files use unchecked or unsafe operations. [javac] Note: Recompile with -Xlint:unchecked for details. [javac] 2 errors

BUILD FAILED /home/zhouhh/hadoop-1.0.4/build.xml:706: The following error occurred while executing this line: /home/zhouhh/hadoop-1.0.4/src/contrib/build.xml:30: The following error occurred while executing this line: /home/zhouhh/hadoop-1.0.4/src/contrib/build-contrib.xml:185: Compile failed; see the compiler error output for details.

這是java 7相容性問題。 見 https://issues.apache.org/jira/browse/Hadoop-8329 https://issues.apache.org/jira/browse/BIGTOP-400

Hadoop-8329提供的patch不能用於hadoop1.0.4 問題出在下面檔案的396行。 hadoop-tools/hadoop-gridmix/src/main/java/org/apache/hadoop/mapred/gridmix/Gridmix.java

我製作了一個patch

[[email protected] hadoop-1.0.4]$ cat hadoop-1.0.4.java7.patch patch

[[email protected] hadoop-1.0.4]$ patch -Np0 < hadoop-1.0.4.java7.patch patching file ./src/contrib/gridmix/src/java/org/apache/hadoop/mapred/gridmix/Gridmix.java

[[email protected] hadoop-1.0.4]$ ant compile -Dcompile.c++=true -Dlibhdfs=true BUILD SUCCESSFUL Total time: 1 minute 47 seconds

[[email protected] hadoop-1.0.4]$ ls build/c++/Linux-amd64-64/lib/ libhadooppipes.a libhadooputils.a libhdfs.la libhdfs.so libhdfs.so.0 libhdfs.so.0.0.0

如非註明轉載, 均為原創. 本站遵循知識共享CC協議,轉載請註明來源