【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.rhkb.cn/news/339126.html

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

相关文章

【算法】理解堆排序

堆排序&#xff0c;无疑与堆这种数据结构有关。在了解堆排序之前&#xff0c;我们需要先了解堆的建立与维护方法。 堆 堆&#xff08;二插堆&#xff09;可以用一种近似的完全二叉树来表示&#xff0c;该二叉树除了叶子结点之外&#xff0c;其余节点均具有两个子女&#xff0c…

模板-初阶

引言&#xff1a; 在C&#xff0c;我们已经学过了函数重载&#xff0c;这使得同名函数具有多个功能。但是还有一种更省力的方法&#xff1a;采用模板。 本文主要介绍以下内容 1. 泛型编程 2. 函数模板 3. 类模板 1.泛型编程 在将这一部分之前&#xff0c;通过一个故事引…

nginx的配置粗记

小白nginx的配置随笔&#xff08;随便记记&#xff09; 前言 我们都知道nginx有很多用途&#xff0c;比如&#xff1a;负载均衡&#xff0c;反向代理&#xff0c;网关路由&#xff0c;解决跨域等问题。我这次开发项目&#xff0c;用到的一些功能也涉及到了对nginx的配置&#…

Vue.js 动态组件与异步组件

title: Vue.js 动态组件与异步组件 date: 2024/6/2 下午9:08:50 updated: 2024/6/2 下午9:08:50 categories: 前端开发 tags:Vue概览动态组件异步加载性能提升路由管理状态控制工具生态 第1章 Vue.js 简介 1.1 Vue.js 概述 Vue.js 是一个渐进式的JavaScript框架&#xff0c;…

MedSAM 学习笔记(续):训练自定义数据集

1、下载官方权重 官方的预训练权重:https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth 下载后保存在:work_dir/SAM/sam_vit_b_01ec64.pth 目录 2、摆放数据集 因为MedSAM 分割模型需要对3D数据集进行切片处理,也就是对nii.gz 数据处理成 npy 格式 …

Linux--构建进程池

目录 1.进程池 1.1.我们先完成第一步&#xff0c;创建子进程和信道 1.2. 通过channel控制&#xff0c;发送任务 1.3回收管道和子进程 1.4进行测试 1.5完整代码 1.进程池 进程池其产生原因主要是为了优化大量任务需要多进程完成时频繁创建和删除进程所带来的资源消耗&#…

Mysql(一)查询Sql是如何执行的

Hello&#xff0c;大家好我是极客涛&#x1f60e;&#xff0c;我最近在整理Mysql相关的知识点&#xff0c;所以准备开启一个Mysql的主线任务&#xff0c;大概耗时3周左右&#xff0c;整个节奏还是由浅入深&#xff0c;主要包括Mysql的架构、事务实现、索引组织形式、SQL优化、日…

图解大模型分布式并行各种通信原语

背景 在分布式集群上执行大模型任务时候&#xff0c;往往使用到数据并行&#xff0c;流水线并行&#xff0c;张量并行等技术&#xff0c;这些技术本质上也就是对数据进行各种方案的切分&#xff0c;然后放到不同的节点上运算。不同节点在计算的过程中需要对数据分发或者同步等…

python的一种集成开发工具:PyCharm开发工具

一. 简介 本文简单了解两种 python语言所使用的 集成开发环境&#xff1a; PyCharm、vscode。 python语言学习中&#xff0c;可以任意选中这两个集成开发环境的一种就可以。本文先来简单学习 PyCharm开发工具安装与使用。 二. python的一种集成开发工具&#xff1a;PyChar…

实现Redis和数据库数据同步问题(JAVA代码实现)

这里我用到了Redis当中的发布订阅模式实现(JAVA代码实现) 先看图示 下面为代码实现 首先将RedisMessageListenerContainer交给Spring管理. Configuration public class redisConfig {AutowiredRedisConnectionFactory redisConnectionFactory;AutowiredQualifier("car…

Linux线程:线程分离

目录 一、什么是线程分离 1.1pthread_detach 1.2pthread线程库存在的意义 1.3__thread线程的局部存储 1.4系统调用clone 一、什么是线程分离 1.1pthread_detach 默认情况下&#xff0c;新创建的线程是joinable的&#xff0c;线程退出后&#xff0c;需要对其进行pthread_joi…

数据标准的制定落地

目录 什么是数据标准 基本定义 目的 数据标准体系分类 从内容层面分类 从管理视角分类 从面向的对象分类 从数据结构的角度分类 数据标准价值 业务价值 技术价值 管理价值 数据标准和数据治理的关系 数据标准在数据治理各项任务中的作用 数据标准与主数据 数据…

车联网安全入门——ICSim模拟器使用

文章目录 车联网安全入门——ISCim模拟器使用介绍主要特点&#xff1a;使用场景&#xff1a; 安装使用捕获can流量candumpcansnifferwiresharkSavvyCAN主要特点&#xff1a;使用场景&#xff1a; 重放can报文cansendSavvyCAN 总结 车联网安全入门——ISCim模拟器使用 &#x1…

LabVIEW步进电机的串口控制方法与实现

本文介绍了在LabVIEW环境中通过串口控制步进电机的方法&#xff0c;涵盖了基本的串口通信原理、硬件连接步骤、LabVIEW编程实现以及注意事项。通过这些方法&#xff0c;用户可以实现对步进电机的精确控制&#xff0c;适用于各种自动化和运动控制应用场景。 步进电机与串口通信…

【刷题(15】普通数组

一 普通数组基础 首先&#xff0c;我们根据下图先了解一下什么是前缀和。 既然我们明白了前缀和是怎么回事&#xff0c;那我们就来看一下我们该怎么输入 先给出答案&#xff0c;然后再给出分析。 答案&#xff1a; for (int i 1; i < n; i ){cin >> a[i];s[i] s…

Pytest框架中用例用例执行常用参数介绍

pytest 支持通过命令行参数来定制测试运行的方式。以下是一些常用的 pytest 执行参数介绍。 学习目录 -q 或 --quiet: 安静模式&#xff0c;只显示进度和摘要 -s : 选项允许在测试的输出中捕获 stdout 和 stderr。 -v : 选项会使 pytest 的输出更加详细。 -k &#xff1a;…

DIYP对接骆驼后台IPTV管理,退出菜单中显示用户名已经网络信息,MAC,剩余天数,套餐名称等

演示&#xff1a;https://url03.ctfile.com/f/1779803-1042599473-4dc000?p8976 (访问密码: 8976) 后台加上EPG&#xff0c;增加一些播放源的动态端口替换。 前台app上&#xff0c;退出菜单中显示用户名已经网络信息&#xff0c;MAC&#xff0c;剩余天数&#xff0c;套餐名称…

QT之常用控件

一个图形化界面当然需要有各种各样的控件&#xff0c;QT也不例外&#xff0c;在QT designer中就有提供各种各样的控件&#xff0c;用以开发图形化界面。 而想使用好一个QT控件&#xff0c;就需要了解这些控件。 QWidget 在QT中&#xff0c;所有控件都继承自 QWidget 类&…

中间件模版引擎

文章目录 中间件1.自定义中间件1&#xff09;全局2&#xff09;局部中间件 2.内置中间件(静态资源目录&#xff09; Art-template1.模板语法1&#xff09;输出2&#xff09;原文输出3&#xff09;条件判断4&#xff09;循环5&#xff09;子模版6&#xff09;模版继承7&#xff…

git远程仓库限额的解决方法——大文件瘦身

Git作为世界上最优秀的分布式版本控制工具&#xff0c;也是优秀的文件管理工具&#xff0c;它赋予了项目成员对项目进行远程协同开发能力&#xff0c;因此受到越来越多的行业从业人员的喜爱。很多优秀的项目管理平台&#xff0c;比如国内的Gitee&#xff0c;国外的Github&#…