前言

  • 为什么要使用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 查看

最后在宿主机中查看文件

已经有了.

最后祝你好运,一次成功!

利用Docker编译Hadoop 3.1.0的更多相关文章

  1. 在docker容器中编译hadoop 3.1.0

    在docker容器中编译hadoop 3.1.0 优点:docker安装好之后可以一键部署编译环境,不用担心各种库不兼容等问题,编译失败率低. Hadoop 3.1.0 的源代码目录下有一个 `sta ...

  2. mac OS X Yosemite 上编译hadoop 2.6.0/2.7.0及TEZ 0.5.2/0.7.0 注意事项

    1.jdk 1.7问题 hadoop 2.7.0必须要求jdk 1.7.0,而oracle官网已经声明,jdk 1.7 以后不准备再提供更新了,所以趁现在还能下载,赶紧去down一个mac版吧 htt ...

  3. 64位CentOS上编译 Hadoop 2.2.0

    下载了Hadoop预编译好的二进制包,hadoop-2.2.0.tar.gz,启动起来后.总是出现这样的警告: WARN util.NativeCodeLoader: Unable to load n ...

  4. 64位centos 下编译 hadoop 2.6.0 源码

    64位os下为啥要编译hadoop就不解释了,百度一下就能知道原因,下面是步骤: 前提:编译源码所在的机器,必须能上网,否则建议不要尝试了 一. 下载必要的组件 a) 下载hadoop源码 (当前最新 ...

  5. CentOS 6.4 64位 源码编译hadoop 2.2.0

    搭建环境:Centos 6.4 64bit 1.安装JDK 参考这里2.安装mavenmaven官方下载地址,可以选择源码编码安装,这里就直接下载编译好的wget http://mirror.bit. ...

  6. CentOS 64位上编译 Hadoop 2.6.0

    Hadoop不提供64位编译好的版本号,仅仅能用源代码自行编译64位版本号. 学习一项技术从安装開始.学习hadoop要从编译開始. 1.操作系统编译环境 yum install cmake lzo- ...

  7. Centos 6.5 X64 环境下编译 hadoop 2.6.0 --已验证

    Centos 6.5 x64 hadoop 2.6.0 jdk 1.7 protobuf-2.5.0 maven-3.0.5 set environment export JAVA_HOME=/hom ...

  8. ubuntu 环境下编译 hadoop 2.6.0的简单方法

    由于服务器一般都64位系统, hadoop网站的release版本32位native库不能运行,所以需要自己在编译一下.以下是我采用的一个编译的过程,比较简单,不用下载各种版本及环境配置,通过命令就能 ...

  9. Windows 10 上编译 Hadoop

    下载源码 源码下载地址(Source download):https://hadoop.apache.org/releases.html 这里以 2.9.2 为例,查看源码中的编译说明文件 BUILD ...

随机推荐

  1. U盘在制作Ubuntu启动盘后Windows系统下显示空间不对的解决办法(Ubuntu系统下格式化U盘的方法)

    用Ubuntu系统自带的启动盘制作工具后,将U盘拿到Windows系统下使用显示出的空间与U盘大小不同. 解决该问题的办法: 使用Linux终端: 第一步:sudo fdisk -l 这个命令主要是查 ...

  2. JS知识点简单总结

    JS(JavaScript) 是一种解释性语言 是弱/动态 最开始用于表单验证的 JS的五个部分: 1.核心语言定义 2.原生对象和内置对象 5boolean 3.BOM 4.DOM 5.事件处理模型 ...

  3. s3cmd安装

    配置yum.repos cd /etc/yum.repos.d/ vim s3tools.repo [s3tools] name=Tools for managing Amazon S3 - Simp ...

  4. 蓝桥杯练习——C++输出阶乘的最右边一位非零数

    #include<iostream> #include<iomanip> using namespace std; #define M 10000 #define N 1000 ...

  5. Remote System Explorer Operation总是运行后台服务,卡死eclipse

    阿里云 > 教程中心 > android教程 > Remote System Explorer Operation总是运行后台服务,卡死eclipse Remote System E ...

  6. 简单的dos命令

    cd ..   进入上一层目录cd /..   进入当前盘所有根目录d:  进入d盘dir  查看下一级目录d:>d:\abc.txt 新建一个文档hostname   主机名SET 查看环境变 ...

  7. Response attachment filename 中文乱码

    Response.setHeader("Content-Disposition", "attachment; filename=" + fileName+&qu ...

  8. CentOS安装wkhtmltopdf及解决中文支持问题

    安装wkhtmltopdf,先下载  wkhtmltox-0.12.2.1_linux-centos6-amd64.rpm yum install -y wkhtmltox-0.12.2.1_linu ...

  9. Spring Boot 之restful风格

    步骤一:restful风格是什么? 我们知道在做web开发的过程中,method常用的值是get和post.可事实上,method值还可以是put和delete等等其他值. 既然method值如此丰富 ...

  10. bootstrap-datetimepicker日期控件下载

    bootstrap-datetimepicker.js bootstrap-datetimepicker.zh-CN.js bootstrap-datetimepicker.min.css 下载网站: ...