前言

  • 为什么要使用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. Lua 基础总结

    lua 数组下标从 1 开始, 不是 0 lua 逻辑运算符  与 或 非  就是英文  and  or  not local  局部变量 数据类型:lua是一门动态类型语言,变量没有类型,只有值才有 ...

  2. Ubuntu下安装keras

    0 系统版本Ubuntu16.04 1 系统更新 sudo apt update sudo apt upgrade 2 安装python基础开发包 sudo apt install -y python ...

  3. linux 虚拟机设置好固定ip 修改了 dns 网络需要设置成桥接模式

    linux  虚拟机设置好固定ip 修改了 dns  网络需要设置成桥接模式  可以修复网络连接(浏览器返回 server not  found)

  4. Linux Swap交换分区介绍

    Swap分区在系统的物理内存不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用.那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中, ...

  5. 微服务—分布式服务追踪sleuth和zipkin

    随着业务的发展,系统规模也会越来越大,各微服务间的调用关系也越来越错综复杂. 通常一个客户端发起的请求在后端系统中会经过多个不同的微服务调用来协同产生最后的请求结果, 在复杂的微服务架构系统中,几乎每 ...

  6. JAVA学习笔记之图解JAVA参数传递

    今天做项目,发现了一个问题,当String作为参数传递的时候,在函数内部改变值对外部的变量值无影响,如下代码: public static void main(String[] args) { Str ...

  7. ThinkPHP5执行流程分析

    1.入口文件(tp5\public\index.php) 作用: 1)定义目录常量. 2)加载框架引导目录. 2.框架引导目录(tp5\thinkphp\start.php) 作用: 1)引导基础文件 ...

  8. Helloworld.JaVa 第一次编程

    package Jc; class Jc1st { public static void main(String[] args) { System.out.println("Hello Wo ...

  9. SpringBoot 打包为Docker进行

    可以有两种方式: 1.dockerfile 2.maven docker 第一种方式:通过dockerfile打包Docker镜像 1.将dockerfile和 springboot打包的jar文件放 ...

  10. SpringBoot集成Mybatis-PageHelper分页工具类,实现3步完成分页

    在Mybatis中,如果想实现分页是比较麻烦的,首先需要先查询出总的条数,然后再修改mapper.xml,为sql添加limit指令. 幸运的是现在已经不需要这么麻烦了,刘大牛实现了一个超牛的分页工具 ...