使用源码编译Hadoop

栏目: 服务器 · 发布时间: 5年前

内容简介:Hadoop以两种方式发行,一种是binary格式的tar压缩包,一种是source源文件。考虑到暂时并无修改Hadoop源码的需求,简单起见,我都是直接使用编译好的binary包。然后,在运行Hadoop时,却会收到一个警告:“Unable to load native-hadoop library for your platform” 。在stackoverflow站点上,找到了相关问题的一个帖子,export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib

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节点)

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


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Game Programming Patterns

Game Programming Patterns

Robert Nystrom / Genever Benning / 2014-11-2 / USD 39.95

The biggest challenge facing many game programmers is completing their game. Most game projects fizzle out, overwhelmed by the complexity of their own code. Game Programming Patterns tackles that exac......一起来看看 《Game Programming Patterns》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具