【Ambari】Docker 安装Ambari 大数据单机版本

目录

一、前期准备

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-composechmod +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/sshdCOPY ./config/hosts    /etc/#set default password
RUN echo 'root:123456' | chpasswd
RUN /usr/bin/ssh-keygen -ACOPY ./config/krb5.conf   /etc#声明22端口 
EXPOSE 22RUN 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 kangllRUN 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/htmlEXPOSE 80CMD ["httpd","-DFOREGROUND"]

源镜像构建

docker build -t ambari:2.7.4  -f dockerfile-ambari  . 

2.3 kdc镜像构建


dockerfile-kerberos

FROM centos:7.6.1810RUN yum install -y krb5-server krb5-libs krb5-auth-dialog krb5-workstationRUN yum install -y net-tools telnetCOPY ./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.7restart: alwaysnetworks:- hadoop-networkcontainer_name: mysqlhostname: mysql-testenvironment:MYSQL_ROOT_PASSWORD: Winner001TZ: Asia/Shanghaiports:- 3306:3306volumes:-  /data:/var/lib/mysql- ./conf/my.cnf:/etc/mysql/my.cnfcommand:--max_connections=1000--character-set-server=utf8mb4--collation-server=utf8mb4_general_ci--default-authentication-plugin=mysql_native_passwordhealthcheck:test: ["CMD-SHELL", "curl --silent localhost:3306 >/dev/null || exit 1"]interval: 10stimeout: 10shttpd:container_name: httpdhostname: httpdimage: httpd:1.0networks:- hadoop-networkports:- "80:80"privileged: truerestart: alwaysvolumes:- "/etc/hosts:/etc/hosts"kdc:image: kerberos:1.0restart: alwaysnetworks:- hadoop-networkcontainer_name: kerberoshostname: kerberos.winnerports:- 88:88- 749:749- 750:750volumes:- /etc/hosts:/etc/hosts- /hadoop/kerberos/krb5kdc:/var/kerberos/krb5kdc- /hadoop/kerberos/keytabs:/etc/security/keytabscommand:- /bin/sh- -c- |/opt/apache/kerberosStart.shnetworks: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.7restart: alwaysnetworks:- hadoop-networkcontainer_name: mysqlhostname: mysql-testenvironment:MYSQL_ROOT_PASSWORD: Winner001TZ: Asia/Shanghaiports:- 3306:3306volumes:-  /data:/var/lib/mysql- ./conf/my.cnf:/etc/mysql/my.cnfcommand:--max_connections=1000--character-set-server=utf8mb4--collation-server=utf8mb4_general_ci--default-authentication-plugin=mysql_native_passwordhealthcheck:test: ["CMD-SHELL", "curl --silent localhost:3306 >/dev/null || exit 1"]interval: 10stimeout: 10shttpd:container_name: httpdhostname: httpdprivileged: trueimage: httpd:1.0networks:- hadoop-networkports:- "80:80"privileged: truerestart: alwaysvolumes:- "/etc/hosts:/etc/hosts"kdc:image: kerberos:1.0restart: alwaysprivileged: truenetworks:- hadoop-networkcontainer_name: kerberoshostname: kerberos.winnerports:- 888:88- 8749:749- 8750:750volumes:- /etc/hosts:/etc/hosts- /hadoop/kerberos/krb5kdc:/var/kerberos/krb5kdc- /hadoop/kerberos/keytabs:/etc/security/keytabsnetworks: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: ambarihostname: ambari-serverrestart: alwaysprivileged: truenetworks:- hadoop-networkports:- 8080:8080- 8088:8088- 50070:50070- 50075:50075- 8188:8188- 8042:8042- 10000:10000- 9083:9083- 6080:6080- 16010:16010volumes:- /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/keytabscommand:- /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/bashset -xambari_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.jarBASEDIR=$(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-agentre=`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 -Dtail -f /var/log/ambari-server/ambari-server.log


参考文章:https://www.cnblogs.com/liugp/p/17489616.html

Ubuntu 环境安装docker: 【云计算】Ubuntu多种安装docker方式_ubuntu安装docker-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/17281.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git多人开发,不用merge的操作方法,阿里codeup

阿里云效 Codeup 是阿里云提供的一款代码托管平台&#xff0c;它集成了代码仓库管理、代码审查、持续集成等功能&#xff0c;非常适合团队协作开发。 通过 Codeup 的合并申请&#xff08;Merge Request&#xff0c;MR&#xff09;功能&#xff0c;可以方便地进行代码合并和审查…

如何在OrangePi AIpro智能小车上实现安全强化学习算法

随着人工智能和智能移动机器人的广泛应用&#xff0c;智能机器人的安全性和高效性问题受到了广泛关注。在实际应用中&#xff0c;智能小车需要在复杂的环境中自主导航和决策&#xff0c;这对算法的安全性和可靠性提出了很高的要求。传统的强化学习算法在处理安全约束时存在一定…

享受当下,还是留待未来?一项fMRI与眼动追踪技术的联合研究

摘要 时间贴现(temporal discount)是指个体对奖励的估计会随着时间流逝而下降的心理现象。具体而言&#xff0c;当获得奖励的时间以日期(日期条件&#xff1b;例如&#xff0c;2023年6月8日)而不是延迟(延迟条件&#xff1b;例如&#xff0c;30天)呈现时&#xff0c;贴现率较低…

免费,Python蓝桥杯等级考试真题--第14级(含答案解析和代码)

Python蓝桥杯等级考试真题–第14级 一、 选择题 答案&#xff1a;B 解析&#xff1a;键为‘B’对应的值为602&#xff0c;故答案为B。 答案&#xff1a;A 解析&#xff1a;字典的符合为花括号&#xff0c;先键后值&#xff0c;故答案为A。 答案&#xff1a;C 解析&#xff1a…

Stable Diffusion 字体和场景结合【把四季藏在海里】

把四季藏在海里&#xff0c;话不多说&#xff0c;上教程。 一、花瓣找字 打开花瓣找下字&#xff0c;也可以自己做&#xff0c;我不会&#xff0c;谢谢。本文用到的字&#xff0c;版权归原作者所有。 白底黑字&#xff1a;那么就是浪花占主要部分&#xff0c;字就是海的效果&…

【改进】YOLOv8 AND YOLOv9 总目录

说明&#xff1a;本专栏为YOLOV8和YOLOV9的使用以及改进的方法。平时比较忙&#xff0c;只能随缘回答问题哈&#xff0c;谨慎订阅&#xff01; &#x1f49b; &#x1f499; &#x1f49c; ❤️ &#x1f49a; &#x1f49b; &#x1f499; &#x1f49c; ❤️ &#x1f49a; &…

sdut java lab 7.1(法二好理解)

7-1 sdut-JAVA-Pig Latin 分数 12 全屏浏览 切换布局 作者 马新娟 单位 山东理工大学 Write a program that requests a word as input, translates the word into Pig Latin and outputs the word input and its equivalent in Pig Latin. The rules for translating a …

C++:STL容器的学习-->string

C:STL容器的学习-->string 1. 构造方法2. string的赋值操作3. string字符串的拼接4. string 查找和替换5. string字符串的比较6. string字符存取7. string 插入和删除8. string截取 需要添加头文件#include <string> 1. 构造方法 string() 创建空的字符串 string(c…

Cordova 环境部署,将 H5 打包为 Android App

Cordova 环境部署&#xff0c;将 H5 打包为 Android App 一、环境配置 1、JDK 环境变量 JAVA_HOME%JAVA_HOME%\bin 2、Android SDK 环境变量 ANDROID_HOMEANDROID_SDK_ROOT%ANDROID_HOME%\build-tools%ANDROID_HOME%\tools%ANDROID_HOME%\platform-tools 3、Node 环境…

C++学习/复习6---内存管理(数据的位置/大小)/new、delete/内存相关面试题(malloc与new/内存泄漏)

一、内存中区域 1.不同数据的存储位置 2.数据占用内存大小 二、动态内存函数 三、new与delete 1.操作内置类型 2.操作自定义类型 四、operator new与operator delete 1.底层源码&#xff08;malloc/free&#xff09; 2.内置/自定义与构造和析构 3.举例 五、定位new表达式 1.举…

使用 Django 和 RabbitMQ 构建高效的消息队列系统

文章目录 RabbitMQ 简介Django 中使用 RabbitMQ总结与拓展 在现代的 Web 应用程序开发中&#xff0c;构建一个高效的消息队列系统变得越来越重要。使用消息队列可以帮助我们解耦系统中不同模块的任务&#xff0c;并提高系统的性能和可扩展性。本文将介绍如何结合 Django 和 Rab…

5.27背单词

formula 公式 conviction 定罪 mischief 恶作剧 counsel 律师 overt 明显的 contagious 有传染性的 dwelling 住所 subtle 不明显的 hazard 危险 vicinity 附近地区 host 大量 dinosaur 恐龙 glamor 魅力 slack 松弛的 gigantic 巨大的 exquisite 精致的 bloody 血的 disastrou…

LeetCode994腐烂的橘子

题目描述 在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a;值 0 代表空单元格&#xff1b;值 1 代表新鲜橘子&#xff1b;值 2 代表腐烂的橘子。每分钟&#xff0c;腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。返回 直到单元格中没…

C++ std::reference_wrapper:让引用更强大

std::reference_wrapper 的通俗易懂解释 一、简介二、std::reference_wrapper 的初衷三、常用示例3.1、与 make_pair 和 make_tuple 一起使用3.2、引用容器3.3、通过 std::thread 按引用传递参数给启动函数3.4、引用作为类成员3.5、按引用传递函数对象3.6、与绑定表达式一起使用…

重新安装 Windows 10/11 后如何恢复丢失的数据?

“嗨&#xff0c;我的 Windows 10/11 崩溃了&#xff0c;所以我不得不重新安装它。我使用 USB 可启动驱动器重新安装了操作系统。但是&#xff0c;重新安装后&#xff0c;C 盘上的所有先前文件都丢失了。有什么方法可以恢复丢失的文件吗&#xff1f;” - 孙雯 在大多数情况下&…

软考 系统架构设计师系列知识点之SOME/IP与DDS(3)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之SOME/IP与DDS&#xff08;2&#xff09; 本文内容参考&#xff1a; 车载以太网 - SOME/IP简介_someip-CSDN博客 https://zhuanlan.zhihu.com/p/369422441 什么是SOME/IP?_someip-CSDN博客 SOME/IP 详解系列&#…

C语言自定义类型:结构体 枚举 联合

结构体 struct stu {char name[20];int age; }s1,s2; //s1,s2是全局变量int main() {struct stu s3; //s3是局部变量return 0; }匿名结构体类型 只能用一次 struct {char name[20];int age; }s1; 以下两种写法相同 //1 typedef struct node {int data;struct node* next; …

编程文档模板

项目名称 { XXX编程文档} 1. 模块A 提示&#xff1a;开发人员根据“编程计划”编写软件的代码&#xff0c;并随时记录编程技术、问题与对策、心得体会等等&#xff0c;产生《编程文档》&#xff08;类似于编程日记&#xff09;。 程序名称功能描述开发者记录编程技术、问题…

day16--集合进阶(Set、Map集合)

day16——集合进阶&#xff08;Set、Map集合&#xff09; 一、Set系列集合 1.1 认识Set集合的特点 Set集合是属于Collection体系下的另一个分支&#xff0c;它的特点如下图所示 下面我们用代码简单演示一下&#xff0c;每一种Set集合的特点。 //Set<Integer> set ne…