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

来源:互联网 发布:迅游网络加速器手机版 编辑:程序博客网 时间:2024/05/16 15:39

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

环境准备,一般来说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.2lsudo 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一个个解决。

原创粉丝点击