docker编译hadoop3.1.0

本文介绍如何在CentOS环境下安装Docker,并利用Docker构建一个用于编译Hadoop的环境。包括安装必要的软件包如Maven和CMake等,配置环境变量,以及编译Hadoop源码的具体步骤。

一、安装并启动docker

  注:目前,CentOS 仅发行版本中的内核支持 Docker。

  Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。

  Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本

  可使用uname -r 查看内核版本

1 rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
2 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
3 yum -y install docker-io
4 service docker start

二、创建Dockerfile文件,内容为拉取一个centos7镜像并安装编译hadoop需要的相关软件:

1.创建一个任意名称的文件夹放Dockerfile文件并写入内容

1 [hadoop@hd1 hadoop]$ cd /usr/local/src/
2 [hadoop@hd1 hadoop]$ mkdir centos7-hadoop-compile
 1 [hadoop@hd1 hadoop]$vi Dockerfile
 2 # 镜像来源
 3 FROM centos:7
 4 
 5 # 镜像创建者
 6 MAINTAINER "HAO" <z3261743@163.com>
 7 
 8 # 运行命令安装环境依赖
 9 # 使用 -y 同意全部询问
10 RUN yum update -y && \
11     yum groupinstall -y "Development Tools" && \
12     yum install -y wget \
13                protobuf-devel \
14                protobuf-compiler \
15                pkgconfig \
16                openssl-devel \
17                zlib-devel \
18                gcc \
19                automake \
20                autoconf \
21                make

2.在Dockerfile文件所在的目录下,运行命令(命令含义为在当前目录下构建镜像,镜像名可自定义):

1 docker build -t <imagename>

3.构建成功后,可以进入docker容器的交互模式(-i:打开一个终端,-t与docker容器进行标准化输入输出):

1 docker run -it <imagename>

注:由于宿主机安装的有1.8的jdk,所以直接使用命令挂载到docker容器上并进入docker

1 docker run -it -v /usr/local/jdk <imagename>

此时进入docker的终端

1.安装maven
cd /usr/local/
wget http://apache.fayea.com/maven/maven-3/3.5.3/binaries/apache-maven-3.5.3-bin.tar.gz
tar zxvf apache-maven-3.5.3-bin.tar.gz
mv apache-maven-3.5.3/ maven
2.安装cmake
A.卸载老版本cmake
yum list cmake
yum remove -y cmake.x86_64
B.下载编译
cd /usr/local/
wget https://cmake.org/files/v3.11/cmake-3.11.1.tar.gz
tar zxvf cmake-3.11.1.tar.gz
mv cmake-3.11.1/ cmake
cd cmake/
./configure
make
make install
3.配置环境变量
vi /etc/profile
末尾添加如下内容
==============================
export JAVA_HOME=/usr/local/jdk
export M2_HOME=/usr/local/maven
export CMAKE_HOME=/usr/local/cmake

export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin:$CMAKE_HOME/bin
==============================
source /etc/profile
4.验证安装是否成功
[root@6423153fbfbc target]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
[root@6423153fbfbc target]# mvn -version
Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-24T19:49:05Z)
Maven home: /usr/local/maven
Java version: 1.8.0_131, vendor: Oracle Corporation
Java home: /usr/local/jdk/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "2.6.32-642.el6.x86_64", arch: "amd64", family: "unix"
[root@6423153fbfbc target]# cmake -version
cmake version 3.11.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).
5.拷贝或下载Hadoop3.1.0的源码
下载直接使用wget即可
本次是已经下载好了源码放在了宿主机上,所以拷贝宿主机的源码到当前容器中
A.另开一个宿主机终端,获取容器名称或者id :
[root@hd3 centos7-hadoop-complier]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6423153fbfbc centos7-hadoop-compile "/bin/bash" 2 hours ago Up 2 hours reverent_shockley
B.获取整个容器的id
[root@hd3 centos7-hadoop-complier]# docker inspect -f '{{.Id}}' 6423153fbfbc
6423153fbfbcc4fe5c1ab760945700e57a057289064d116660f868025c765d21
C.在主机上拷贝文件
cp /usr/local/src/hadoop-3.1.0-src.tar.gz /var/lib/docker/devicemapper/mnt/步骤B获取的完 整ID/rootfs/root
D.在刚才的docker容器终端内的/root目录下已经拷贝进去了源码
五、编译hadoop源码
在docker容器终端中,进入hadoop源码的根目录
cd hadoop-3.1.0-src
执行编译
mvn package -e -X -Pdist,native -DskipTests -Dtar
六、编译成功后,拷贝编译好的包到宿主机
docker cp reverent_shockley:/usr/local/src/hadoop-3.1.0-src/hadoop-dist/target/hadoop-3.1.0.tar.gz /usr/local/src/

 

转载于:https://www.cnblogs.com/itzack/p/8953567.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值