https://www.ibm.com/developerworks/cn/opensource/os-cn-bigdata-ambari/数据库
Ambari 跟 Hadoop 等开源软件同样,也是 Apache Software Foundation 中的一个项目,而且是顶级项目。目前最新的发布版本是 2.0.1,将来不久将发布 2.1 版本。就 Ambari 的做用来讲,就是建立、管理、监视 Hadoop 的集群,可是这里的 Hadoop 是广义,指的是 Hadoop 整个生态圈(例如 Hive,Hbase,Sqoop,Zookeeper 等),而并不只是特指 Hadoop。用一句话来讲,Ambari 就是为了让 Hadoop 以及相关的大数据软件更容易使用的一个工具。apache
说到这里,你们就应该明白什么人最须要 Ambari 了。那些苦苦花费好几天去安装、调试 Hadoop 的初学者是最能体会到 Ambari 的方便之处的。并且,Ambari 如今所支持的平台组件也愈来愈多,例如流行的 Spark,Storm 等计算框架,以及资源调度平台 YARN 等,咱们都能轻松地经过 Ambari 来进行部署。centos
Ambari 自身也是一个分布式架构的软件,主要由两部分组成:Ambari Server 和 Ambari Agent。简单来讲,用户经过 Ambari Server 通知 Ambari Agent 安装对应的软件;Agent 会定时地发送各个机器每一个软件模块的状态给 Ambari Server,最终这些状态信息会呈如今 Ambari 的 GUI,方便用户了解到集群的各类状态,并进行相应的维护。详细的操做和介绍会在后续章节介绍。浏览器
关于 Ambari 的安装,目前网上能找到两个发行版,一个是 Apache 的 Ambari,另外一个是 Hortonworks 的,二者区别不大。这里就以 Apache 的 Ambari 2.0.1 做为示例。本文使用三台 Redhat 6.6 做为安装环境(目前测试验证结果为 Ambari 在 Redhat 6.6 的版本上运行比较稳定),三台机器分别为 zwshen37.example.com、zwshen38.example.com、zwshen39.example.com。zwshen37 计划安装为 Ambari 的 Server,另外两台为 Ambari Agent。安全
安装 Ambari 最方便的方式就是使用公共的库源(public repository)。有兴趣的朋友能够本身研究一下搭建一个本地库(local repository)进行安装。这个不是重点,因此不在此赘述。在进行具体的安装以前,须要作几个准备工做。架构
以上的准备工做完成后,即可以真正的开始安装 Ambari 了。框架
首先须要获取 Ambari 的公共库文件(public repository)。登陆到 Linux 主机并执行下面的命令(也能够本身手工下载):ssh
1curl |
|
将下载的 ambari.repo 文件拷贝到 Linux 的系统目录/etc/yum.repos.d/。拷贝完后,咱们须要获取该公共库的全部的源文件列表。依次执行如下命令。
1 2 |
|
如图 1 所示:
图 1. 获取公共库源文件列表
若是能够看到 Ambari 的对应版本的安装包列表,说明公共库已配置成功。而后就能够安装 Ambari 的 package 了。执行下面的命令安装 Ambari Server 到该机器。
1 |
|
待安装完成后,便须要对 Ambari Server 作一个简单的配置。执行下面的命令。
1 |
|
在这个交互式的设置中,采用默认配置便可。Ambari 会使用 Postgres 数据库,默认会安装并使用 Oracle 的 JDK。默认设置了 Ambari GUI 的登陆用户为 admin/admin。而且指定 Ambari Server 的运行用户为 root。
简单的 setup 配置完成后。就能够启动 Ambari 了。运行下面的命令。
1 |
|
当成功启动 Ambari Server 以后,即可以从浏览器登陆,默认的端口为 8080。以本文环境为例,在浏览器的地址栏输入 http://zwshen37.example.com:8080,登陆密码为 admin/admin。登入 Ambari 以后的页面以下图。
图 2. Ambari 的 welcome 页面
至此,Ambari Server 就安装完成了。
到这一节,咱们将能够真正地体验到 Ambari 的用武之地,以及它所能带来的方便之处。
登陆 Ambari 以后,点击按钮“Launch Install Wizard”,就能够开始建立属于本身的大数据平台。
第一步,命名集群的名字。本环境为 bigdata。
第二步,选择一个 Stack,这个 Stack 至关于一个 Hadoop 生态圈软件的集合。Stack 的版本越高,里面的软件版本也就越高。这里咱们选择 HDP2.2,里面的对应的 Hadoop 版本为 2.6.x。
第三步,指定 Agent 机器(若是配置了域,必须包含完整域名,例如本文环境的域为 example.com),这些机器会被安装 Hadoop 等软件包。还记得在安装章节中提到的 SSH 无密码登录吗,这里须要指定当时在 Ambari Server 机器生成的私钥(ssh-keygen 生成的,公钥已经拷贝到 Ambari Agent 的机器,具体的 SSH 无密码登陆配置,能够在网上很容易找到配置方法,不在此赘述)。另外不要选择“Perform manual registration on hosts and do not use SSH“。由于咱们须要 Ambari Server 自动去安装 Ambari Agent。具体参见下图示例。
图 3. 安装配置页面
第四步,Ambari Server 会自动安装 Ambari Agent 到刚才指定的机器列表。安装完成后,Agent 会向 Ambari Server 注册。成功注册后,就能够继续 Next 到下一步。
第五步,这里咱们终于看到跟 Hadoop 有关的名词了。在这一步,咱们须要选择要安装的软件名称。本文环境选择了 HDFS,YARN + MapReduce2,Zoopkeeper,Storm 以及 Spark。选的越多,就会须要越多的机器内存。选择以后就能够继续下一步了。这里须要注意某些 Service 是有依赖关系的。若是您选了一个须要依赖其余 Service 的一个 Service,Ambari 会提醒安装对应依赖的 Service。参见下图。
图 4. Service 选择页面
第六步和第七步,分别是选择安装软件所指定的 Master 机器和 Slave 机器,以及 Client 机器。这里使用默认选择便可(真正在生产环境中,须要根据具体的机器配置选择)。
第八步,就是 Service 的配置。绝大部分配置已经有默认值,不须要修改。初学者,若是不须要进行调优是能够直接使用默认配置的。有些 Service 会有一些必须的手工配置项,则必须手动输入,才能够下一步。本文环境直接使用默认配置。
第九步,Ambari 会总结一个安装列表,供用户审阅。这里没问题,就直接下一步。
第十步,Ambari 会开始安装选择的 Service 到 Ambari Agent 的机器(以下图)。这里可能须要等好一会,由于都是在线安装。安装完成以后,Ambari 就会启动这些 Service。
图 5. Service 的安装进度
安装完成以后,就能够查看 Ambari 的 Dashboard 了。例以下图。
图 6. Ambari 的 Dashboard 页面
至此,您专属的 bigdata 集群已经安装完成。
在上一章节中,咱们已经体验到 Ambari 为 Hadoop 生态圈的安装提供的便利。这已经省去了不少的人力成本。尤为是对大数据圈子的测试人员来讲,自动化就容易了不少。下面咱们看看如何经过 Ambari 管理 Hadoop 的集群。
首先咱们进到 Ambari 的 GUI 页面,并查看 Dashboard。在左侧的 Service 列表中,咱们能够点击任何一个您想要操做的 Service。以 MapReduce2 为例(Hadoop 这里的版本为 2.6.x,也就是 YARN+HDFS+MapReduce),当点击 MapReduce2 后,就会看到该 Service 的相关信息,以下图。
图 7. MapRduce2 的 Service 页面
中间部分是 Service 的模块(Component)信息,也就是该 Service 有哪些模块及其数目。右上角有个 Service Action 的按钮,当点击该按钮后就能够看到不少 Service 的控制命令。也就是经过这些 Service Action 命令,对 Service 进行管理的。
可能有的人会说,装完 Hadoop 的集群后,并不知道这个集群是否是可用。这时候咱们就能够运行一个“Run Service Check”。点击这个命令后,就会出现下图的进度显示。
图 8. MapReduce Service Check
其实这里就是经过运行一个经典的 MapReduce Wordcount 实例,来检查 MapReduce 是否是正常。对于 Service Action 里面的 Start、Stop 的含义就是,启停整个集群全部该 Service 的模块(也就是 Service level)。当执行进度页面弹出来的时候,咱们能够点击 Operations 的名字,进而查看每一个机器的进度和运行 log。以下图 Stop 的操做。
图 9. 命令执行进度 1
图 10. 命令执行进度 2
维护模式(Maintenance Mode)以及如何添加一个自定义的命令到 Service Action,我会在后续的连载中进行介绍。
首先,咱们回到 Ambari 的 Dashboard 页面。页面最上面中间的地方有个 Hosts,点击这个标签,咱们就能够看到 Ambari 所管理的机器列表。以下图。
图 11. Ambari 的机器列表
图片中红色的数字是警告信息(Ambari Alert),这里咱们先略过它,后续文章再作介绍。先看左上角的 Actions,点击这个按钮,就能够看到 Host level Action 的选项了,其实和 Service Level 是相似的,只是执行的范围不同。以下图。当用户选择 All Hosts -> Hosts -> Start All Components,Ambari 就会将全部 Service 的全部模块启动。
图 12. 启动全部 Service 的全部模块
若是用户选择 All Hosts-> DataNodes -> Stop,Ambari 就会把全部机器的 DataNode 这个模块关闭。以下图。
图 13. 关闭全部的 DataNode 模块
上面的图中,咱们能够看到 Decommisson、Recommission。这些命令实际上是自定义的模块级别的操做(Component Level Action)。不过上图中命令一旦执行,就是对多个机器的同个模块执行。
咱们如今尝试只对单个机器的一个模块(Component)执行。首先咱们回到 Hosts 的页面。这时候点击机器名,咱们就会进入到该机器的 Component 页面。以下图。
图 14. Component 页面
这时候只要点击每一个 Component(模块)后面的按钮,就能够看到该模块的操做命令了。例如,咱们能够停掉这台机器的 DataNode 模块。
图 15. 中止 DataNode 模块 1
图 16. 中止 DataNode 模块 2
关于如何给一个模块添加自定义的命令,也会在后续的连载中作介绍。
这一章节中,主要介绍了如何经过三种级别的 Action(操做)管理 Hadoop 的集群。在 Ambari 中已经加入了不少自定义的 Action 去作一些特殊的操做。若是对 Hadoop 生态圈的软件足够熟悉,就能够尝试更多的 Action。可能有的人会问,Ambari 可不能够扩容集群。答案固然是能够的。Ambari 能够给自身的集群添加机器(也就是添加 Ambari Agent),而后将 Service 的模块安装在新的机器,也能够把某些模块安装到已有的其余的机器。篇幅有限,将在后续的连载中介绍更多的内容。
Ambari 基本的架构和工做原理以下图 17 所示。
图 17. Ambari 的基本架构
Ambari Server 会读取 Stack 和 Service 的配置文件。当用 Ambari 建立集群的时候,Ambari Server 传送 Stack 和 Service 的配置文件以及 Service 生命周期的控制脚本到 Ambari Agent。Agent 拿到配置文件后,会下载安装公共源里软件包(Redhat,就是使用 yum 服务)。安装完成后,Ambari Server 会通知 Agent 去启动 Service。以后 Ambari Server 会按期发送命令到 Agent 检查 Service 的状态,Agent 上报给 Server,并呈如今 Ambari 的 GUI 上。
Ambari Server 支持 Rest API,这样能够很容易的扩展和定制化 Ambari。甚至于不用登录 Ambari 的 GUI,只须要在命令行经过 curl 就能够控制 Ambari,以及控制 Hadoop 的 cluster。具体的 API 能够参见 Apache Ambari 的官方网页 API reference。
对于安全方面要求比较苛刻的环境来讲,Ambari 能够支持 Kerberos 认证的 Hadoop 集群。
首先,咱们须要规划自定义的 Service 属于哪一个 Stack(固然 Stack 也是能够自定义的)。这里为了快速建立一个新的 Service,并且咱们已经安装了 HDP 2.2 的 Stack,因此就将自定义的 Service 放在 HDP 2.2 之下。
第一步,首先在 Ambari Service 机器上找到 HDP 2.2 Stack 的目录,以下图所示。
图 18. HDP 2.2 的目录
第二步,须要建立一个 Service 目录,咱们这里用“SAMPLE”做为目录名。并在 SAMPLE 底下建立 metainfo.xml。示例代码以下。主要解释下 xml 代码中的两个字段 category 和 cardinality。category 指定了该模块(Component)的类别,能够是 MASTER、SLAVE、CLIENT。Cardinality 指的是所要安装的机器数,能够是固定数字 1,能够是一个范围好比 1-2,也能够是 1+,或者 ALL。若是是一个范围的时候,安装的时候会让用户选择机器。另外这里有关 Service 和 Component 的 name 配置要用大写,小写有时候会有问题。Displayname 能够随意设置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
|
第三步,须要建立 Service 的控制脚本。这里咱们须要在 SAMPLE 底下建立一个 package 目录,而后在 package 底下建立目录 scripts ,进而建立 master.py 和 slave.py。这里须要保证脚本路径和上一步中 metainfo.xml 中的配置路径是一致的。这两个 Python 脚本是用来控制 Master 和 Slave 模块的生命周期。脚本中函数的含义也如其名字同样:install 就是安装调用的接口;start、stop 分别就是启停的调用;Status 是按期检查 component 状态的调用;Configure 是安装完成配置该模块的调用。示例目录结构以下图。
图 19. Sample Service 的目录结构
Python 脚本的示例代码:
Master.py:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
Slave.py:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
第四步,须要重启 Ambari Server。由于 Ambari Server 只有在重启的时候才会读取 Service 和 Stack 的配置。命令行执行:
1 |
|
第五步,登陆 Ambari 的 GUI,点击左下角的 Action,选择 Add Service。以下图:
图 20. Add Service 按钮
这时候就能够看到咱们自定义的 Service:SAMPLE。以下图:
图 21. Sample Service 列表
选择左侧 My Sample 后,就能够一路 Next 了,这个过程其实和咱们在搭建 Hadoop2.x 集群的时候是相似的。因为这个 Service 没有真的安装包,因此安装过程会很是的快,启动命令也没有真正的逻辑,因此启动过程也是很快的。等最后点击完 Complete,整个安装过程也就结束了。再回到 Ambari 的 Dashboard 的时候,咱们就能够看到这个 My Sample 了,以下图:
图 22. My Sample 的 Service 页面
到此就能够和第四节中管理 Hadoop 集群同样管理咱们的 My Sample。例以下图,Stop 咱们的 My Sample。
图 23. Stop Sample 页面 1
图 24. Stop Sample 页面 2
图 25. Stop Sample 页面 3
进阶的篇幅中,将会探讨如何给咱们的 My Sample 自定义一些 Actions,以及 Action 之间的依赖关系如何定义。篇幅有限,这里就先到此为止。但愿以上的介绍可以燃起你们对 Ambari 的热情。
大数据与云计算可谓是现在数据中心中最火的两项技术领域,几乎全部的 IT 服务商都想在这两项技术中有所建树。相信 Ambari 能够帮助一些 Hadoop 的初学者。长远看来,大数据的发展离不开云计算,云计算中 IaaS 可谓已经很成熟,而且价格低廉。这时候许多公司将目光汇集在了 PaaS。大数据的流行更是加速了相关 PaaS 产品的发展,而 Ambari 的出现必然能够拉近 IaaS 和 PaaS 的距离。也就是说有了 Ambari,或许再加上 Docker,那么快速从 IaaS 演进到 PaaS 就显得不是那么困难了。
固然这里 Ambari 要跟 IaaS 更好的切合,还有个对手那就是 Sahara。它是另外一个土生土长的 OpenStack 的子项目,其目的也是为了在 Openstack 上面快速搭建 Hadoop 等集群。指望着这些项目可以快速成长,未来对你们都有所帮助。