Hadoop 2.x 重新编译
本文记录Hadoop 2.x在Linux x64下重新编译的过程,解决hadoop在64位下安装报错问题。
环境:Centos 6.5 x64 & Hadoop 2.2
友情提示:编译速度非常漫长,因为需要链接国外网站下载资源,白天就10K左右速度,推荐半夜做。
一、安装编译包
yum install svn
yum install autoconf automake libtool cmake
yum install ncurses-devel
yum install openssl-devel
yum install gcc*
二、安装maven
maven项目主页:http://maven.apache.org/
下载安装包apache-maven-3.2.1-bin.tar.gz,解压到/usr/local目录下。
切换到hadoop安装用户下,修改配置文件.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/apache-maven-3.2.1/bin
JAVA_HOMT=/usr/java/jdk1.7.0_51
export JAVA_HOME
export PATH
三、安装protobuf
protobuf项目主页:https://code.google.com/p/protobuf/
下载安装包protobuf-2.5.0.tar.gz,解压到/usr/local目录下。
进入protobuf目录下
执行./configure
执行make
执行make check
执行make install
执行完成后检查/usr/local/bin/下是否有protoc目录。
四、获取hadoop源代码
源代码地址:http://svn.apache.org/repos/asf/hadoop
hadoop安装用户下执行svn checkout http://svn.apache.org/repos/asf/hadoop/common/tags/release-2.2.0
svn迁出代码会比较慢,可以直接在hadoop官网下载源码包hadoop-2.2.0-src.tar.gz,解压出的内容和svn一致,相对来说更小,因为剔除了隐含的svn信息。
五、编译
执行mvn package -Pdist,native -DskipTests -Dtar,编译过程非常漫长。
如果发生如下错误:
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /home/huser/hadoop/hadoop-2.2.0-src/hadoop-common-project/hadoop-auth/src/test/java/org/apache/hadoop/security/authentication/client/AuthenticatorTestCase.java:[88,11] 错误: 无法访问AbstractLifeCycle
[ERROR] 找不到org.mortbay.component.AbstractLifeCycle的类文件
/home/huser/hadoop/hadoop-2.2.0-src/hadoop-common-project/hadoop-auth/src/test/java/org/apache/hadoop/security/authentication/client/AuthenticatorTestCase.java:[96,29] 错误: 无法访问LifeCycle
[ERROR] 找不到org.mortbay.component.LifeCycle的类文件
/home/huser/hadoop/hadoop-2.2.0-src/hadoop-common-project/hadoop-auth/src/test/java/org/apache/hadoop/security/authentication/client/AuthenticatorTestCase.java:[98,10] 错误: 找不到符号
[ERROR] 符号: 方法 start()
位置: 类型为Server的变量 server
/home/huser/hadoop/hadoop-2.2.0-src/hadoop-common-project/hadoop-auth/src/test/java/org/apache/hadoop/security/authentication/client/AuthenticatorTestCase.java:[104,12] 错误: 找不到符号
[INFO] 4 errors
修改源码下hadoop-common-project/hadoop-auth/pom.xml,添加红色部分代码,这是2.2版本的一个bug,在2.3版本里面已经解决。
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-util</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
<scope>test</scope>
</dependency>
如果发生如下错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project hadoop-hdfs: Fatal error compiling: Error while executing the compiler. InvocationTargetException: Java heap space -> [Help 1]
修改.bash_profile文件,添加export MAVEN_OPTS='-Xms256m -Xmx512m', 解决内存资源不足。
编译成功会提示BUILE SUCCESS
编译成果在/home/huser/hadoop/hadoop-2.2.0-src/hadoop-dist/target
进入/home/huser/hadoop/hadoop-2.2.0-src/hadoop-dist/target/hadoop-2.2.0/lib/native
使用命令查看编译出来的类库,已经是64位
$ file ./libhadoop.so.1.0.0
./libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped
$ file ./libhdfs.so.0.0.0
./libhdfs.so.0.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped
将编译出来的类库拷贝替换先前报错环境中的类库,启动hadoop。
至此解决http://www.cnblogs.com/guarder/p/3676595.html里面启动报错问题。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步