经历了一次特别坎坷的 hadoop2.2编译经历,放在这里以备忘,同时 BS 下那些将别人的作品抄来抄去甚至不问准确性和完整性的人。整个过程非常感谢强大的 google,和我的英语老师,弱弱的 BS 下度娘。红色字体是编译 hadoop 源文件时需要依赖的 lib 和注意事项。
首先,我是尝试在64位的 linux 环境上安装 hadoop2.2版本,由于有之前一些些小经验,部署和配置部分还算顺利,但是启动的时候问题就来了,namenode 启动的时候应该打印的
Start namenode on [ xxxxxx] (XXXXXX是你 namenode 所在的主机名),但是 xxxxx 编程了一个特长的,几乎是完全没见过的 java 启动 warning,意思大概是 JNI 加载出错,file 命令查看 native 包嗲的 libhadoop.so.1.0.0文件,32位的。。。好吧,本来想偷懒的,这下真的自己跑去编译 hadoop 了。
装了个
Ubuntu 64的虚拟机,装好
java 、 maven和 ant,准备开始干吧。
一开始,直接
mvn package -Pdist,native -DskipTests -Dtar -rf :hadoop-common
,报错
原来
需要 ant,2话不说,上 ant,继续。。。又出错。。。
好吧,还
需要 protobuf,原来工作机上有安装,这虚拟机给忘了,下载,一顿 config、make、make install,还出错! libprotoc.so.8 找不到, Ubuntu 下还需要在你的
.profile文件下添加一句
export LD_LIBRARY_PATH=/usr/local/lib/ ,当然,前提是你安装 protoc 的时候没有指定 prefix.别忘记,可能你需要安装或者更新你的
g++(ubuntu)或者 gcc-c++(centos)
baby,let's go on。出错~~啊,我讨厌出错。。。继续看 maven 堆栈,缺少
cmake,没啥说的,自己去 下载然后CMM上吧。
错误还是继续呢,不过万幸已经编译到Hadoop Pipes了。这次是
zlib包,直接上,
zlib1g,zlib1g-dev,好吧,还得加个
ruby。。。
继续错误。。。这颠来倒去的。还卡在 Hadoop Pipes 上,这次少的
openssl 。apt-get install openssl,错误依旧。但是
Ubuntu又没有 openssl-devel,再次感谢万能的 google,
apt-get install libssl-dev ,尼玛,终于成功了。
真是心碎,这一天就这么废掉了