阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

如何监控你的Hadoop+Hbase集群?

215次阅读
没有评论

共计 9331 个字符,预计需要花费 24 分钟才能阅读完成。

前言

监控 Hadoop 的框架有不少,如 CDH 的 CM 组件和 Ambari 都可以监控他们自己的 hadoop,但是它不能监控 apache 的 hadoop,如果你是使用原生的 Apache Hadoop,那么也没关系,原生的 Hadoop 天生就提供了非常详细的对接 Ganglia 的 jmx 接口,里面包含了各个核心组件 metrics 获取功能,这一点你可以查看 hadoop 和 hbase 包括 spark 的 conf 下面的 metrics 文件里面配置,就能得到验证。

(一)Ganglia 是什么?

Ganglia 是 UC Berkeley 发起的一个开源监视项目,设计用于测量数以千计的节点。每台计算机都运行一个收集和发送度量数据(如处理器速度、内存使用量等)的名为 gmond 的守护进程。它将从操作系统和指定主机中收集。接收所有度量数据的主机可以显示这些数据并且可以将这些数据的精简表单传递到层次结构中。正因为有这种层次结构模式,才使得 Ganglia 可以实现良好的扩展。gmond 带来的系统负载非常少,这使得它成为在集群中各台计算机上运行的一段代码,而不会影响用户性能。

(二)Ganglia 的主要组件

1,gmond(Ganglia Monitioring Daemon):

gmond 是 ganglia 监控的基于多线程模式的守护进程,它需要安装运行在每个你想要监控的机器上,安装非常简单,你不需要有一个通用的 NFS 系统或者安装一个数据库后端存储,或者安装指定一个账户,也不需要维护一个繁琐的配置文件。

gmond 有 4 个主要的职责:

A:监控主机状态变化

B:发现或发布相关变化

C:监控其他的所有的 ganglia 节点通过一个单播(unicast)或者多播(multicast)通道模式

D:答复集群转态通过一个 XML 描述的信息

2,gmetad(Ganglia Meta Daemon)

gmetad 是 ganglia 的元数据守护进程,通常只需要一个监控集群只需要一个元数据守护进程即可,当然如果你想实现高可用的数据冗余,你也可以配置多个,gmetad 主要是收集汇聚解析从各个 gmond 进程汇报发送过来的信息,并将其保存至 rrd 数据库里,供前端查询展示所需。

3,ganglia-web(Ganglia PHP Web Frontend)

ganglia 的前端展示框架,负责以图形化的方式,展示集群的一些 metics,并且支持分钟,小时,日,月,年,级别的汇总展示,虽然页面丑陋了点,但不不算华而不实,主要是将 rrd 里面的 XML 的数据,解析为静态的 HTML 网页,方便管理员查询集群的 cpu,内存,磁盘,网络,等一些自定义的 metrics 的某个时间段的负载展现图

(三)Ganglia 的架构拓扑

如何监控你的 Hadoop+Hbase 集群?

(四)Ganglia 的安装

假设有 3 台机器 CentOS6.5 的系统,分别如下:

192.168.1.187  hadoop hbase  gmetad  gmond ganglia-web

192.168.1.186  hadoop hbase  gmond

192.168.1.184  hadoop hbase  gmond

主节点上安装的组件安装 gmetad,gmond,ganglia-web

1,安装依赖组件:

yum -y install httpd-devel automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig

2,安装 ganglia 的 epel 源,每台机器上
如果是 centos7 的系统:

# yum install epel-release 
# yum install ganglia-web ganglia-gmetad ganglia-gmond 或者直接 yum install -y ganglia*

如果是 centos6 的系统:

sudo rpm -Uvh http://dl.Fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
yum install -y ganglia*

如何监控你的 Hadoop+Hbase 集群?

下面关于 Hadoop 的文章您也可能喜欢,不妨看看:

Ubuntu14.04 下 Hadoop2.4.1 单机 / 伪分布式安装配置教程  http://www.linuxidc.com/Linux/2015-02/113487.htm

CentOS 安装和配置 Hadoop2.2.0  http://www.linuxidc.com/Linux/2014-01/94685.htm

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

3,配置 ganglia
主节点上,需要配置三个东西:
A : /etc/ganglia/gmetad.conf  只需要配置 2 个核心选项即可

data_source “hadoop” 192.168.1.187 192.168.1.186 192.168.1.184  // 使用单播的方式,加入所有要监控的机器 ip,默认端口是 8649
case_sensitive_hostnames 1  // 是否忽略大小写,1 代表不忽略,如果你的机器名里面含有大写的字母,一定要配置 1,否则 ganglia 的前端图形就不能正确的读取 rrds 里面的每个机器的数据

B : /etc/ganglia/gmond.conf

cluster {
  name = “hadoop” #配置的名字与 gmetad 里面的需要一致
  owner = “unspecified”
  latlong = “unspecified”
  url = “unspecified”
}

udp_send_channel {
  #mcast_join = 239.2.11.71 #注释掉默认的多播地址
  host = 192.168.1.187  # 使用单播模式,发送消息
  port = 8649
  ttl = 1
}

udp_recv_channel {
  #mcast_join = 239.2.11.71
  port = 8649
  bind = 192.168.1.187 #主节点的这个配置需要加上,用来接受其他机器上的传输过来的数据,特别注意从节点上的这项配置是
  retry_bind = true
}

C : /etc/httpd/conf.d/ganglia.conf

<Location /ganglia>
  Order deny,allow
  Allow from all #允许所有的机器访问
  #Deny from all
  #Allow from 127.0.0.1
 # Allow from ::1
  # Allow from .example.com
</Location>

4,从节点只要安装 gmond 组件即可

yum install -y ganglia-gmond

然后配置 gmond.conf

cluster {
  name = “hadoop” #配置的名字与 gmetad 里面的需要一致
  owner = “unspecified”
  latlong = “unspecified”
  url = “unspecified”
}

udp_send_channel {
  #mcast_join = 239.2.11.71 #注释掉默认的多播地址
  host = 192.168.1.187  # 使用单播模式,发送消息
  port = 8649
  ttl = 1
}

udp_recv_channel {
  #mcast_join = 239.2.11.71
  port = 8649
  #bind = 192.168.1.187  仅仅安装 gmond 的节点上,不需要这项配置,加上会报错
  retry_bind = true
}

5,如何改变 rrd 存储路径:
最好的办法,就是使用软连接,直接改 gmetad 里面的配置有时候可能不生效

默认的存储路径在 /var/lib/ganglia/rrds/
你可以在这个目录,建一个软连接,改变此库的存储路径:

在 /var/lib/ganglia/rrds 新建软连接,第一个参数是新路径,第二个参数是默认路径

sudo ln -s /ROOT/server/rrds  /var/lib/ganglia/rrds

改变 rrds 的 tools 的默认路径:
http://stackoverflow.com/questions/26619473/how-to-change-the-storage-path-from-rrdtool-on-the-ganglia
需要注意改变后的路径的权限和用户赋值

mkdir -p /some/other/place/
chown -R ganglia:ganglia /some/other/place/
chmod -R 777 /some/other/place/

5,如何卸载组件?

sudo yum remove -y  ganglia-web ganglia-gmetad

主节点启动

sudo service gmetad start
sudo service gmond start
sudo service httpd start

从节点

sudo service gmond start

出现错误后,可以查看系统 log 的日志
sudo tail -f /var/log/messages
大部分错误,在这里都能看到提示

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-03/129534p2.htm

(五)Hadoop 和 Hbase 的监控

修改 hadoop-metrics2.properties 文件,在行末添加如下配置:

*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
*.sink.ganglia.period=10
*.sink.ganglia.supportsparse=true
*.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both
*.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=40
namenode.sink.ganglia.servers=192.168.1.187:8649    #当有多个 ganglia 监控系统时,以逗号分隔
datanode.sink.ganglia.servers=192.168.1.187:8649    #都指定 ganglia 服务器
resourcemanager.sink.ganglia.servers=192.168.1.187:8649
nodemanager.sink.ganglia.servers=192.168.1.187:8649
mrappmaster.sink.ganglia.servers=192.168.1.187:8649
jobhistoryserver.sink.ganglia.servers=192.168.1.187:8649

修改 hadoop-metrics2-hbase.properties 文件,在行末添加如下配置:

*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31 
*.sink.ganglia.period=10
hbase.sink.ganglia.period=10 
hbase.sink.ganglia.servers=192.168.1.187:8649

完了分发 hadoop 和 hbase 的配置文件,到所有的机器上,然后重启集群

(六)访问 http://192.168.1.187:80/ganglia 查看监控图

如何监控你的 Hadoop+Hbase 集群?

如何监控你的 Hadoop+Hbase 集群?

如何监控你的 Hadoop+Hbase 集群?

yarn 监控

如何监控你的 Hadoop+Hbase 集群?

hbase 的监控

如何监控你的 Hadoop+Hbase 集群?

至此,我们的监控系统就建立起来了,需要注意的是,当监控上 hadoop 的相关的指标时,rrds 库的体积,膨胀比较大,所以这个库存的盘一定要大一点,或者在 gmetad 里面开启 gzip 压缩,否则把系统盘撑爆了,其他的程序有可能也会受到影响。

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-03/129534.htm

前言

监控 Hadoop 的框架有不少,如 CDH 的 CM 组件和 Ambari 都可以监控他们自己的 hadoop,但是它不能监控 apache 的 hadoop,如果你是使用原生的 Apache Hadoop,那么也没关系,原生的 Hadoop 天生就提供了非常详细的对接 Ganglia 的 jmx 接口,里面包含了各个核心组件 metrics 获取功能,这一点你可以查看 hadoop 和 hbase 包括 spark 的 conf 下面的 metrics 文件里面配置,就能得到验证。

(一)Ganglia 是什么?

Ganglia 是 UC Berkeley 发起的一个开源监视项目,设计用于测量数以千计的节点。每台计算机都运行一个收集和发送度量数据(如处理器速度、内存使用量等)的名为 gmond 的守护进程。它将从操作系统和指定主机中收集。接收所有度量数据的主机可以显示这些数据并且可以将这些数据的精简表单传递到层次结构中。正因为有这种层次结构模式,才使得 Ganglia 可以实现良好的扩展。gmond 带来的系统负载非常少,这使得它成为在集群中各台计算机上运行的一段代码,而不会影响用户性能。

(二)Ganglia 的主要组件

1,gmond(Ganglia Monitioring Daemon):

gmond 是 ganglia 监控的基于多线程模式的守护进程,它需要安装运行在每个你想要监控的机器上,安装非常简单,你不需要有一个通用的 NFS 系统或者安装一个数据库后端存储,或者安装指定一个账户,也不需要维护一个繁琐的配置文件。

gmond 有 4 个主要的职责:

A:监控主机状态变化

B:发现或发布相关变化

C:监控其他的所有的 ganglia 节点通过一个单播(unicast)或者多播(multicast)通道模式

D:答复集群转态通过一个 XML 描述的信息

2,gmetad(Ganglia Meta Daemon)

gmetad 是 ganglia 的元数据守护进程,通常只需要一个监控集群只需要一个元数据守护进程即可,当然如果你想实现高可用的数据冗余,你也可以配置多个,gmetad 主要是收集汇聚解析从各个 gmond 进程汇报发送过来的信息,并将其保存至 rrd 数据库里,供前端查询展示所需。

3,ganglia-web(Ganglia PHP Web Frontend)

ganglia 的前端展示框架,负责以图形化的方式,展示集群的一些 metics,并且支持分钟,小时,日,月,年,级别的汇总展示,虽然页面丑陋了点,但不不算华而不实,主要是将 rrd 里面的 XML 的数据,解析为静态的 HTML 网页,方便管理员查询集群的 cpu,内存,磁盘,网络,等一些自定义的 metrics 的某个时间段的负载展现图

(三)Ganglia 的架构拓扑

如何监控你的 Hadoop+Hbase 集群?

(四)Ganglia 的安装

假设有 3 台机器 CentOS6.5 的系统,分别如下:

192.168.1.187  hadoop hbase  gmetad  gmond ganglia-web

192.168.1.186  hadoop hbase  gmond

192.168.1.184  hadoop hbase  gmond

主节点上安装的组件安装 gmetad,gmond,ganglia-web

1,安装依赖组件:

yum -y install httpd-devel automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig

2,安装 ganglia 的 epel 源,每台机器上
如果是 centos7 的系统:

# yum install epel-release 
# yum install ganglia-web ganglia-gmetad ganglia-gmond 或者直接 yum install -y ganglia*

如果是 centos6 的系统:

sudo rpm -Uvh http://dl.Fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
yum install -y ganglia*

如何监控你的 Hadoop+Hbase 集群?

下面关于 Hadoop 的文章您也可能喜欢,不妨看看:

Ubuntu14.04 下 Hadoop2.4.1 单机 / 伪分布式安装配置教程  http://www.linuxidc.com/Linux/2015-02/113487.htm

CentOS 安装和配置 Hadoop2.2.0  http://www.linuxidc.com/Linux/2014-01/94685.htm

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

3,配置 ganglia
主节点上,需要配置三个东西:
A : /etc/ganglia/gmetad.conf  只需要配置 2 个核心选项即可

data_source “hadoop” 192.168.1.187 192.168.1.186 192.168.1.184  // 使用单播的方式,加入所有要监控的机器 ip,默认端口是 8649
case_sensitive_hostnames 1  // 是否忽略大小写,1 代表不忽略,如果你的机器名里面含有大写的字母,一定要配置 1,否则 ganglia 的前端图形就不能正确的读取 rrds 里面的每个机器的数据

B : /etc/ganglia/gmond.conf

cluster {
  name = “hadoop” #配置的名字与 gmetad 里面的需要一致
  owner = “unspecified”
  latlong = “unspecified”
  url = “unspecified”
}

udp_send_channel {
  #mcast_join = 239.2.11.71 #注释掉默认的多播地址
  host = 192.168.1.187  # 使用单播模式,发送消息
  port = 8649
  ttl = 1
}

udp_recv_channel {
  #mcast_join = 239.2.11.71
  port = 8649
  bind = 192.168.1.187 #主节点的这个配置需要加上,用来接受其他机器上的传输过来的数据,特别注意从节点上的这项配置是
  retry_bind = true
}

C : /etc/httpd/conf.d/ganglia.conf

<Location /ganglia>
  Order deny,allow
  Allow from all #允许所有的机器访问
  #Deny from all
  #Allow from 127.0.0.1
 # Allow from ::1
  # Allow from .example.com
</Location>

4,从节点只要安装 gmond 组件即可

yum install -y ganglia-gmond

然后配置 gmond.conf

cluster {
  name = “hadoop” #配置的名字与 gmetad 里面的需要一致
  owner = “unspecified”
  latlong = “unspecified”
  url = “unspecified”
}

udp_send_channel {
  #mcast_join = 239.2.11.71 #注释掉默认的多播地址
  host = 192.168.1.187  # 使用单播模式,发送消息
  port = 8649
  ttl = 1
}

udp_recv_channel {
  #mcast_join = 239.2.11.71
  port = 8649
  #bind = 192.168.1.187  仅仅安装 gmond 的节点上,不需要这项配置,加上会报错
  retry_bind = true
}

5,如何改变 rrd 存储路径:
最好的办法,就是使用软连接,直接改 gmetad 里面的配置有时候可能不生效

默认的存储路径在 /var/lib/ganglia/rrds/
你可以在这个目录,建一个软连接,改变此库的存储路径:

在 /var/lib/ganglia/rrds 新建软连接,第一个参数是新路径,第二个参数是默认路径

sudo ln -s /ROOT/server/rrds  /var/lib/ganglia/rrds

改变 rrds 的 tools 的默认路径:
http://stackoverflow.com/questions/26619473/how-to-change-the-storage-path-from-rrdtool-on-the-ganglia
需要注意改变后的路径的权限和用户赋值

mkdir -p /some/other/place/
chown -R ganglia:ganglia /some/other/place/
chmod -R 777 /some/other/place/

5,如何卸载组件?

sudo yum remove -y  ganglia-web ganglia-gmetad

主节点启动

sudo service gmetad start
sudo service gmond start
sudo service httpd start

从节点

sudo service gmond start

出现错误后,可以查看系统 log 的日志
sudo tail -f /var/log/messages
大部分错误,在这里都能看到提示

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-03/129534p2.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计9331字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中