docker+ubuntu+ambari+HDP

1.调研:

先明确几个概念:
    1). Ambari只能安装Hortonworks Data Platform,即Hortonworks的开源Hadoop,不支持Apach的Hadoop平台;
    2). 对于已经安装了Apach Hadoop或者其他Hadoop平台的,不能使用Ambari来管理;

    docker ubuntu14.04
    一台master
    两台client
    Ambari-2.5.2.0
    HDP 2.6.2
    Ambari-server
    Ambari-client

    Docker安装:
    必须安装docker CE:http://www.mamicode.com/info-detail-2129876.html
    sudo docker pull ubuntu:14.04

2.制作镜像:

换清华源

        apt-get update
        apt-get install vim
        apt-get install openssh-service
        apt-get install ntp

设置root密码,方便后续ssh免密码登录,密码统一设置为123:

        passwd root 
        123
        123
        vim /etc/ssh/sshd_config
        替换#PermitRootLogin without-password为PermitRootLogin yes
        修改默认端口222222

配置hosts文件

        vim /etc/hosts  
        10.108.113.168  client1.gtensor.com 10.108.112.177  client2.gtensor.com10.108.114.228   master.gtensor.com 
        # stackc client1
        # stackd client2
        # stacke master

关闭防火墙

    #关闭防火墙。不关闭防火墙,会导致hadoop集群通信出现问题。不仅是server机器需要关闭防火墙,建议集群内每台机器也关闭防火墙,在自动化安装过程中,某些端口被占用导致它们通信出现问题,结果最后证明是防火墙的问题。
    # 在容器中部署docker服务,而docker服务又会使用到iptables,因此在启动容器时,也会同时启动容器内的iptables。但iptables必须工作在容器的privileged模式下,否则就会如上报错。如果不是以--net=host的方式进入docker没可能会出现关闭防火墙异常
        apt-get install ufw
        ufw status
        ufw disable

关闭SElinux

    提示,先检查SElinux状态,若为关闭,则无需再次关闭

openssl更新可以先不用管

    # ubuntu14.04不升级出现错误
    openssl升级为2016版:https://blog.csdn.net/why101010/article/details/51954827
        3:获取最新版本
            wget http://www.openssl.org/source/openssl-1.0.1t.tar.gz
        4:解压缩
            tar -zxvf openssl-1.0.1t.tar.gz
        5:进入目录
        `这里写代码片`cd  openssl-1.0.1t
        6:编译安装
             ./config --prefix=/usr/local/ssl   
             make depend 
             make
             make install
        7:#修改历史的OpenSSL文件设置备份mv 
            mv /usr/bin/openssl /usr/bin/openssl.old
            mv /usr/include/openssl /usr/include/openssl.old
        8:#设置软连接使其使用新的OpenSSL版本 
                ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
                ln -s /usr/local/ssl/include/openssl /usr/include/openssl
        9:#更新动态链接库数据
                echo "/usr/local/ssl/lib" >> /etc/ld.so.confldconfig -v
            这里写代码片如果是 1.0.1t,说明你安装正确了

保存镜像

    再打开一个命令行窗口,保存镜像
    sudo docker commit 
    sudo docker tag f1f1ad34d048 ambari:v1.0重命名
    sudo docker save -o ambari_1.0.tar imagesID保存至本地
    通过scp拷贝至远程服务器
    sudo docker load -i ambari_1.0.tar载入镜像

可能用到的docker命令:

    sudo docker ps -a
    sudo docker kill imagesID   杀死docker进程
    sudo docker rm imagesID 删除docker进程

启动命令

    sudo docker run -itd  -h client1.gtensor.com --privileged=True --net=host --name="net_host-hdp-client1" -v /home:/home ambari-agent:v1.0 /bin/bash
    sudo docker run -itd  -h client2.gtensor.com --net=host --privileged=True --name="net_host-hdp-client2" -v /home:/home ambari-agent:v1.0 /bin/bash
    sudo docker run -itd  -h master.gtensor.com --net=host --privileged=True --name="net_host-hdp-server" -v /home:/home ambari-server:v1.0 /bin/bash
    sudo docker exec -it imagesID /bin/bash
    这里必须采用--net=host的方式启用docker,因为若是再用默认,则不同节点之间的端口不能通信,除非在启用的时候用-p参数指出。
    用--net=host模式,修改docker内部容器ssh的端口号为2222,因为ssh默认端口号为22,这个端口号被物理主机占用。

分别配置免密码ssh登录:

        ssh-keygen -t rsa

        ssh-copy-id -i /root/.ssh/id_rsa.pub root@client1.gtensor.com -p2222
        ssh-copy-id -i /root/.ssh/id_rsa.pub root@client2.gtensor.com -p2222
        ssh-copy-id -i /root/.ssh/id_rsa.pub root@master.gtensor.com -p2222
        测试:ssh -p2222 root@client2.gtensor.com

2.Ambari安装

2.2.Ambari Server安装

在线安装:
        参考文献:https://blog.csdn.net/ggz631047367/article/details/50491616
        1.wget -O /etc/apt/sources.list.d/ambari.list http://public-repo-1.hortonworks.com/ambari/ubuntu14/2.x/updates/2.5.2.0/ambari.list
        或者vim /etc/apt/sources.list.d/ambari.list,里面输入:#VERSION_NUMBER=2.5.2.0-298
        deb http://public-repo-1.hortonworks.com/ambari/ubuntu14/2.x/updates/2.5.2.0 Ambari main
        两个方法效果相同
        Ambari2.5.2下载链接:http://archive.apache.org/dist/ambari/ambari-2.5.2/
        注意:在后续步骤中AmbariServer会自动安装Ambari Agent到刚才指定的机器列表
        2.apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B9733A7A07513CADapt-get updateapt-get install ambari-server (download ambari-server deb)
        3.ambari-server setup (download java jdk)
        4.ambari-server start
        5.浏览器输入:http://master.gtensor.com:8080
        6.账号密码默认都是:admin

离线安装:

        1、下载Ambari文件,网址:https://docs.hortonworks.com/HDPDocuments/Ambari-2.6.2.0/bk_ambari-installation/content/ambari_repositories.html
        2、用Python建立最简单的web服务器
        eg:
        mkdir web_server
        cd web_server
        vim aaa.txt(输入hello world!!作为测试)
        python3 -m http.server 2345
        浏览器访问:
        http://localhost:2345/aaa.txt(在浏览器输入这个网址就可以访问刚刚建立的aaa.txt,显示hello world!)
        将下载好的Ambari文件解压后,拷贝到web_server目录;
        在浏览器输入:http://localhost:2345/ambari测试是否能访问到;这个网址即为下一步的baseurl。
        Ambari: http://10.108.113.24:2345/ambari/ubuntu14/
        HDP: http://10.108.113.24:2345/HDP/ubuntu14/
        HDP-UTILS: http://10.108.113.24:2345/HDP-UTILS-1.1.0.21/repos/ubuntu14/
        3、配置
                vim /etc/apt/source.list.d/ambari.list
                输入内容:deb http://10.108.113.24:2345/ambari/ubuntu14/ Ambari main

                然后添加秘钥:apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B9733A7A07513CAD
                这一步参考官网:https://docs.hortonworks.com/HDPDocuments/Ambari-2.5.2.0/bk_ambari-installation/content/download_the_ambari_repo_ubuntu14.html
                这一步需要注意,如果为内网,需要配置代理,用如下命令:
                注意:这一条命令在所有节点上都要执行
                apt-key adv --keyserver-options http-proxy="http://192.168.0.1:8001" --keyserver hkp://keyserver.ubuntu.com:80 --recv B9733A7A07513CAD
                apt-key adv --keyserver-options http-proxy="http://ip:8001" --keyserver hkp://keyserver.ubuntu.com:80 --recv B9733A7A07513CAD
        4、验证配置是否成功

            输入:
                apt-get update
                apt-cache showpkg ambari-server
                apt-cache showpkg ambari-agent
                apt-cache showpkg ambari-metrics-assembly
                如果没有报错,则配置成功
        5、安装ambari-agent

            ambari-agent不需要自己手动安装,在后面的步骤中,master会在验证ssh之后,在节点上安装,这一步不需要联网!!

        6、安装ambari-server

            在主节点上执行:
                apt-get update
                apt-get install ambari-server
            在线配置ambari-server:
                ambari-server setup
            ###############
            注意:自己部署JDK有风险
            如果出现错误:_ssl.c:510: EOF occurred in violation of protocol
            则说明是JDK的问题,请使用ambari自己下载的JDK

            离线配置ambari-server:
            其中,ambari-server setup是需要联网,下载java JDK的。如果为内网,可以手动下载安装JDK;
            JDK安装参考链接:https://blog.csdn.net/zht741322694/article/details/78960174
            配置完环境变量之后 source ~/.bashrc,然后测试:   java -version
            # jdk1.8.0_171
            /usr/jdk64/jdk1.8.0_112
            ###############

            ambari-server setup

            1).遇到Customize user account for ambari-server daemon选择n,这样ambari就会在root下执行。 
            接下来需要配置JDK,将下载好的JDK解压到/opt/目录下
            sudo tar -xvzf jdk-8u112-linux-x64.tar.gz -C /optsudo mv /opt/jdk-* /opt/jdk

            2).在配置ambari的JDK的时候,选择3,输入JAVA_HOME为/opt/jdk,其他的一直回车就好了。 
            启动ambari-server
            sudo ambari-server start

            在浏览器中,输入http://master.hadoop:8080开始安装,账号和密码为admin。
  • 在内网中搭环境,通常需要配置ubuntu本地源:
    参考连接:ubuntu 镜像,使用本地源:https://blog.csdn.net/u012461550/article/details/42608853
deb http://10.108.113.24:2345/ubuntu/ trusty main restricted universe multiverse 
deb http://10.108.113.24:2345/ubuntu/ trusty-security main restricted universe multiverse 
deb http://10.108.113.24:2345/ubuntu/ trusty-updates main restricted universe multiverse 
deb http://10.108.113.24:2345/ubuntu/ trusty-backports main restricted universe multiverse 
deb http://10.108.113.24:2345/ubuntu/ trusty-proposed main restricted universe multiverse

3.Ambari界面下HDP的安装

1.在线安装

在线安装较为简单,参考官网链接:https://docs.hortonworks.com/HDPDocuments/Ambari-2.5.2.0/bk_ambari-installation/content/hdp_start_the_ambari_server.html

2.离线安装

问题记录:ERROR 2018-07-04 07:02:56,804 NetUtil.py:96 - [Errno 8] _ssl.c:510: EOF occurred in violation of protocolERROR 2018-07-04 07:02:56,804 NetUtil.py:97 - SSLError: Failed to connect. Please check openssl library versions. Refer to: https://bugzilla.redhat.com/show_bug.cgi?id=1022468 for more details.

问题原因:openssl版本太低,需要升级;
操作:
参考链接:https://www.cnblogs.com/findumars/p/6278906.html
查看openssl版本:openssl version
显示为2014版,则需要升级到2016版;
在终端使用wget下载最新没有漏洞的版本

wget https://www.openssl.org/source/openssl-1.1.0c.tar.gz
tar xvf openssl-1.1.0c.tar.gz
cd openssl-1.1.0c.tar.gz 
./config
apt-get install zlib1g-dev
make clean
make -j4
make install

docker+ubuntu+ambari+HDP_第1张图片
docker+ubuntu+ambari+HDP_第2张图片

docker+ubuntu+ambari+HDP_第3张图片

docker+ubuntu+ambari+HDP_第4张图片

docker+ubuntu+ambari+HDP_第5张图片

docker+ubuntu+ambari+HDP_第6张图片

docker+ubuntu+ambari+HDP_第7张图片

保存镜像

当运行好以后,启动服务,保存镜像。
需要用到docker commit命令等!

分布式环境启动脚本:

当机房断电后,或者其它因素导致需要重启时,壳执行下面脚本,快速启动;

以基础镜像v2版进行使用为例

基础镜像分为两个镜像server和 client版
    1) 镜像导入
        在master节点导入server镜像
        在每个client节点导入client镜像
        查看docker images 是否有hdp-server hdp-client镜像

    2) 镜像启动配置

    Server启动脚本(新建容器)
    sudo docker stop ambari-hdp-server
    sudo docker rm ambari-hdp-server
    sudo docker run -itd  -h master.gtensor.com --privileged=True -v /home:/home --net=host --name="ambari-hdp-server" ambari-hdp-server:v1.0 bash
    sudo docker exec ambari-hdp-server service ssh start
    sudo docker exec ambari-hdp-server ln -sf /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
    sudo docker exec ambari-hdp-server ntpd
    sudo docker exec -it ambari-hdp-server bash
    在docker里执行
    ambari-server restart
    ambari-agent restart
    ##################################
    Client 启动命令(新建容器)
    sudo docker stop ambari-hdp-agent
    sudo docker rm ambari-hdp-agent
    sudo docker run -itd  -h {与物理主机ip对应的hosts} --privileged=True -v /home:/home --net=host --name="ambari-hdp-agent" ambari-hdp-agent:v1.0 bash
    #sudo docker run -itd  -h client1.gtensor.com --privileged=True -v /home:/home --net=host --name="ambari-hdp-agent" ambari-hdp-agent:v1.0 bash
    #sudo docker run -itd  -h client2.gtensor.com --privileged=True -v /home:/home --net=host --name="ambari-hdp-agent" ambari-hdp-agent:v1.0 bash
    sudo docker exec ambari-hdp-agent service ssh start
    sudo docker exec ambari-hdp-agent ln -sf /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
    sudo docker exec ambari-hdp-agent  ntpd
    sudo docker exec -it ambari-hdp-agent  bash
    在docker里执行
    ambari-agent restart
    测试1: 查看系统时间
    启动后查看docker内系统时间是否正确 不正确自行调整时间
    测试2: 查看免密登陆
    分别
    ssh master.gtensor.com
    ssh client1.gtensor.com
    ssh client2.gtensor.com
    查看是否需要密码

警告: 容器创建脚本只需要执行一次,再执行会把原有容器删除

你可能感兴趣的:(docker+ubuntu+ambari+HDP)