Mac下 hadoop-2.7.0 编译过程记录

本文详细记录了在Mac环境下,由于hadoop本地库不兼容导致的启动错误,以及如何通过编译解决此问题的过程。包括编译hadoop的native库,解决protobuf版本、zlib、openssl等问题,以及最终成功加载native-hadoop库的验证步骤。

hadoop安装好后,启动的时候总报错

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

网上查到有人说是hadoop的本地库不兼容,需要自己重新编译,于是搜索各种文章,一边参考一边跟着做,期间很浮躁走了很多弯路,虽然有很多步骤可能是不必要的,也在此一并记录(对于我认为可能没用的会在段首备注)

1.编译native,安装必须工具,参考machadoop 2.6.0编译native library,刚开始装的最新版protobuf,编译的时候common工程就出错了,提示protobuf版本不对,重新选择2.5的protobuf版本后common编译过(该文说不能用brew来装protobuf,其实是可以的,文末会附上方法),但是kms开始出现问题:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (dist) on project hadoop-kms: An Ant BuildException has occured: exec returned: 1

2. 重新查看源代码中根目录的BUILDING.txt文件,上面标有requirements,所以其实没必要上网找解决方法

3. Brew install zlib-devel不成功,提示不存在;查询到http://stackoverflow.com/questions/23749530/brew-install-zlib-devel-on-mac-os-x-mavericks,说

xcode-select --install

In OS X 10.9+, the command line developer tools are now installed on demand. So after running this also zlib and zlib-devel should be available (no need for brew install zlib...)

于是执行xcode-select --install试试,也不知道怎么验证是否安装成功,且往下走吧;再次编译,还是失败,还是在kms开始出现问题

4. (可能没用,可跳过)参考http://stackoverflow.com/questions/21752279/failed-to-execute-goal-org-apache-maven-pluginsmaven-antrun-plugin1-6-run-pr,执行mvn clean package -DskipTests -Dtar无效

5. 参考http://blog.csdn.net/epeaktop/article/details/51604440将protobuf放进环境变量再编译试试(其中用brew安装的软件在目录/usr/local/Cellar/ 下,根据实际目录换掉文中对应的路径),还是报错

6. (可能没用,可跳过)又开始怀疑是不是zlib的问题,但是没有找到mac下的安装方法,查询zlib网站,下载zlib代码,按其根目录的readme文件编译,通过。这是不是意味着zlib-devel安装好了?再次编译,依然失败

7. (可能没用,可跳过)怀疑可能跟openssl有关系,因为编译另一个版本hadoop-2.7.3就是在编译pip的时候失败了,而BUILDING.txt文件中明确说了pip的编译需要openssl的,于是上openssl官网下载包,按里边的intall文件编译,跟zlib很类似。重新编译,结果依旧,看来跟这两个没有关系。

8. 决定不再乱查找文章瞎折腾,自己查看控制台输出,找到最开始出错的地方

Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (dist) on project hadoop-kms: An Ant BuildException has occured: exec returned: 1

[ERROR] around Ant part ...<exec dir="/Users/lishengda/Downloads/hadoop-2.7.0-src/hadoop-common-project/hadoop-kms/target" executable="sh" failonerror="true">... @ 10:134 in /Users/lishengda/Downloads/hadoop-2.7.0-src/hadoop-common-project/hadoop-kms/target/antrun/build-main.xml

[ERROR] -> [Help 1]

于是打开对应的文件/Users/lishengda/Downloads/hadoop-2.7.0-src/hadoop-common-project/hadoop-kms/target/antrun/build-main.xml,通过搜索找到对应行

...

<exec dir="/Users/lishengda/Downloads/hadoop-2.7.0-src/hadoop-common-project/hadoop-kms/target" executable="sh" failonerror="true">

    <arg line="./tomcat-untar.sh"/>

  </exec>

...

这xml文件虽然我不熟悉,但是看语句结合目前情况也能猜到意思是执行查看错误是执行/Users/lishengda/Downloads/hadoop-2.7.0-src/hadoop-common-project/hadoop-kms/target下的tomcat-utar.sh文件,既然执行出错了,那就找到并打开这个sh文件,内容就两行,分别拷贝出来在控制台执行,

第一行没问题,

lishengdadeMacBook-Air:hadoop-2.7.0-src lishengda$ cd "/Users/lishengda/Downloads/hadoop-2.7.0-src/hadoop-common-project/hadoop-kms/target/tomcat.exp"

lishengdadeMacBook-Air:tomcat.exp lishengda$ pwd

/Users/lishengda/Downloads/hadoop-2.7.0-src/hadoop-common-project/hadoop-kms/target/tomcat.exp

第二行报错,这应该就是错误源头

lishengdadeMacBook-Air:tomcat.exp lishengda$ gzip -cd ../../downloads/apache-tomcat-6.0.41.tar.gz | tar xf -

gzip: ../../downloads/apache-tomcat-6.0.41.tar.gz: unexpected end of file

gzip: ../../downloads/apache-tomcat-6.0.41.tar.gz: uncompress failed

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值