张子阳的博客

首页 读书 技术 店铺 关于
张子阳的博客 首页 读书 技术 关于

Hadoop 使用源码进行编译

2018-08-12 张子阳 分类: 大数据处理

Hadoop以两种方式发行,一种是binary格式的tar压缩包,一种是source源文件。考虑到暂时并无修改Hadoop源码的需求,简单起见,我都是直接使用编译好的binary包。然后,在运行Hadoop时,却会收到一个警告:“Unable to load native-hadoop library for your platform” 。在stackoverflow站点上,找到了相关问题的一个帖子,stackoverflow,按照其中的一个高票回复,按下面这样修改了一下环境变量,解决了这个问题:

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib/native" export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native:$LD_LIBRARY_PATH

但同时,最高票的答复说,造成这个问题的原因是官方的binary是32位编译的,如果在64位系统上运行,需要重新编译(I assume you're running Hadoop on 64bit CentOS. The reason you saw that warning is the native Hadoop library $HADOOP_HOME/lib/native/libhadoop.so.1.0.0 was actually compiled on 32 bit.)。众所周知,32位系统存在着最大4GB内存的问题,因此,我觉得还是下载Hadoop源码,然后重新编译一下比较稳妥。本文编译的Hadoop版本是2.9.1。

安装编译工具

# yum install gcc gcc-c++ openssl-devel make cmake

安装maven

本文所有下载的文件都位于 ~/downloads 文件夹下,可以事先创建好。

cd ~/downloads; wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz; tar -zvxf apache-maven-3.5.4-bin.tar.gz -C /opt;

修改~/.bashrc:

vim ~/.bashrc; export M3_HOME=/opt/apache-maven-3.5.4 export PATH=$PATH:$M3_HOME/bin

安装protobuf

wget https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz tar -xvzf protobuf-2.5.0.tar.gz -C /opt/ cd /opt/protobuf-2.5.0 ./configure make;make install;

截止2018.8,protobuf的最新版本是3.6.1,但是编译Hadoop2.9.1时,protobuf的版本需为2.5.0。编译protobuf的时间可能会很长,我是用了大概30分钟。

编译Hadoop

cd ~/downloads wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.9.1/hadoop-2.9.1-src.tar.gz; tar -xvzf hadoop-2.9.1-src.tar.gz -C /opt/; cd /opt/hadoop-2.9.1-src; mvn package -Pdist,native -DskipTests -Dtar

这个编译过程更长,可能有1个小时,而且因为网络不稳定可能会中断,中断后可以在中断的位置重新开始。例如,我就在安装hadoop-aws这个位置中断了,之后只要像下面这样重新执行一下就好了:

# mvn package -Pdist,native -DskipTests -Dtar -rf :hadoop-aws

编译成功后,按照上面的配置,hadoop的安装包将位于:/opt/hadoop-2.9.1-src/hadoop-dist/target/hadoop-2.9.1.tar.gz

接下来,就可以安装Hadoop了,可以参考:安装和配置Hadoop(单节点)安装和配置Hadoop集群(3节点)

感谢阅读,希望这篇文章能给你带来帮助!