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-ambariambari-functions来创建集群。

  1. 修改ambari-functions中的server和agent镜像名称
  2. source ambari-functions
  3. 运行amb-setttings,查看配置是否有问题
  4. 运行amb-start-cluster 3。启动server/agent/consul容器。
  5. 此时ambari-server就正常启动了。
  6. 进入ambari-server容器,ssh-keygen -t rsa -P ''生成密钥。
  7. 进入ambari-agent,yum install -y sudomkdir -p /var/log/ambari-agent, mkdir -p /var/lib/ambari-agent。将ambari-server的公钥拷贝到/root/.ssh/authorized_keys文件中。
  8. 从页面访问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的若干要点的更多相关文章

  1. AspNetCore容器化(Docker)部署(三) —— Docker Compose容器编排

    一.前言 上一篇部署了一个最基础的helloworld应用,创建了两个容器和一个network,还算应付得过来. 如果该应用继续引入mysql.redis.job等若干服务,到时候发布一次得工作量之大 ...

  2. docker部署angular和asp.net core组成的前后端分离项目

    最近使用docker对项目进行了改进,把步骤记录一下,顺便说明一下项目的结构. 项目是前后端分离的项目,后端使用asp.net core 2.2,采用ddd+cqrs架构的分层思想,前端使用的是ang ...

  3. 使用Docker部署Spring-Boot+Vue博客系统

    在今年年初的时候,完成了自己的个Fame博客系统的实现,当时也做了一篇博文Spring-boot+Vue = Fame 写blog的一次小结作为记录和介绍.从完成实现到现在,也断断续续的根据实际的使用 ...

  4. 通过 Docker 部署 Redis 6.x 集群

    要点步骤总结: # 这里演示使用同一台主机上 # 创建各节点存储路径 mkdir -p /opt/redis/{7000,7001,7002,7003,7004,7005} # 创建各节点配置文件 c ...

  5. ASP.NET Core开发-Docker部署运行

    ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...

  6. Docker部署Hadoop集群

    Docker部署Hadoop集群 2016-09-27 杜亦舒 前几天写了文章"Hadoop 集群搭建"之后,一个朋友留言说希望介绍下如何使用Docker部署,这个建议很好,Doc ...

  7. 程序开发使用docker部署

    我们公司自己研发了一套 grand-line 系统,使用 docker 来部署项目. 我是第一批小白鼠,一开始网络差,build 一次要半个小时,连接进入 web shell 也很慢,部署一个微信项目 ...

  8. 我使用celery以及docker部署遇到的问题

    首先我本机测试时没有问题的,但是在线上docker中,任务一直显示 "Sending due task".超时的任务是 django orm update 操作,本地不会出现这样的 ...

  9. Docker部署SDN环境

    2014-12-03 by muzi Docker image = Java class Docker container = Java object 前言 5月份的时候,当我还是一个大学生的时候,有 ...

随机推荐

  1. Spark连接MongoDB之Scala

    MongoDB Connector for Spark Spark Connector Scala Guide spark-shell --jars "mongo-spark-connect ...

  2. PHP中多维数组var_dump展示不全

    转载于http://blog.csdn.net/Merlin_feng/article/details/51733354

  3. react使用apollo简单的获取列表

    react yarn add apollo-boost apollo-client react-apollo apollo-cache-inmemory apollo-link-http graphq ...

  4. php数组函数大全

    一.数组操作的基本函数 数组的键名和值 array_values($arr);获得数组的值 array_keys($arr);获得数组的键名 array_flip($arr);数组中的值与键名互换(如 ...

  5. Integer 的 valueOf 方法 与 常量池(对 String Pool 的部分理解)

    举例: public class Test { @org.junit.Test public void intTest() { Integer t1 = 128; Integer t2 = 127; ...

  6. openshift 配置 bitbucket 的webhook

    参考 https://docs.openshift.org/latest/dev_guide/builds/triggering_builds.html oc set triggers bc < ...

  7. duilib中字体font设置

    <Font name="微软雅黑" size="9" bold="false"/> <Label name="n ...

  8. html 中a标签的问题(无反应,跳转,调用方法)

    让超链接点击后不跳转,可以用href = "#",但是这个#就会锚点到页面最上边     点击链接后不跳转可以设置成     1.<a href="javascri ...

  9. linux下部分软件截图

    1.配置环境变量 vi /etc/profile JAVA_HOME=/usr/local/usr_software/jdk_1.8.0.121CLASSPATH=.:$JAVA_HOME/lib/t ...

  10. python----运行机制

    Python 是一门解释型的编程语言,因此它具有解释型语言的运行机制. 计算机程序,其实就是一组计算机指令集,能真正驱动机器运行的是机器指令,但让普通开发者直接编写机器指令是不现实的,因此就出现了计算 ...