前言
- 爲何要使用Docker編譯,請自行百度
- 操做系統環境:Centos 6.8
uname -r
內核版本:2.6.32-642.el6.x86_64java
- 除非有把握不然不要在Centos6.8中直接編譯hadoop3.0,由於依賴的不少服務須要的版本,這個操做系統不支持。
1、安裝Docker
執行如下指令安裝並啓動Dockerlinux
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
docker run hello-world
結果以下:shell
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 correctlyapache
Docker經常使用的一些指令:centos
- docker exec -it 775c7c9ee1e1 /bin/bash --進入以前的某個容器實例
- docker rm $(docker ps -a -q) 刪除全部已中止的容器(container)
- docker rmi <imageid> 刪除某個容器
- docker ps 查看當前活動的容器實例
- docker ps -a 查看全部容器實例
2、建立Dockerfile文件
內容爲拉取一個centos7鏡像並安裝編譯hadoop須要的相關軟件bash
首先建立一個Docker目錄oracle
[root@SVR-29-152 ~]# cd /usr/local/ [root@SVR-29-152 local]# mkdir docker [root@SVR-29-152 local]# cd docker
建立Dockerfileapp
[root@SVR-29-152 docker]# vi Dockerfile
文件內容以下:maven
# 鏡像來源 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以上版本,因此上面腳本中不安裝這些軟件,等鏡像生成後,進入鏡像手動安裝
3、進入docker容器的交互模式
構建成功後,進入docker容器的交互模式(-i:打開一個終端,-t與docker容器進行標準化輸入輸出):
docker run -it <imagename>
[root@SVR-29-152 docker]# docker run -it centos7-hadoop-compile
4、安裝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).
5、編譯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 查看
最後在宿主機中查看文件
已經有了.
最後祝你好運,一次成功!