使用docker部署ambari的若干要点
ambari部署各个组件
使用ambari进行部署时主要需要的组件包括:
- ambari-server: 主要部署的控制节点,负责控制agent进行部署。
- mysql: server存储的数据库。也支持postgresql等数据库。
- ambari-agent: 主要执行部署的节点,根据控制节点,部署相应的服务的相应组件(compoment)。
- repo: 可以是公网的库,也可以是本地源。主要提供各个服务安装的rpm包等。ambari主要使用的是HDP(hortonworks data platform)的库。
- consul: 用于DNS解析。因为各个节点之间需要通过域名来相互进行访问。用consul来提供DNS解析服务,无需在每个节点上配置hosts。对应的,各个容器也需要将DNS(即resolve.conf)指定为部署consul的ip。
部署流程
每个组件都可以单独做成镜像。其中repo可以使用公网的库,也可以使用自己搭建的本地源。
HDP的版本要和ambari的版本对应。对应关系可以查看hdp官网。
在实验中我使用的是ambari 2.2.1-v20的镜像和HDP 2.4.3。
搭建repo库
主要是安装httpd并把HDP和HDP-UTILS的tar包解压到指定目录。这个不详述了。
创建server和agent容器
使用docker-ambari的ambari-functions
来创建集群。
- 修改
ambari-functions
中的server和agent镜像名称 source ambari-functions
- 运行
amb-setttings
,查看配置是否有问题 - 运行
amb-start-cluster 3
。启动server/agent/consul容器。 - 此时ambari-server就正常启动了。
- 进入ambari-server容器,
ssh-keygen -t rsa -P ''
生成密钥。 - 进入ambari-agent,
yum install -y sudo
,mkdir -p /var/log/ambari-agent
,mkdir -p /var/lib/ambari-agent
。将ambari-server的公钥拷贝到/root/.ssh/authorized_keys
文件中。 - 从页面访问ambari-server。即可按步骤添加多个agent到集群中,并安装对应的service。
我在虚拟机上单机安装了HDFS+YARN+MAPREDUCE+SPARK服务。spark可用。我再装storm时,虚拟机配置太差,撑不住,服务无法启动。
ambari的好处是集成了监控等功能,组件很全面。
一些问题和待解决的点
- 集群编排问题。比如需要创建几个容器,每个容器应该是什么角色,安装什么组件,要事先规划好,再去创建。
- ambari-agent容器挂掉重启后,默认不会重新加入回集群。需要配置适当的脚本,使得
- 官方ambari-agent没有sudo,而且对应的ambari-agent的log目录等都没有创建。因此需要在官方镜像基础上再进行改造。
- 密钥的生成以及分发。
- ambari-agent的规划问题。比如agent作为datanode时,需要使用VOLUME的外挂盘来对数据进行保存,而不是使用容器本身的存储(容器本身存储仅10G,也不够用)。当然,这也可以做到容器的镜像中或者生成容器时动态挂载。
- 自动创建集群。这里主要的难点是使用ambari的api创建cluster,添加service等。还需要深入研究下。参考api。
- ambari-agent镜像细化的问题。现在ambari-agent中实际是一个空的镜像,没有安装service。那么我们是否可以根据service的不同,分别制作出hadoop-ambari-agent镜像,spark-ambari-agent镜像等,省去一部分服务安装的时间。
使用docker部署ambari的若干要点的更多相关文章
- AspNetCore容器化(Docker)部署(三) —— Docker Compose容器编排
一.前言 上一篇部署了一个最基础的helloworld应用,创建了两个容器和一个network,还算应付得过来. 如果该应用继续引入mysql.redis.job等若干服务,到时候发布一次得工作量之大 ...
- docker部署angular和asp.net core组成的前后端分离项目
最近使用docker对项目进行了改进,把步骤记录一下,顺便说明一下项目的结构. 项目是前后端分离的项目,后端使用asp.net core 2.2,采用ddd+cqrs架构的分层思想,前端使用的是ang ...
- 使用Docker部署Spring-Boot+Vue博客系统
在今年年初的时候,完成了自己的个Fame博客系统的实现,当时也做了一篇博文Spring-boot+Vue = Fame 写blog的一次小结作为记录和介绍.从完成实现到现在,也断断续续的根据实际的使用 ...
- 通过 Docker 部署 Redis 6.x 集群
要点步骤总结: # 这里演示使用同一台主机上 # 创建各节点存储路径 mkdir -p /opt/redis/{7000,7001,7002,7003,7004,7005} # 创建各节点配置文件 c ...
- ASP.NET Core开发-Docker部署运行
ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...
- Docker部署Hadoop集群
Docker部署Hadoop集群 2016-09-27 杜亦舒 前几天写了文章"Hadoop 集群搭建"之后,一个朋友留言说希望介绍下如何使用Docker部署,这个建议很好,Doc ...
- 程序开发使用docker部署
我们公司自己研发了一套 grand-line 系统,使用 docker 来部署项目. 我是第一批小白鼠,一开始网络差,build 一次要半个小时,连接进入 web shell 也很慢,部署一个微信项目 ...
- 我使用celery以及docker部署遇到的问题
首先我本机测试时没有问题的,但是在线上docker中,任务一直显示 "Sending due task".超时的任务是 django orm update 操作,本地不会出现这样的 ...
- Docker部署SDN环境
2014-12-03 by muzi Docker image = Java class Docker container = Java object 前言 5月份的时候,当我还是一个大学生的时候,有 ...
随机推荐
- [转]MapReduce:详解Shuffle过程
Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方.要想理解MapReduce, Shuffle是必须要了解的.我看过很多相关的资料,但每次看完都云里雾里的绕着,很难理清大致的逻辑, ...
- hibernate02环境的搭建
hibernate: 持久层的框架!是一个开放源代码的对象关系映射框架(ORM)!之前我们访问数据库使用JDBC!对JDBC进行了轻量级的对象封装!是一个全自动ORM框架!(底层可以自动生成sql语句 ...
- Hadoop fs -put bandwidth 暴力版
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreem ...
- HBASE的Java与Javaweb(采用MVC模式)实现增删改查附带源码
项目文件截图 Java运行截图 package domain; import java.io.IOException; import java.util.ArrayList; import java. ...
- linux主要目录
/:根目录,一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始 当在终端里输入 /home ,其实是在告诉电脑,先从 / (根目录)开始,再进入到 home 目录/ ...
- Java应用之POI
POI的简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. HSSF的概况 HSSF 是Horr ...
- 我了解到的新知识之---Cylance Protect是干吗的?
每家企业都会采购适合自己的杀毒软件来保护企业内的电脑处在安全的状态下,我所在的公司目前在用的是来自美国的初创企业的产品Cylance Protect.,目前这家公司已经在2018年11月份被黑莓公司收 ...
- 算法基础_递归_给定一个数字n,打印出所有的划分等式
问题描述: 给定一个数字n,打印出所有的划分等式 例: n = 3 3 2+1 1+1+1 解题源代码: import java.util.Scanner; /** * 给定数字n,打印出其所有用加法 ...
- 算法基础_递归_求杨辉三角第m行第n个数字
问题描述: 算法基础_递归_求杨辉三角第m行第n个数字(m,n都从0开始) 解题源代码(这里打印出的是杨辉三角某一层的所有数字,没用大数,所以有上限,这里只写基本逻辑,要符合题意的话,把循环去掉就好) ...
- 什么是Rollback Segment(已truncate和delete 命令为例)?
Rollback Segments是在你数据库中的一些存储空间,它用来临时的保存当数据库数据发生改变时的先前值,Rollback Segment主要有两个目的: 1. 如果因为某种原因或者其他用用户想 ...