前言
- 为什么要使用Docker编译,请自行百度
- 操作系统环境:Centos 6.8
uname -r
内核版本:2.6.32-642.el6.x86_64
- 除非有把握否则不要在Centos6.8中直接编译hadoop3.0,因为依赖的很多服务需要的版本,这个操作系统不支持。
一、安装Docker
执行以下指令安装并启动Docker
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 yum -y install docker-io service docker start
验证 docker
是否安装成功并在容器中执行一个测试的镜像
docker run hello-world
结果如下:
Unable to find image 'hello-world:latest' locally
latest: Pulling from hello-world
882673a3c694: Pull complete
83f0de727d85: Pull complete
Digest: sha256:4555e23a9cf5a1a216bd8b0d71b08a25e4144c2ecf6adb26df9620245ba99529
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly
Docker常用的一些指令:
- docker exec -it 775c7c9ee1e1 /bin/bash --进入之前的某个容器实例
- docker rm $(docker ps -a -q) 删除所有已停止的容器(container)
- docker rmi <imageid> 删除某个容器
- docker ps 查看当前活动的容器实例
- docker ps -a 查看所有容器实例
二、创建Dockerfile文件
内容为拉取一个centos7镜像并安装编译hadoop需要的相关软件
首先创建一个Docker目录
[root@SVR-29-152 ~]# cd /usr/local/ [root@SVR-29-152 local]# mkdir docker [root@SVR-29-152 local]# cd docker
创建Dockerfile
[root@SVR-29-152 docker]# vi Dockerfile
文件内容如下:
# 镜像来源 FROM centos:7 # 镜像创建者 MAINTAINER "HAO" <z3261743@163.com> # 运行命令安装环境依赖 # 使用 -y 同意全部询问 RUN yum update -y && yum groupinstall -y "Development Tools" && yum install -y wget protobuf-devel protobuf-compiler pkgconfig openssl-devel zlib-devel gcc automake autoconf make
创建镜像文件:docker build -t <imagename> <Dockerfile所在的目录>
[root@SVR-29-152 docker]# docker build -t centos7-hadoop-compile .
成功后如图所示:
(注:)由于hadoop编译时需要3.3.0以上版本的Maven和1.8以上的jdk,以及cmake3.1以上版本,所以上面脚本中不安装这些软件,等镜像生成后,进入镜像手动安装
三、进入docker容器的交互模式
构建成功后,进入docker容器的交互模式(-i:打开一个终端,-t与docker容器进行标准化输入输出):
docker run -it <imagename>
[root@SVR-29-152 docker]# docker run -it centos7-hadoop-compile
四、安装jdk、maven、cmake
下载JDK:wget http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.tar.gz?AuthParam=1524730623_21dd0411e24654629aad9b01069dbb80
下载maven:wget http://apache.fayea.com/maven/maven-3/3.5.3/binaries/apache-maven-3.5.3-bin.tar.gz
下载cmake:wget https://cmake.org/files/v3.11/cmake-3.11.1.tar.gz
存放的目录为:/usr/local/src
1.安装JDK
解压包:
[root@5a0ab167faad src]# tar -zxvf jdk-8u171-linux-x64.tar.gz [root@5a0ab167faad src]# mv jdk1.8.0_171 ../
2.安装maven
解压包:
[root@5a0ab167faad src]# tar -zxvf apache-maven-3.5.3-bin.tar.gz [root@5a0ab167faad src]# mv apache-maven-3.5.3 ../
3.安装cmake
先卸载旧版本
[root@5a0ab167faad src]# yum list cmake [root@5a0ab167faad src]# yum remove -y cmake.x86_64
解压包:
[root@5a0ab167faad src]# tar -zxvf cmake-3.11.1.tar.gz [root@5a0ab167faad src]# mv cmake-3.11.1 ../
安装包:
[root@5a0ab167faad src]# cd /usr/local/cmake-3.11.1/ [root@5a0ab167faad cmake-3.11.1]# ./configure [root@5a0ab167faad cmake-3.11.1]# make [root@5a0ab167faad cmake-3.11.1]# make install
4.配置环境变量
[root@5a0ab167faad local]# vi /etc/profile
文件末尾添加如下内容:
export JAVA_HOME=/usr/local/jdk1.8.0_171
export M2_HOME=/usr/local/apache-maven-3.5.3
export CMAKE_HOME=/usr/local/cmake-3.11.1
使配置生效
[root@5a0ab167faad local]# source /etc/profile
5.验证安装是否成功
[root@5a0ab167faad local]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
[root@5a0ab167faad local]# mvn -version
Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-24T19:49:05Z)
Maven home: /usr/local/apache-maven-3.5.3
Java version: 1.8.0_171, vendor: Oracle Corporation
Java home: /usr/local/jdk1.8.0_171/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@5a0ab167faad local]# cmake -version
cmake version 3.11.1
CMake suite maintained and supported by Kitware (kitware.com/cmake).
五、编译hadoop
1.拷贝或下载Hadoop3.1.0的源码
[root@5a0ab167faad src]# wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-3.1.0/hadoop-3.1.0-src.tar.gz
[root@5a0ab167faad src]# tar -zxf hadoop-3.1.0-src.tar.gz
[root@5a0ab167faad src]# cd hadoop-3.1.0-src
2.执行编译
[root@5a0ab167faad hadoop-3.1.0-src]# mvn package -e -X -Pdist,native -DskipTests -Dtar
会执行比较长的时间。。。。。。。。。。。。。。。。。大约一小时。。。
编译成功!
编译后的文件在:/usr/local/src/hadoop-3.1.0-src/hadoop-dist/target
编译成功后,拷贝编译好的包到宿主机,要先退出当前镜像,或者新开一个shell进程。
[root@5a0ab167faad src]# exit [root@SVR-29-152 ~]# docker cp jolly_carson:/usr/local/src/hadoop-3.1.0-src/hadoop-dist/target/hadoop-3.1.0.tar.gz /usr/local/src/
这个指令中的“jolly_carson" 是指镜像实例的名称。可以通过docker ps 查看
最后在宿主机中查看文件
已经有了.
最后祝你好运,一次成功!