基于Docker编译Hadoop

异步薄雾
• 阅读 4560

摘要: 将编译Hadoop所需要的依赖软件安装到Docker镜像中,然后在Docker容器中编译Hadoop,可以提高编译效率,同时避免污染主机。编译其他软件时,也可以参考这篇博客的方法。

GitHub地址:

基于Docker编译Hadoop

在前一篇博客中,我介绍了64位Ubuntu中编译Hadoop的步骤。这篇博客将介绍基于Docker编译Hadoop的方法。

一. 编译步骤

1. 下载Docker镜像

sudo docker pull kiwenlau/compile-hadoop

或者自行构建Docker镜像

sudo docker build -t kiwenlau/compile-hadoop .

2. 下载并解压Hadoop源文件

export VERSION=2.7.2
wget http://archive.apache.org/dist/hadoop/core/hadoop-$VERSION/hadoop-$VERSION-src.tar.gz
tar -xzvf hadoop-$VERSION-src.tar.gz

3. 运行Docker容器,在容器中编译Hadoop

sudo docker run -v $(pwd)/hadoop-$VERSION-src:/hadoop-$VERSION-src kiwenlau/compile-hadoop /root/compile.sh $VERSION

这一步比较耗时,大概需要15~30分钟。

正确执行的结果如下:

[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 23:46.056s
[INFO] Finished at: Tue May 31 16:40:53 UTC 2016
[INFO] Final Memory: 210M/915M
[INFO] ------------------------------------------------------------------------


comile hadoop 2.7.2 success!

编译好的二进制文件包位于

hadoop-2.7.2-src/hadoop-dist/target/hadoop-2.7.2.tar.gz

编译其他版本的Hadoop的步骤一致,仅需改变VERSION的值。

可以使用wget命令直接下载GitHub上的Hadoop二进制包:

wget https://github.com/kiwenlau/compile-hadoop/releases/download/$VERSION/hadoop-VERSION.tar.gz

二. 方法总结

编译其他软件时,也可以参考本文介绍的方法,具体细节可以参考源码kiwenlau/compile-hadoop

1. 构建编译所需的Docker镜像

编译软件往往需要安装很多依赖,而编译不同的软件有时需要不同版本的依赖,如果直接在主机上安装这些依赖会污染主机,而且也不易重复。

2. 下载软件源码

源码不放在Docker镜像里面,可以方便编译不同版本的软件,也可以提高构建Docker镜像的效率。

3. 运行Docker容器编译软件

软件源码以数据卷(volume)的形式挂载的容器内,编译所得的可执行文件也将位于数据卷内。


版权声明
转载时请注明作者KiwenLau以及本文地址:
http://kiwenlau.com/2016/06/05/160605-compile-hadoop-docker/


点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
ARM64架构下,OpenJDK的官方Docker镜像为何没有8版本
为什么需要ARM64架构的OpenJDK8的Docker镜像对现有的Java应用,之前一直运行在x86处理器环境下,编译和运行都是JDK8,如今在树莓派的Docker环境运行(也可能是其他ARM环境,如华为的泰山ARM服务器),需要JDK8镜像作为基础镜像。OpenJDK的官方Dockerfile去OpenJDK的docker镜像
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
VMware中 CentOS7挂载windows共享文件夹
在编译自己的hadoop时,不想再次在虚拟机中下载jar包,就想到了挂载自己本地的maven仓库,使用本地仓库来进行编译,这里就需要使用VMware的VMwareTools了,直接复制官方文档(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fdocs.vmware.com%2Fcn%2
Stella981 Stella981
3年前
ARM架构下的Docker环境,OpenJDK官方没有8版本镜像,如何完美解决?
为什么需要ARM架构下的OpenJDK8的Docker镜像?对现有的Java应用,之前一直运行在x86处理器环境下,编译和运行都是JDK8,如今在树莓派的Docker环境运行(或者其他ARM架构电脑,例如华为泰山服务器),需要JDK8镜像作为基础镜像。现在有什么问题?在《ARM64架构下,OpenJDK的官方Docker镜像为何
Stella981 Stella981
3年前
Linux 内网编译 hadoop
1.环境CentOSrelease6.5(Final)x86\_64javaversion"1.7.0\_79" hadoop2.5.0src.tar.gzapachemaven3.3.9protobuf2.5.02.配置yumyum代理配置:/etc/y
Stella981 Stella981
3年前
Docker学习——多阶段构建(六)
之前的做法在Docker17.05版本之前,我们构建Docker镜像时,通常会采用两种方式:全部放入一个Dockerfile一种方式是将所有的构建过程编包含在一个Dockerfile中,包括项目及其依赖库的编译、测试、打包等流程,这里可能会带来的一些问题:1、Dockerfile特别长,可维护性降低2、镜像层次多,镜像体积较大,
Stella981 Stella981
3年前
Docker数据卷(Volume)
一、将Docker数据挂载到容器  在Docker中,要想实现数据的持久化(所谓Docker的数据持久化即_数据不随着Container的结束而结束_),需要将数据从宿主机挂载到容器中。目前Docker提供了三种不同的方式将数据从宿主机挂载到容器中:  (1)volumes:Docker管理宿主机文件系统的一
Stella981 Stella981
3年前
Docker搭建MySQL服务
Docker开源镜像前面我们已经安装好了Docker,也简单了解了Docker。那么我们可以尝试搭建一个MySQL服务。要搭建服务就要启动服务容器,要创建容易就要有镜像,Docker提供了一个类似Github的开源平台,提供开源镜像,放心可靠。(毕竟大家都看着源码呢)Docker开源镜像传送门(https://www.o
Stella981 Stella981
3年前
Docker镜像优化:从1.16GB到22.4MB
Docker是一个供软件开发人员和系统管理员使用容器构建、运行和与分享应用程序的平台。容器是在独立环境中运行的进程,它运行在自己的文件系统上,该文件系统是使用docker镜像构建的。镜像中包含运行应用程序所需的一切(编译后的代码、依赖项、库等等)。镜像使用Dockerfile文件定义。术语dockerization或containeriz
小万哥 小万哥
2年前
如何通过Makefile优化加速编译过程提高开发效率
在软件开发中,编译是一个必不可少的过程。但是,当代码规模变得越来越大时,编译时间也会变得越来越长,这会严重影响开发效率。在这种情况下,优化Makefile可以帮助我们加速编译过程,以下是一些Makefile优化的建议使用多线程编译使用多线程编译是一种提高编
美凌格栋栋酱 美凌格栋栋酱
5个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(