目次
一、前期预备
1.1 部署 docker
1.2 部署 docker-compose
1.3 版本阐明
二 、镜像构建启动
2.1 体系镜像构建
2.2 安装包源镜像构建
2.3 kdc镜像构建
2.4 集群安装
2.5 容器导出为镜像
三、Ubuntu情况安装测试
3.1 情况预备
3.2 集群容器启动
一、前期预备
1.1 部署 docker
- # 安装yum-config-manager配置工具
- yum -y install yum-utils
- # 建议使用阿里云yum源:(推荐)
- #yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- # 安装docker-ce版本
- yum install -y docker-ce
- # 启动并开机启动
- systemctl enable --now docker
- docker --version
- docker info
复制代码
1.2 部署 docker-compose
- curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
- chmod +x /usr/local/bin/docker-compose
- docker-compose --version
复制代码
创建网络
- docker network create hadoop-network
复制代码
1.3 版本阐明
组件
| 版本
| 操纵体系
| Centos7.6/Ubuntu20.04.5
| ambari
| 2.7.4
| HDP
| 3.1.4
| HDP-GPL
| 3.1.4
| HDP-UTILS
| 1.1.0.22
| JDK
| jdk-8u162-linux-x64
| 如下安装只做测试。
二 、镜像构建启动
2.1 体系镜像构建
- # 拉取 Centos 镜像
- FROM centos:7.6.1810
- # 作者信息
- LABEL kangll
- # 安装基本工具
- RUN yum update -y && yum install -y \
- net-tools \
- vim \
- wget \
- curl \
- lrzsz \
- nc \
- openssl \
- sed \
- telnet \
- openssh-server \
- httpd \
- chronyd \
- zip unzip \
- openssh-clients \
- expect \
- krb5-server \
- krb5-libs \
- krb5-workstation \
- && yum clean all
- # JDK
- RUN mkdir -p /usr/java
- ADD ./config/jdk-8u162-linux-x64.tar.gz /usr/java/
- ENV JAVA_HOME=/usr/java/jdk1.8.0_162
- ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- ENV PATH=$JAVA_HOME/bin:$PATH
- # 添加一个名为myuser的用户
- RUN useradd -m winner_spark
- # 设置myuser用户的密码,这里设置为mypassword
- RUN echo 'winner_spark:123456' | chpasswd
- # 设置myuser用户为sudoer
- RUN echo 'winner_spark ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
- # SSH
- RUN sed -i '/^HostKey/'d /etc/ssh/sshd_config
- RUN echo 'HostKey /etc/ssh/ssh_host_rsa_key' >> /etc/ssh/sshd_config
- RUN mkdir /var/run/sshd/
- RUN echo 'UseDNS no' >> /etc/ssh/sshd_config
- RUN sed -i -e '/pam_loginuid.so/d' /etc/pam.d/sshd
- COPY ./config/hosts /etc/
- #set default password
- RUN echo 'root:123456' | chpasswd
- RUN /usr/bin/ssh-keygen -A
- COPY ./config/krb5.conf /etc
- #声明22端口
- EXPOSE 22
- RUN mkdir -p /opt && mkdir -p /var/log/supervisord
- RUN echo '/usr/sbin/sshd -D' >> /opt/run.sh
- RUN chmod +x /opt/run.sh
- CMD ["/opt/run.sh"]
-
- #
- WORKDIR /opt/
复制代码 体系镜像构建
- docker build -f dockerfile-centos -t centos-jdk:1.0 .
复制代码
2.2 安装包源镜像构建
dockerfile-httpd
- FROM centos-jdk:1.0
- # centos7.6 JDK1.8
- LABEL kangll
- RUN yum -y install httpd
- RUN echo "crushlinux" >/var/www/html/index.html
- RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
- # 添加yum 源
- COPY ./repo/ambari.repo /etc/yum.repos.d/
- COPY ./repo/hdp.repo /etc/yum.repos.d/
- COPY ./repo/hdp.gpl.repo /etc/yum.repos.d/
- RUN mkdir -p /hadoop/hdp
- ADD ./HDP/ambari.tar.gz /var/www/html
- ADD ./HDP/HDP-GPL.tar.gz /var/www/html
- ADD ./HDP/HDP.tar.gz /var/www/html
- ADD ./HDP/HDP-UTILS.tar.gz /var/www/html
-
- EXPOSE 80
-
- CMD ["httpd","-DFOREGROUND"]
复制代码 源镜像构建
- docker build -t ambari:2.7.4 -f dockerfile-ambari .
复制代码
2.3 kdc镜像构建
dockerfile-kerberos
- FROM centos:7.6.1810
- RUN yum install -y krb5-server krb5-libs krb5-auth-dialog krb5-workstation
- RUN yum install -y net-tools telnet
- COPY ./config/krb5.conf /etc
- COPY ./config/kdc.conf /var/kerberos/krb5kdc/
- COPY ./config/kadm5.acl /var/kerberos/krb5kdc/
- CMD ["/usr/sbin/init"]
复制代码 服务启动
- # 进入容器 启动服务
- Systemctl restart krb5kdc
- Systemctl restart kadmin
复制代码 docker-compose-base.yml 启动底子情况
- version: '3'
- services:
- mysql:
- image: registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/mysql-test:5.7
- restart: always
- networks:
- - hadoop-network
- container_name: mysql
- hostname: mysql-test
- environment:
- MYSQL_ROOT_PASSWORD: Winner001
- TZ: Asia/Shanghai
- ports:
- - 3306:3306
- volumes:
- - /data:/var/lib/mysql
- - ./conf/my.cnf:/etc/mysql/my.cnf
- command:
- --max_connections=1000
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --default-authentication-plugin=mysql_native_password
- healthcheck:
- test: ["CMD-SHELL", "curl --silent localhost:3306 >/dev/null || exit 1"]
- interval: 10s
- timeout: 10s
- httpd:
- container_name: httpd
- hostname: httpd
- image: httpd:1.0
- networks:
- - hadoop-network
- ports:
- - "80:80"
- privileged: true
- restart: always
- volumes:
- - "/etc/hosts:/etc/hosts"
- kdc:
- image: kerberos:1.0
- restart: always
- networks:
- - hadoop-network
- container_name: kerberos
- hostname: kerberos.winner
- ports:
- - 88:88
- - 749:749
- - 750:750
- volumes:
- - /etc/hosts:/etc/hosts
- - /hadoop/kerberos/krb5kdc:/var/kerberos/krb5kdc
- - /hadoop/kerberos/keytabs:/etc/security/keytabs
- command:
- - /bin/sh
- - -c
- - |
- /opt/apache/kerberosStart.sh
- networks:
- hadoop-network:
- external:
- name: hadoop-network
复制代码 Ambari启动
- # 启动基础环境
- docker-compose -f docker-compose-base.yaml up -d
- # 启动ambari , 在此容器中安装集群
- docker-compose -f docker-compose-ambari.yaml up -d
复制代码
2.4 集群安装
repo地址
节点和秘钥
agent安装
服务安装
由于是单机直接下一步
安装组件
输入密码
数据目次确认
用户确认下一步
服务参数确定
发布
安装完成
2.5 容器导出为像
- docker ps -a
- docker commit 容器ID ambari-1.0.tar.gz
复制代码
三、Ubuntu情况安装测试
3.1 情况预备
我们预备Ubuntu 情况,在Ubuntu情况安装Ambari单机,相称于在Centos服务器安装的docker化的Ambari 导出为镜像 然后在Ubutntu 情况实验启动。
预备Ubuntu 情况,版本:Ubuntu 20.04.5 LTS
将镜像 ambari-1.0.tar.gz 加载到Ubuntu 情况
- docker load -i ambari-1.0.tar.gz
复制代码 MySQL元数据库备份还原(Ambari、hive、ranger)
HDFS、kerberos 备份的数据拷贝到Ubuntu服务器并保持数据文件路径不变。
将在centos 安装完成的集群备份元数据库写入到新的库中 , 也就是Ubuntu情况要使用的元数据库。
- # 备份的元数据写入新的数据库中
- mysql -hmysql-test -uroot -pWinner001 ambari < ambari.sql
- mysql -hmysql-test -uroot -pWinner001 ranger < ranger.sql
- mysql -hmysql-test -uroot -pWinner001 hive < hive.sql
复制代码 备份的kerberos和安装包解压
- # 解压到 /usr 路径下,保存的是集群安装的数据
- hdp.tar.gz
- # 在根路径解压保留的kerberos 和HDFS 初始化的元数据
- hadoop.tar.gz
复制代码
底子情况启动docker-compose-base.yaml
- version: '3'
- services:
- mysql:
- image: registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/mysql-test:5.7
- restart: always
- networks:
- - hadoop-network
- container_name: mysql
- hostname: mysql-test
- environment:
- MYSQL_ROOT_PASSWORD: Winner001
- TZ: Asia/Shanghai
- ports:
- - 3306:3306
- volumes:
- - /data:/var/lib/mysql
- - ./conf/my.cnf:/etc/mysql/my.cnf
- command:
- --max_connections=1000
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --default-authentication-plugin=mysql_native_password
- healthcheck:
- test: ["CMD-SHELL", "curl --silent localhost:3306 >/dev/null || exit 1"]
- interval: 10s
- timeout: 10s
- httpd:
- container_name: httpd
- hostname: httpd
- privileged: true
- image: httpd:1.0
- networks:
- - hadoop-network
- ports:
- - "80:80"
- privileged: true
- restart: always
- volumes:
- - "/etc/hosts:/etc/hosts"
- kdc:
- image: kerberos:1.0
- restart: always
- privileged: true
- networks:
- - hadoop-network
- container_name: kerberos
- hostname: kerberos.winner
- ports:
- - 888:88
- - 8749:749
- - 8750:750
- volumes:
- - /etc/hosts:/etc/hosts
- - /hadoop/kerberos/krb5kdc:/var/kerberos/krb5kdc
- - /hadoop/kerberos/keytabs:/etc/security/keytabs
- networks:
- hadoop-network:
- external:
- name: hadoop-network
复制代码 启动
- # 启动
- docker-compose -f docker-compose-base.yaml up -d
- # 停止
- docker-compose -f docker-compose-base.yaml down
复制代码 3.2 集群容器启动
镜像
启动容器
- version: '3'
- services:
- ambari:
- image: ambari:2.7.4 # 修改为新的容器
- container_name: ambari
- hostname: ambari-server
- restart: always
- privileged: true
- networks:
- - hadoop-network
- ports:
- - 8080:8080
- - 8088:8088
- - 50070:50070
- - 50075:50075
- - 8188:8188
- - 8042:8042
- - 10000:10000
- - 9083:9083
- - 6080:6080
- - 16010:16010
- volumes:
- - /etc/hosts:/etc/hosts
- - /usr/hdp:/usr/hdp
- - /hadoop/hdfs:/hadoop/hdfs
- - /hadoop/etc/hadoop/:/etc/hadoop/
- - /hadoop/etc/hbase/:/etc/hbase/
- - /hadoop/etc/hive/:/etc/hive/
- - /hadoop/etc/livy2/:/etc/livy2/
- - /hadoop/etc/spark2/:/etc/spark2/
- - /hadoop/etc/tez/:/etc/tez/
- - /hadoop/etc/zookeeper/:/etc/zookeeper/
- - /hadoop/yarn:/hadoop/yarn
- - /hadoop/kerberos/krb5kdc:/var/kerberos/krb5kdc
- - /hadoop/kerberos/keytabs:/etc/security/keytabs
- command:
- - /bin/sh
- - -c
- - |
- /opt/apache/bootstrap.sh
- networks:
- hadoop-network:
- external:
- name: hadoop-network
复制代码 启动
- docker-compose -f docker-compose-ambari.yaml up -d
复制代码
下次安装直接加载镜像,然后实行yaml文件即可
- docker load -i ambari-1.0.tar.gz
- docker load -i kerberos.tar.gz
- docker load -i mysql.tar.gz
- docker load -i HDP-REPO.tar.gz
复制代码
脚本
bootstrap.sh
- #!/bin/bash
- set -x
- ambari_db=ambari
- myurl=mysql-test
- myuser=root
- mypwd=Winner001
- myport=3306
- mydb=ipvacloud
- java_home=/usr/java/jdk1.8.0_162
- mysql_driver=/usr/share/java/mysql-connector-java.jar
- BASEDIR=$(cd "$(dirname "$0")"; pwd)
- wait_for() {
- echo Waiting for $1 to listen on $2...
- while ! nc -z $1 $2; do echo waiting...; sleep 1s; done
- }
- setup_ambari() {
- # 强制替换文件
- cp -f /tmp/ambari.properties /etc/ambari-server/conf/
- cp -f /tmp/password.dat /etc/ambari-server/conf/
- cp -f /tmp/ambari-agent.ini /etc/ambari-agent/conf/
- }
- # wait for mysql and httpd
- #wait_for windp-aio 3306
- #wait_for httpd 80
- # 开始ambari安装
- yum -y install ambari-server
- yum -y install ambari-agent
- re=`mysql -h${myurl} -u${myuser} -p${mypwd} -e "show databases"|grep ambari|wc -l`
- if [ $re -eq 0 ];then
- # sql 初始化
- mysql -h${myurl} -u${myuser} -p${mypwd} < /tmp/init_db.sql
- mysql -h${myurl} -u${myuser} -p${mypwd} ambari < /tmp/Ambari-DDL-MySQL-CREATE.sql
- fi
- # 配置
- setup_ambari
- # 启动ambari服务
- /usr/sbin/ambari-server start
- /usr/sbin/ambari-agent start
- /usr/sbin/sshd -D
- tail -f /var/log/ambari-server/ambari-server.log
复制代码
参考文章:https://www.cnblogs.com/liugp/p/17489616.html
Ubuntu 情况安装docker: 【云计算】Ubuntu多种安装docker方式_ubuntu安装docker-CSDN博客
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |