• 利用Docker编译Hadoop 3.1.0


    前言

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

    最后在宿主机中查看文件

    已经有了.

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

  • 相关阅读:
    h5实现 微信的授权登录
    js判断浏览器的环境(pc端,移动端,还是微信浏览器)
    动态判断时间插件显示到年月日时分秒
    H5发起微信支付
    Vue项目结合vux使用
    Swift学习笔记一:常量和变量
    iOS开发之解决系统数字键盘无文字时delete键无法监听的技巧
    Swift3.0之获取设备识别号deviceNo和保存账户AccountId
    Swift3.0之自定义debug阶段控制台打印
    Xcode之command+/快捷键添加注释不起作用
  • 原文地址:https://www.cnblogs.com/champaign/p/8952533.html
Copyright © 2020-2023  润新知