记录在macOS Sierra系统上编译Hadoop本地库过程

在这个过程中,摸索了快一整天,百度和参考了不少博客和文章,所以本文不算是完全的原创,仅记录下来。不同操作系统或环境可能不可以编译成功。

环境准备,一般来说java开发都需要用到jdk和maven的,在此就不记录这两个的安装和配置了,只是记录下做提醒:
  • 已安装和配置好jdk,当时的版本是1.8.0_144

  • 已安装和配置好maven,当时的版本是3.5.0

  • 下载hadoop源码(http://hadoop.apache.org/releases.html) hadoop-2.6.5-src.tar,解压得到hadoop-2.6.5-src文件夹


在解压得到的hadoop-2.6.5-src文件夹根目录下,BUILDING.txt文件里有说明编译需要的条件。

Requirements:

  • Unix System (现在Mac OS系统上进行)
  • JDK 1.6+ (这个前面环境准备说过了)
  • Maven 3.0 or later (这个前面环境准备说过了)
  • Findbugs 1.3.9 (if running findbugs) (没有用到,所以没有安装)
  • ProtocolBuffer 2.5.0 (这个一定是2.5.0版本的)
  • CMake 2.6 or newer (if compiling native code), must be 3.0 or newer on Mac (正常安装和配置就可以了)
  • Zlib devel (if compiling native code) (没有用到,所以没有安装)
  • openssl devel ( if compiling native hadoop-pipes ) (安装和配置openssl)
  • Internet connection for first build (to fetch all Maven and Hadoop dependencies) (必须联网,要下载很多jar包)

1、安装CMake

官网下载对应操作系统的版本https://cmake.org/download/,Mac OS系统下载对应的cmake-3.10.0-rc1-Darwin-x86_64.dmg,直接进行安装就可以了。

2、 安装和配置ProtocolBuffer 2.5.0

注意一定是2.5.0版本的,下载得到protobuf-2.5.0.tar,解压后得到protobuf-2.5.0文件夹。进入到protobuf-2.5.0文件夹,如果设置编译成功后输出的目录 为 /Users /tools/ protobuf-2.5.0则执行:
./configure --prefix=/Users /tools/ protobuf-2.5.0  

make 

make install
编辑vim ~/.bash_profile 文件,配置环境变量:

这里写图片描述

PROTOBUF是解压后的目录路径,记得使~/.bash_profile 文件生效:

source ~/.bash_profile
终端检查是否配置成功:

这里写图片描述

3、安装和配置openssl

官网下载(https://www.openssl.org/source/)后解压,把解压后得到的文件夹放到了/usr/local/目录下,进入到/usr/local/openssl-1.0.2l目录,执行:
./config --prefix=/usr/local/openssl-1.0.2l

sudo make
执行 sudo make后提示版本不对,可以修改openssl-1.0.2l根目录下的Makefile文件,将darwin-i386-cc修改为darwin64-x86_64-cc,然后再执行:
sudo make install
编辑vim ~/.bash_profile 文件,配置环境变量:

这里写图片描述

记得使~/.bash_profile 文件生效:
source ~/.bash_profile
终端检查是否成功:

这里写图片描述

4、在前面说到的BUILDING.txt文件中,还有这么一段话:

Building on OS/X


 sudo mkdir /usr/libexec/java_home/Classes

 sudo ln -s /usr/libexec/java_home/lib/tools.jar /usr/libexec/java_home/Classes/classes.jar
意思是在jdk目录下新建Classes文件夹:
    cd $JAVA_HOME

    mkdir Classes
并创建链接,需要绝对路径:
sudo ln -s $JAVA_HOME/lib/tools.jar $JAVA_HOME/Classes/classes.jar

5、终端进入hadoop-2.6.5-src文件夹根目录下,执行:

mvn package -Pdist,native -DskipTests=true  -Dmaven.javadoc.skip=true -Dtar
执行完成后会在hadoop-2.6.5-src/hadoop-dist/target/hadoop-2.6.5/lib/native目录下生成本地库,把该文件夹下所有文件复制粘贴到hadoop的$HADOOP_HOME/lib/native目录,执行:
hadoop fs -ls /
就不会提示:
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

如果第5步过程中有报异常不能编译成功的,按照打印的日志百度或者Google一个个解决。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值