使用源码编译Hadoop

使用源码编译Hadoop

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网大杂烩

操作系统-进程和线程

进程线程的区别 1、进程是什么? 是具有一定独立功能的程序、它是系统进行资源分配和调度的一个独立单位,重点在系统调度和单独的单位,也就是说进程是可以独立运行...

16140
来自专栏伦少的博客

Spark Streamming+Kafka提交offset实现有且仅有一次

77220
来自专栏专注研发

HDFS的WEB页面访问常见问题

本文基于HADOOP-3..1.0,Cecntos7.0环境下进行测试,所以遇到很多新鲜的问题;

2.4K10
来自专栏Albert陈凯

Hadoop数据分析平台实战——180Oozie工作流使用介绍离线数据分析平台实战——180Oozie工作流使用介绍

离线数据分析平台实战——180Oozie工作流使用介绍 Oozie工作流介绍 Oozie的四大组件服务分别是: workflow, coordinator, b...

41950
来自专栏葡萄城控件技术团队

Winform文件下载之WinINet

在C#中,除了webclient我们还可以使用一组WindowsAPI来完成下载任务。这就是Windows Internet,简称 WinINet。本文通过一个...

23480
来自专栏王磊的博客

entity framework使用技巧

1、无需先查询数据的修改方法 // 将创建的data实体添加到ObjectContext db.Data.Attach(data); // 手动设置状态为修改 ...

27950
来自专栏Java Web

初学Java Web(3)——第一个Servlet

这学期 Java Web 课程的第一节课就简短复习了一下 Java 的一些基础知识,所以觉得 Java 的基础知识还是很重要的,但当我想要去写一篇 Java ...

33340
来自专栏java一日一条

HDFS知识点总结

HDFS是什么:HDFS即Hadoop分布式文件系统(Hadoop Distributed Filesystem),以流式数据访问模式来存储超大文件,运行于商用...

13320
来自专栏小白鼠

Hadoop集群搭建Linux环境准备基础配置安装HadoopHA集群安装HIVE安装MySQL安装HBASE安装Flume问题总结

本文主要讲解了Hadoop集群环境的搭建过程,实际应用中应该不会这样做,而是通过一些管理工具进行安装,比如可视化安装:Ambari。

57420
来自专栏Hadoop实操

如何在非安全的CDH集群中部署多用户JupyterHub服务并集成Spark2

Fayson在前一篇文章《如何在非安全的CDH集群中部署Jupyter并集成Spark2》中介绍了Jupyter Notebook的部署与Spark2集成。Ju...

1.1K20

扫码关注云+社区

领取腾讯云代金券