Spark的Metrics系统允许用户把Spark metrics信息报告到Ganglia,gmond服务收集metrics信息,最后统一汇总到gmetad并通过web界面呈现。主要着重于如何配置ganglia以及spark的metrics,至于如何编译spark支持ganglia以及ganglia的安装另行详述。
spark默认不把ganglia相关的类包含在发行包中 ,所以在官网上下载的包是不支持ganglia的,所以我们要加上-Pspark-ganglia-lgpl自行编译,可以看到在最后打包出来的spark-assembly-xxxx.jar包中包含了ganglia相关的类:
编译过程参考:http://blog.csdn.net/czmacd/article/details/52957634
自行安装ganglia相关服务:gmetad,gmond以及ganglia-web。以配置ganglia单播为例配置gmetad,gmond
gmond.conf配置文件位于/etc/ganglia/gmond.conf,编辑配置文件3个地方:
cluster {
name = "unspecified" #集群名称
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
udp_send_channel {
#mcast_join = 239.2.11.71 #因为配置单播,所以去掉多播的配置
host = spmaster #spmaster为主节点主机名
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
# buffer = 10485760
}
data_source "unspecified" spmaster:8649 #unspecified要与gmond中配置的一致
其它客户端,只需把/etc/ganglia/gmond.conf配置文件scp到各个节点即可。
自行部署spark集群,编辑$SPARK_HOME/conf/metrics.properties文件(没有可以拷贝metrics.properties.template),添加以下内容:
*.sink.ganglia.class=org.apache.spark.metrics.sink.GangliaSink
*.sink.ganglia.host=spmaster
*.sink.ganglia.port=8649
*.sink.ganglia.period=10
*.sink.ganglia.unit=seconds
*.sink.ganglia.ttl=1
*.sink.ganglia.mode=unicast
*.sink.ganglia.name=unspecified
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
更改后scp到其它spark节点,启动spark集群。
启动ganglia的gmetad,gmond以及httpd服务:
service gmond start
service gmetad start
service httpd start
通过浏览器访问ganglia-web(http://spmaster/ganglia-web/)即可以看到spark相关的监控:
ganglia里面的图表实在太多了,需要些时间去熟悉、挖掘。
https://taoistwar.gitbooks.io/spark-operationand-maintenance-management/content/spark_monitor/spark_metrics.html
http://ifeve.com/spark-monitor/
http://www.aiweibang.com/yuedu/110102433.html
https://www.iteblog.com/archives/1347