当前位置: 新豪天地登录网址 > www.3559.com > 正文

Ambari安装及自定义service初步实现,手把手教你

时间:2019-09-13 23:06来源:www.3559.com
原标题:手把手教你Apache顶级项目Amabari 的集群管理(一) Ambari-整体介绍 Ambari目标 解决Hadoop生态系统部署 部署:hadoop组件间有依赖,包括配置、版本、启动顺序、权限配置等。 部署

原标题:手把手教你Apache顶级项目Amabari 的集群管理(一)

Ambari-整体介绍

Ambari目标

解决Hadoop生态系统部署

部署:hadoop组件间有依赖,包括配置、版本、启动顺序、权限配置等。

部署过程跟踪。能够展示出部署过程中每个步骤的状态及相关信息。

多机部署问题,当集群规模增加后,机器出问题机率增加,在部署或更新中可能会出现机器故障

组件本身设计:hadoop及其组件需要容忍机器的故障,同时需要防止不兼容版本组件给系统带来的影响

部署服务:需要能够容忍某些组件启动、更新失败

配置管理

可以将默认配置写入stack中(stack后续介绍),在开启时ambari将stack中各个版本的config文件读入,在使用blueprint创建集群部署hadoop时,直接生成command-json文件。(blueprint后续介绍)

服务状态展示、监控、报警

Ambari主要概念

资源

ambari将集群及集群中的服务、组件、机器都视为资源,资源的状态都会记录在db中

Hadoop生态

Stack

发行版本的含义,如HDP,可以有若干版本。

Service

服务,属于stack,一个stack下可以有多个service,service也可以分多个版本,版本间可以有继承关系。例如zookeeper就是一项服务。

Component

组件,属于service,一个service下可以有多个component组成。例如HDFS服务下的组件有datanode,namenode等。

角色

Component可以指定部署时的角色,如master、slave等,也可以指定每种角色需要的host个数。例如namenode为单一host组件,可以部署在master机器上,datanode可以部署在多台host上那么可以指定部署datanode的角色为slave

host

host为运行ambari-agent的一台机器,同时也是搭建集群内部的一台机器,可以为host设置对应的角色,例如master,slave等。

Ambari整体流程

restAPI->ambari-server

单步创建

通过调用ambari提供的restAPI进行集群的单步创建

Add cluster:新建集群

Update cluster:更新集群配置

Add service for cluster:向集群添加服务

Add component for service:为每个服务添加对应组件

Add host for cluster:添加host资源

Add component on host:设置每个host上运行的组件

Install/Start/Stop service:安装/开启/关闭 集群的对应服务

Blueprint

调用一次restAPI即可进行集群创建、服务安装、组件部署、服务开始等集群操作,简化了单步创建的调用次数。

ambari-server->ambari-agent

ambari-server端负责接收rest请求,再向agent端发送命令,发送命令的格式是json,内部包涵部署脚本执行命令(安装/开始/停止服务)所需要的配置信息,这里所指的配置信息一般是手动部署集群需要配置的xml文件,例如hadoop-site.xml文件,在blueprint或单步创建里会有详细说明。

ambari-agent执行脚本。ambari-agent所执行的脚本存储在ambari-server 机器上的/var/lib/ambari-server/resources/stacks/HDP/2.0.6/下各个service路径下的package路径下的scripts内,脚本的编写语言为python,脚本继承了名为Script的父类,该父类提供了一些函数,例如Script.get_config(),该函数将agent接收来自server端的command-json文件的内容转化为字典格式方便脚本实现部署时对配置的使用。具体anent接收到的command-json保存在了运行agent机器下的/var/lib/ambari-agent/data路径下。

Hadoop集群监控工具Ambari安装

使用Ambari快速部署Hadoop大数据环境

本文永久更新链接地址:

Ambari目标 解决Hadoop生态系统部署 部署:hadoop组件间有依赖,包括配置、版本、启动顺序、权限配置等。 部署过程跟踪。能...

Ambari目标

Ambari安装

导读

解决www.3559.com,Hadoop生态系统部署

1 Ambari简介

Apache Ambari是Hortonworks开源的Hadoop集群管理工具,并于2013年底从孵化器毕业,成为Apache的顶级项目。Ambari具备Hadoop组件的安装、管理、运维等基本功能,并提供GUI进行可视化的集群管理,简化了大数据平台的安装、使用难度。

部署:hadoop组件间有依赖,包括配置、版本、启动顺序、权限配置等。

Apache Ambari项目的目的是通过开发软件来配置、监控和管理hadoop集群,以使hadoop的管理更加简单。同时,ambari也提供了一个基于它自身RESTful接口实现的直观、简单易用的web管理界面。

本次分享主要涉及Ambari的简单介绍及Ambari自定义插件开发步骤(基于Ambari 2.5.1.0版本)。

部署过程跟踪。能够展示出部署过程中每个步骤的状态及相关信息。

Ambari允许系统管理员进行以下操作:

▌**引言**

多机部署问题,当集群规模增加后,机器出问题机率增加,在部署或更新中可能会出现机器故障

1.提供安装管理hadoop集群;

Hadoop自从它诞生之日起,集群的管理就是一个无法回避的问题。两家商业化平台厂商Cloudera和Hortonworks分别推出了各自的平台管理软件:ClouderaManager和Ambari来解决集群管理这个问题。Ambari并没有对Hadoop组件进行过多的功能集成(如日志分析等),只是提供了安装,配置,启停等基础功能,尽量保持了跟原生Hadoop组件的隔离性,对组件的具体操作,则可通过Quick Links直接导向原生的管理界面(如yarn UI,HBase Master UI)来完成,保持了对于Hadoop组件的低侵入性。但是Ambari目前只支持HDP,不支持原生的或者其他二次开发的Hadoop平台,一定程度上影响了它的流行。

组件本身设计:hadoop及其组件需要容忍机器的故障,同时需要防止不兼容版本组件给系统带来的影响

2.监控一个hadoop集群;

考虑到Ambari的开源,可拓展,社区强大等特性,易观选择了Ambari来管理集群。

部署服务:需要能够容忍某些组件启动、更新失败

3.扩展ambari管理自定义服务功能.

▌**概念介绍**

配置管理

2 集群所需基础条件

正式开始之前,先为不熟悉Ambari的同学普及几个ambari里的概念:

可以将默认配置写入stack中(stack后续介绍),在开启时ambari将stack中各个版本的config文件读入,在使用blueprint创建集群部署hadoop时,直接生成command-json文件。(blueprint后续介绍)

2.1 操作系统的需求

Server,Agent:Ambari框架采用的是Server/Client的模式,主要由两部分组成:ambari-agent和ambari-server。Ambari Server 会读取 Stack 和 Service 的配置文件。当Ambari Server启动的时候,Ambari Server 会分发 Stack 和 Service 的配置文件以及 Service 生命周期的控制脚本到 Ambari Agent。Agent端拿到配置文件后,会下载安装公共源里软件包(对于centos系统,就是使用 yum 服务)。安装完成后,Ambari Server 会通知 Agent去启动 Service。之后 Ambari Server 会定期发送命令到 Agent 检查 Service 的状态,Agent 返回信息给 Server,并呈现在 Ambari 的 GUI 上。

服务状态展示、监控、报警

•Red Hat Enterprise Linux (RHEL) 版本5.x 或者 6.x (64位) ;

一个ambari服务的目录结构大致如下:

Ambari主要概念

•CentOS版本5.x、6.x (64位) 或7.x;

www.3559.com 1

资源

•Oracle Linux版本5.x 或者6.x (64位) ;

stacks: stack表示某个发行版本,例如HDP-2.0.6。stack版本可以通过metainfo.xml设置继承关系,便于共享脚本和配置。

ambari将集群及集群中的服务、组件、机器都视为资源,资源的状态都会记录在db中

本文档选择的是CentOS版本 6.5 (64位) ;

common-services:ambari的服务定义库。service在此完成定义,在某个stack版本注册,实现服务的发布。

Hadoop生态

2.2 系统基础软件的需求

service:service是集群(大数据)组件的抽象,由一个或多个component组成。component的category有MASTER,SLAVE,CLIENT三种,对应不同的生命周期:

Stack

在每一台主机上都要安装以下软件:

www.3559.com 2

发行版本的含义,如HDP,可以有若干版本。

(1) yum和rpm (RHEL/CentOS/Oracle Linux);

▌**工作原理**

Service

(2)zypper(SLES);

www.3559.com 3

服务,属于stack,一个stack下可以有多个service,service也可以分多个版本,版本间可以有继承关系。例如zookeeper就是一项服务。

(3)scp,curl,wget;

图一:Ambari工作原理

Component

2.3 JDK的需求

Ambari工作原理如上图所示:

组件,属于service,一个service下可以有多个component组成。例如HDFS服务下的组件有datanode,namenode等。

Oracle JDK 1.7.0_79 64-bit (默认)

1.ambari已安装的服务配置会存储在mysql中,可通过web界面修改,改完记得重启服务保证配置生效;

角色

OpenJDK 7 64-bit (SLES不支持)

2.新添加的service定义会在ambari-server启动时,从server节点分发到各agent节点;

Component可以指定部署时的角色,如master、slave等,也可以指定每种角色需要的host个数。例如namenode为单一host组件,可以部署在master机器上,datanode可以部署在多台host上那么可以指定部署datanode的角色为slave

3 安装各项软件前的先决条件

3.安装service时,会默认yum安装,而且它对于安装服务,有30分钟的超时时间,如果30分钟内没有下载完,就会造成安装失败。这意味着大部分情况下需要你配置本地yum源;

host

3.1 ambari和监控软件所需条件

4.web界面的start,stop命令,会被server发送给agent,由agent调用生命周期脚本中的对应方法来实现服务起停。

host为运行ambari-agent的一台机器,同时也是搭建集群内部的一台机器,可以为host设置对应的角色,例如master,slave等。

安装ambari之前,为了保证ambari各项服务和各项监控服务的正常运行,根据操作系统的不同,需要确定一些已经安装的软件的版本,以下列出的软件版本必须符合要求。即:如果现有的系统上有以下软件,版本必须与下面列出的版本完全一致,如果没有的话安装程序会自行安装。

▌**服务定制开发**

Ambari整体流程

图表3-1软件先决配置表

虽然Ambari已经支持大多数Hadoop组件,但是有时候我们希望通过Ambari监控管理部署在集群上的自研程序,这时候就需要用到ambari的服务定制。

restAPI->ambari-server

www.3559.com 4

下面,我们将尝试开发一个叫EGSERVER的服务,并将它添加到一个已存在的stack里:

单步创建

www.3559.com 5

1.创建服务定义目录

通过调用ambari提供的restAPI进行集群的单步创建

3.2 Ambari与HDP版本兼容性

www.3559.com 6

Add cluster:新建集群

由于软件版本的升级,各版本之间由于版本之间的兼容性可能会导致一些问题。

2.进入刚创建的目录,创建编辑metainfo.xml文件

Update cluster:更新集群配置

表格 3-2 版本兼容性

www.3559.com 7

Add service for cluster:向集群添加服务

www.3559.com 8

www.3559.com 9

Add component for service:为每个服务添加对应组件

4 安装实例说明

www.3559.com 10

Add host for cluster:添加host资源

本文所选择的系统与软件版本,如下表所示:

www.3559.com 11

Add component on host:设置每个host上运行的组件

表格 4-1系统与软件版本

编辑metainfo.xml时要注意:

Install/Start/Stop service:安装/开启/关闭 集群的对应服务

www.3559.com 12

a.service和component的name一定要大写;

Blueprint

4.1 安装Ambari前的操作系统准备

b.cardinality节点表示安装数。

调用一次restAPI即可进行集群创建、服务安装、组件部署、服务开始等集群操作,简化了单步创建的调用次数。

4.1.1 配置主机名

1表示只能装一个,

ambari-server->ambari-agent

Ambari配置集群信息的时候是通过全限定主机名来确定集群中的机器信息的,所以必须确保主机名无误。

1 表示最少装一个,

ambari-server端负责接收rest请求,再向agent端发送命令,发送命令的格式是json,内部包涵部署脚本执行命令(安装/开始/停止服务)所需要的配置信息,这里所指的配置信息一般是手动部署集群需要配置的xml文件,例如hadoop-site.xml文件,在blueprint或单步创建里会有详细说明。

4.1.2 配置集群信息

0-1表示最多一个,

ambari-agent执行脚本。ambari-agent所执行的脚本存储在ambari-server 机器上的/var/lib/ambari-server/resources/stacks/HDP/2.0.6/下各个service路径下的package路径下的scripts内,脚本的编写语言为python,脚本继承了名为Script的父类,该父类提供了一些函数,例如Script.get_config(),该函数将agent接收来自server端的command-json文件的内容转化为字典格式方便脚本实现部署时对配置的使用。具体anent接收到的command-json保存在了运行agent机器下的/var/lib/ambari-agent/data路径下。

在每一台机器的hosts文件上都要做映射配置,命令如下:

ALL表示每台及其都需要装。

Hadoop集群监控工具Ambari安装 http://www.linuxidc.com/Linux/2014-06/103208.htm

# vi /etc/hosts

c.package的name节点会作为yum时所用的名字,可使用*做适配。

使用Ambari快速部署Hadoop大数据环境 http://www.linuxidc.com/Linux/2014-05/101531.htm

然后添加如下内容:

3.创建metainfo.xml里涉及的服务脚本

本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-10/108341.htm

表格 4-2 ip映射信息表

www.3559.com 13

www.3559.com 14

www.3559.com 15

www.3559.com 16

4.1.3 配置ssh免密码互通

www.3559.com 17

首先,在主节点和其他节点上都执行以下命令,以确保每台机器都可产生公钥。

www.3559.com 18

www.3559.com 19

上述脚本中涉及到的方法中,install()在安装时调用,start(),stop()对应服务的起停,status()用来做状态检查,configure()则用来从配置文件等处获取相关配置。

然后一路回车即可.然后将每个节点的公钥组成一个新的authorized_keys文件,然后将其分发到每个节点中.从而,完成了各个节点的免密登录操作.

4.重启Ambari Server来将刚刚编辑好的文件分发到集群的各agent节点

4.1.4 配置NTP时间同步

ambari-server restart

首先在主节点上做如下操作:

5.将你的服务打成rpm包,并添加到yum源里

(1) 安装时间服务器ntp:

6.通过web UI安装刚定义好的服务

#yum install ntp

www.3559.com 20

(2) 修改ntpd配置文件

图2:Web UI Add Service Wizard界面

(3) 开启时间同步服务器

b.点击 Add Services,

#sevrice ntpd start

choose services界面勾选刚刚添加的服务EGUAN custom Service,然后Next;

(4) 在其他各个从节点做相同操作,至此ntp同步完成

c.Assign masters,

4.1.5关闭selinux

选择 EGSERVER_MASTER要部署的节点;

永久关闭SELinux

d.Assign Slaves and Clients,

# vi /etc/selinux/config

选择slave和client要部署的节点;

将SELINUX=enforcing改为SELINUX=disabled

e.继续next,直到安装成功,

重启生效,重启命令为:

然后你就能在页面左侧导航区看到新加的服务了;

# reboot

g.如果某个节点想新加client,

4.1.6关闭iptables防火墙

可以进入该节点的监控页面,点击components右侧的" Add"来添加。

永久关闭(需要重启)

这样,你就成功添加了EGSERVER服务到Ambari中,可随时通过Ambari来监控服务的存活状态,执行启停等。

# chkconfig iptables off

部分内容引用:

暂时关闭防火墙服务(需要重启防火墙)

service iptables stop

单日票新鲜出炉

查看防火墙状态

26日通票279元

# chkconfig –list|grep iptables

27日通票209元

提示:Linux下的其它服务都可以用以上命令执行开启和关闭操作

随心组合

重启生效,重启命令为:

共享年度大数据巅峰盛典

# reboot

**戳“阅读原文”,参与优惠活动吧~**返回搜狐,查看更多

4.2 创建yum本地源

责任编辑:

首先检验主节点是否安装httpd服务器,命令如下:

rpm -qa |grep httd

若没有,则安装,命令如下:

#yum install httpd

启动httpd

#service httpd start

chkconfig httpd on

对文件夹与子文件夹内所有文件授予同一权限,命令如下:

chmod –R ugo rX /var/www/html

打开网络

vim /etc/sysconfig/network-script/ifcfg-eth0

修改为onboot=yes

安装成功之后,Apache工作目录默认在/var/www/html。

配置:

检查端口是否占用,Apache http服务使用80端口

[root@master ~]$ netstat -nltp | grep 80

如果有占用情况,安装完毕之后需要修改Apache http服务的端口号:

[root@ master ~]$ vi /etc/httpd/conf/httpd.conf

修改监听端口,Listen 80为其他端口。

将所下载的安装文件放在/etc/www/html下,然后启动

[root@ master ~]$ service httpd start

可以在浏览器中查看 看到Apache server的一些页面信息,表示启动成功。

5 完全离线安装Ambari前的准备

离线安装跟在线安装的区别在于yum所使用的仓库的位置不同,即把远程的仓库中的安装包等资源拷贝一份儿放在本地,然后在yum仓库包文件夹中创建这些资源的本地仓库包,即可按照在线安装的方式进行安装就行了。不过离线安装需要先解决Ambari的rpm包的依赖性问题,即首先要确保已经安装了postgresql8.4.3,或者有本地postgresql8.4.3仓库。

5.1 先决条件

Ambari的离线安装,需要使用yum,如果是新安装的操作系统,可能缺少很多必要的条件,以下表格按照从前往后的顺序,依次说明,如果已经实现了某些条件,跳过那些条件即可。

因操作系统中本身自带软件的复杂性,如在安装中提示有其他所需软件或提示现有软件升级,按照提示解决即可.

5.2 建立本地资源库

在集群内部某台机器上安装http服务即可,然后将提供的tar包或者rpm包放置到那台机器上的/var/www/html目录(Apache默认目录)下解压即可,最好在这个目录下新建一个目录,将所有的ambari的tar包和HDP及HDPUTIL的tar包都放置进去并解压,如果机器没有手动安装PostgreSQL,将提供的上述软件的软件包一并放入到本地资源库中即可。

5.3 设置yum不检查gpg密钥

经检测离线安装Hadoop集群时会因为yum检查要安装的软件的gpg密钥而导致错误,此时可通过关闭系统的yum gpg检查来规避错误

# vi /etc/yum.conf

设置gpgcheck属性值为0即可

gpgcheck=0

5.4 安装ambari服务

# yum –install ambari-server

5.5 ambari设置

# ambari-server setup

运行过后则会出现是否进入ambari-server守护进程,选择jdk,配置数据库等信息,可根据系统自身需要进行选择.

当出现“Ambari Server ‘setup’ completed successfully”,则说明Ambari-server配置成功。需要说明的是,此次安装选择的数据库是PostgreSQL数据库,其中用户、数据库等都是提前默认好的;若选择MySQL数据库,则需要在安装Ambari-server之前建好用户、赋予权限、建好数据库等等操作。

然后启动ambari-server,最后根据需要安装hadoop生态中的各项服务.

自定义service服务

1 ambari自定义扩展service

从第一部分可知,ambari具有进行二次开发的功能,主要工作就是将自研的组件等集成到ambari中,并对其进行管理监控.本文主要以集成redis为例进行讲述.

首先,由于service都是隶属于stack的,所以要决定自定义一个service属于哪个stack.,又因为已经安装了HDP2.5.0具有stack,所以,本文将自定的service放置在HDP2.5.0的stack下.新建service名为:redis-service,其中包含结构图如下图所示:

www.3559.com 21

其中configurate中的xml文件主要安装完成配置该模块的调用,package中主要问控制service生命周期的python文件,metainfo.xml文件则主要问定义service的一些属性,metrics.json与widgets.json控制着service的界面图表显示.

其中metainfo.xml实例如下:

www.3559.com 22

www.3559.com 23

其次,需要创建 Service 的生命周期控制脚本master.py 和 slave.py。这里需要保证脚本路径和上一步中 metainfo.xml 中的配置路径是一致的。这两个 Python 脚本是用来控制 Master 和 Slave 模块的生命周期。脚本中函数的含义也如其名字一样:install 就是安装调用的接口;start、stop 分别就是启停的调用;Status 是定期检查 component 状态的调用。其中master.py与slave.py的模板为:

Master.py

www.3559.com 24

Slave.py

www.3559.com 25

再次,将redis的rpm安装文件放入到HDP安装包的/var/www/html/ambari/HDP/centos6/目录下.

再次,重启ambari-server, 因为 Ambari Server 只有在重启的时候才会读取 Service 和 Stack 的配置。命令行执行:ambari-server restart.

最后,登录 Ambari 的 GUI,点击左下角的 Action,选择 Add Service。如下图:

www.3559.com 26

此时就可以在安装service列表中看到Redis服务了.然后检验该服务是否安装成功.

2 ambari实现自定义扩展service界面显示

在第二章的第一节中service自定义中提及metircs.json与widget.json时, 其中Widget 也就是 Ambari Web 中呈现 Metrics 的图控件,它会根据 Metrics 的数值,做出一个简单的聚合运算,最终呈现在图控件中。Widget 则进一步提升了 Ambari 的易用性,以及可配置化。Widget 是显示 AMS 收集的 Metrics 属性.

此处紧接着上节,其中metrics.json模板为:

www.3559.com 27

widget.json为:

www.3559.com 28

至此,重启ambari-service,命令如下:

www.3559.com 29

3 数据采集及发送

利用shell脚本将redis运行信息数据采集并一次性发送到metrics collector中,脚本如下所示:

www.3559.com 30

运行如下命令(这里要注意的是参数 1 是 Metrics Collector 的所在机器,并不是 Ambari Server所在的机器):

./metric_sender.sh ambari_collector_host total_connections_received redis

如果过程不出意外,等待2-4分钟界面上即有数据显示.通过上面的操作,可以实现将ambari没有纳入到监控管理的软件进行管理监控。

本文原创首发于Cobub官网博客,如需转载请注明出处!

Cobub Razor是一款开源移动应用数据统计分析工具。

Cobub开源社区QQ194022996

编辑:www.3559.com 本文来源:Ambari安装及自定义service初步实现,手把手教你

关键词: www.3559.com