ubuntu14.04 编译hadoop2.5

int32位 posted @ Aug 19, 2014 09:03:50 PM in java , 1861 阅读
转载请注明:http://krystism.is-programmer.com/若有错误,请多多指正,谢谢!

ubuntu13.10或以下版本也可以编译,只是源中maven和protobuf都版本太低,需要自己下源码重新编译安装,很繁琐。

hadoop2.5有编译好的发布包,但是默认是64位的,老是出现以下错误

OpenJDK Server VM warning: You have loaded library /hadoop/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
14/08/19 21:07:42 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

看起来好像只是警告无所谓,但在启动脚本中NAMENODES=$(hdfs getconf  -namenodes),这时会把所有以上输出以空格作为分隔符作为namenode,显然出错,而且没法加载本地库,所以必须进行重新build。

网上很多说修改HADOOP_OPTS可以解决以上问题,但我试过很多次,根本不行,其实想想也是不可能的,64位的库怎么可以运行在32位呢!

从官方http://www.apache.org/dyn/closer.cgi/hadoop/core/下载源码。

源码是使用maven进行管理的,要求版本必须是maven3以上,由于maven调用了ant,因此ant也是必要的。

另外本地库使用c写的,还要求有cmake,make,auto工具,否则无法编译。总结以下是必要的包:

maven3.0+
libssl-dev
cmake
protobuf2.5+
jdk1.6+
zlib
auto工具(比如automake,autoconf)
make
openssl
build-essential
然后就可以运行 mvn package -Pdist,native -DskipTests -Dtar 进行重新构建。
另外注意JAVA_HOME环境变量的设置,必须确保JAVA_HONE/bin下有javah。
当编译一次后发现问题并不多,但这已经足够折腾我一天了,主要是由于maven编译时错误信息不太清楚,没有很清楚的说明问题所在,而只是抛出一堆异常,外部调用的auto工具和make工具的错误信息又没有显示,所以我是通过手动调用cmake和make去找问题的,否则半天不知道怎么回事。
转载请注明:http://krystism.is-programmer.com/若有错误,请多多指正,谢谢!
  • 无匹配
  • 无匹配

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter