看完绝对涨知识! 速戳 >>

一、与 Ambari 的羁绊

Ambari 是一款用于部署、管理、监控 hadoop 集群的开源系统。它提供了以向导式的方式,在任意主机上安装部署 hadoop 服务;还提供了 安装部署、配置、启动、监控服务状态、停止、卸载 hadoop 服务的功能;还提供了 指标监控 功能,通过 Ambari Metrics 将 hadoop 服务的各项指标汇总到仪表盘并展示到前端页面;还提供了 告警 功能,支持预定的监控指标来实现通知告警。
从设计上看,Ambari 使用的是 主/从 架构,即一个 ambari server 和 多个 ambari agent 。它通过 ambari-server 来实现集群的管理和操作命令的发送,而具体的管理动作则由 ambari-agent 来实现。

我对 Ambari 的接触开始于 2017 年的工作,通过 Ambari 来快速安装部署 hadoop 生态圈各服务,简单高效。公司也想将 Ambari 封装或包装成自己的大数据平台产品,于是,我们小组几人便走上了 Ambari 的二次开发的摸爬滚打的道路。

起初是汉化和修改页面 css 样式,有时候也改改原生的 ambari 页面 bug。在这个过程里,主要涉及到的 ambari 模块是 ambari-web 和 ambari-admin 。

紧接着就是新功能开发,我们为 ambari 增加了一些新功能,前端增加页面开发,后端增加 restful API 接口供前端调用。前端主要涉及到的模块是 ambari-web ;后端主要涉及的模块是 ambari-server 。

还有对自定义服务的集成,除了 hdp 服务之外,我们还集成了很多服务,比如:Elasticsearch、Kylin、Hue、PostgreSQL、JanusGraph、TensorFlow、Caffe、Redis、Ldap 等等很多服务,简直丧心病狂,无所不能其集成,哈哈哈。

我们还对 Ambari 的安装部署、卸载进行了脚本控制,可以实现一键部署以及一键卸载,总的来说感觉比较简陋,可能是因为当初需求就比较简单。其实对于这个功能点来说,完全可以开发出一个可视化的安装部署工具,调用 ambari API 接口封装成我们自己的部署卸载工具,顺带着将 hdp 也部署上,岂不美哉。这一点,我一个好朋友,在他公司里,他做的 cdh 可视化安装部署工具就很棒。

二、讲讲干货

在上面章节里面,提到了 ambari-web 、ambari-admin、ambari-server、自定义服务集成。在这个章节里面我就根据我的经验,挨个讲一讲我对这几个模块的理解,讲的不对,希望朋友们指正啊,哈哈!

注:本文以 ambari 2.7.3 版本为例说明!

1、ambari-web

ambari-web 模块可以单独编译,实时看到编译后效果,用来修改开发 ambari web UI 页面。采用 ember.js(版本:v1.0.pre)作为前端 mvc 框架和 nodejs 相关工具,用 handlebars.js 作为页面渲染引擎,在 css/html 方面还用了 Bootstrap(v3.3.7)框架。

关于 ambari 的 emberjs 版本如何查看:打开 ambari web 界面,F12 打开控制台,在最下面的输入框里面输入:Ember.VERSION 即可输出版本号。如下图所示:

Ambari 与我的羁绊 - 图1

目录结构:

Ambari 与我的羁绊 - 图2

单独编译方式:

  • 待续

页面开发

详情可参考我之前写的博客:ambari-web 页面开发1ambari-web 页面开发2

2、ambari-admin

ambari-admin 也可进行单独编译,实时看到编译后效果,使用的是 angularjs + bower + gulp。bower 与 npm 的使用方式基本一样,angularjs 也与 emberjs 风格类似。

单独编译方式:

详情可参考我之前写的博客:ambari-admin 单独编译

3、ambari-server

ambari-server 的作用有很多,第一是提供 restful api 接口;第二是监测 ambari-agent 心跳,收集运行在各主机上的组件状态信息,并分发指令到各 agent 节点,让各 agent 节点去执行具体动作;等等应该还有很多作用…

ambari-server 编译方式:

如果 ambari-server 模块开发完毕的话,也得需要编译,得到 rpm 包或替换 jar 包来更新程序。

其中 ambari 的整体编译,可以参考我之前写的博客:ambari 2.7 整体编译 + 安装使用,当然也可以直接进入到 ambari-server 模块,执行 mvn -B -X -e install package … 的命令来达到单独编译 ambari-server 的目的。

restful api 接口开发:

详情可参考我之前写的博客:ambari-server 开发自定义apiambari-server api,多表数据关联调试ambari-server总结

建议去了解一下 ambari-server.rpm 包,解压看下里面的结构。

ambari-server 相关目录详解:

  • 待续

4、ambari 自定义服务集成

Ambari自定义服务集成十八讲实战视频、笔记教程(介绍),请了解:https://mp.weixin.qq.com/s/i6utpHaN4eG5GeJGvBy-pA

三、ambari 与 cloudrea manager 的对比

详情可查看我的公众号文章:https://mp.weixin.qq.com/s/OCjHXvVchL1rTBaeNkgRpg

四、我的个人规划

Ambari 两个实战教程如下所述,大家有需要的可以点击链接查看下哈:

目前,《Ambari源码编译及前后端二次开发》课程正在更新…

如果小伙伴们有相关问题需要咨询我,可以通过 https://www.yuque.com/create17/mxswdh/cg7z9x 联系到我~


点关注,不迷路

好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是人才

白嫖不好,创作不易。各位的支持和认可,就是我创作的最大动力,我们下篇文章见!

如果本篇博客有任何错误,请批评指教,不胜感激 !

Ambari 与我的羁绊 - 图3