利用Docker編譯Hadoop 3.1.0

前言

  • 爲何要使用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 查看

最後在宿主機中查看文件

已經有了.

最後祝你好運,一次成功!

相關文章
相關標籤/搜索