ganglia的安装部署对spark集群监控

1.ganglia简介

 Ganglia 是 UC Berkeley 发起的一个开源监视项目,可以对分布式集群的所有计算资源进行监控。

ganglia由三个组件构成

  • gmond :(client)是一个守护进程,他运行在每一个需要监测的节点上,收集监测统计,发送和接受在同一个组播或单播通道上的统计信息
    如果他是一个发送者(mute=no)他会收集基本指标,比如系统负载(load_one),CPU利用率。他同时也会发送用户通过添加C/Python模块来自定义的指标。
    如果他是一个接收者(deaf=no)他会聚合所有从别的主机上发来的指标,并把它们都保存在内存缓冲区中。
  • gmetad:(只需server端)也是一个守护进程,他定期检查gmonds,从那里拉取数据,并将他们的指标存储在RRD存储引擎中。他可以查询多个集群并聚合指标。他也被用于生成用户界面的web前端。
  • ganglia-web :(只需server端)顾名思义,他应该安装在有gmetad运行的机器上,以便读取RRD文件。 集群是主机和度量数据的逻辑分组,比如数据库服务器,网页服务器,生产,测试,QA等,他们都是完全分开的,你需要为每个集群运行单独的gmond实例。

 Ganglia的收集数据工作可以工作在单播(unicast)或多播(multicast)模式下,默认为多播模式。(一般使用单播)

  单播:发送自己收集到的监控数据到特定的一台或几台机器上,可以跨网段。

  多播:发送自己收集到的监控数据到同一网段内所有的机器上,同时收集同一网段内的所有机器发送过来的监控数据。因为是以广播包的形式发送,因此需要同一网段内。但同一网段内,又可以定义不同的发送通道。

2.安装

1. server端

安装
除了ganglia的三个组件外还需要web服务。

 yum -y install rrdtool ganglia-gmetad ganglia-gmond ganglia-web httpd php

配置
/etc/ganglia/gmond.conf文件

cluster {
  name = "spark cluster" //改成自己集群名
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
}
udp_send_channel {
 # mcast_join = 239.2.11.71 //注释掉多播
  host = master             //master为主机名    
  port = 8649
  ttl = 1
}
udp_recv_channel {
 # mcast_join = 239.2.11.71 //注释mcast_join和bind
  port = 8649
 # bind = 239.2.11.71
  retry_bind = true
  # Size of the UDP buffer. If you are handling lots of metrics you really
  # should bump it up to e.g. 10MB or even higher.
  # buffer = 10485760
}

/etc/ganglia/gmetad.conf文件
name和ip要和gmond.conf中配置一样

data_source "spark cluster" master:8649

该配置文件还可以设置分组。Ganglia会把所有东西放在一个Grid里面,也就是一个网格。大的集群,不分组。但是真实的服务器集群有各种功能,每个群分管不同的事务,全放一起就太乱了。也不好识别,所以需要分组使用。

其实Ganglia的分组很简单,就是分端口,不同的组配置不同的监听端口就完事了。

data_source "spark cluster" master:8649
data_source "hadoop cluster" master:8444
gridname "MyGird"

参考:http://slaytanic.blog.51cto.com/2057708/808981

2. client端

安装
只需要gmond

 yum -y install ganglia-gmond

可用pdsh对集群节点批量安装

pdsh -w ssh:root@slave[1-40] yum -y install ganglia-gmond

配置
只需将server的gmond.conf复制到每个节点

3.启动服务

  • Server端
service gmond start
service gmetad start
service httpd start
  • Client端
service gmond start

可以使用chkconfig设置开机启动:

检查是否成功,访问web页面:http://ip/ganglia

可能会出现

You don’t have permission to access /ganglia on this server.

解决办法
修改/etc/httpd/conf.d/ganglia.conf文件


  Order deny,allow
  #Deny from all
  Allow from all
  #Allow from 127.0.0.1
  #Allow from ::1
  # Allow from .example.com

重启服务,ok

4.Spark配置

spark默认不把ganglia相关的类包含在发行包中 ,所以在官网上下载的包是不支持ganglia的,所以下载源码包 加上-Pspark-ganglia-lgpl自行编译

修改spark的metrics.propertics文件
关于metrics的介绍:https://www.iteblog.com/archives/1341.html#GangliaSink

*.sink.ganglia.class=org.apache.spark.metrics.sink.GangliaSink
*.sink.ganglia.host=master      //ganglia server ip
*.sink.ganglia.port=8649
*.sink.ganglia.period=10
*.sink.ganglia.unit=seconds
*.sink.ganglia.ttl=1
*.sink.ganglia.mode=unicast   //单播
*.sink.ganglia.name=My cluster //集群名

master.source.jvm.class=org.apache.spark.metrics.source.JvmSource
worker.source.jvm.class=org.apache.spark.metrics.source.JvmSource
driver.source.jvm.class=org.apache.spark.metrics.source.JvmSource
executor.source.jvm.class=org.apache.spark.metrics.source.JvmSource

参考链接:
安装:http://www.linuxidc.com/Linux/2012-12/76536.htm
参数配置:http://www.cnblogs.com/wukenaihe/archive/2013/03/21/2972837.html
spark监控:http://blog.csdn.net/czmacd/article/details/52957524

你可能感兴趣的:(Spark)