ganglia集群版搭建(支持hadoop和spark)

spark源码解读系列环境:spark-1.5.2、hadoop-2.6.0、scala-2.10.4,ganglia-3.6.1

系统:ubuntu 14.04

1.理解

1.1 ganglia的概述

Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要是用来监控系统性能,如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。

ganglia是一个集群监控工具,hadoop和spark已经支持

ganglia有论文,“The ganglia distributed monitoring system:

design, implementation, and experience”。

1.2 Ganglia architecture:

ganglia集群版搭建(支持hadoop和spark)

1.3 集群配置

1.3.1 准备

需要先配置apache2和php

安装 Apache2:

sudo apt-get install apache2

1

安装PHP模块:

sudo apt-get install php5

1

其他模块安装:

sudo apt-get install libapache2-mod-php5

sudo apt-get install libapache2-mod-auth-mysql

1

2

具体请参考【5】或者搜索,网上有很多

1.3.2 安装ganglia单节点

打开终端,运行以下命令:

sudo apt-get install ganglia-monitor rrdtool gmetad ganglia-webfrontend

1

在安装过程中,你应该会看到安装后与apache2服务器重启选择,直接 Yes,然后按Enter键。

需要复制 Ganglia webfrontend Apache 配置,使用下面的命令来正确的位置:

sudo cp /etc/ganglia-webfrontend/apache.conf /etc/apache2/sites-enabled/ganglia.conf

1

需要重启服务:

sudo /etc/init.d/ganglia-monitor start

sudo /etc/init.d/gmetad start

sudo /etc/init.d/apache2 restart

1

2

3

现在你可以使用以下命令访问gnglia webinterface:

http://serverip/ganglia/

1

可以参考【6】

1.3.3 安装ganglia集群

主节点:Mcnode7

客户端:Master Mcnode1 Mcnode2 Mcnode3 Mcnode4 Mcnode5 Mcnode6 Mcnode7

主节点(一个)

现在需要使用以下命令来编辑 Ganglia 元守护程序的配置文件:

sudo vi /etc/ganglia/gmetad.conf

1

更改如下:

data_source "Spark" 10 Mcnode7:8649

1

通过以上列出机器服务的数据源,IP:端口或服务器名称:端口。如果未指定端口号8649(默认gmond端口)。

case_sensitive_hostnames 0

1

设置为1,则不会将hostname中大写变成小写

需要重启服务:

sudo /etc/init.d/ganglia-monitor restart

sudo /etc/init.d/gmetad start

sudo /etc/init.d/apache2 restart

1

2

3

现在你可以使用以下命令访问ganglia webinterface:

http://192.168.1.50/ganglia/

1

客户端(8个)

(1) ganglia 客户端安装

你需要安装以下所有服务器要监视客户端包

sudo apt-get install ganglia-monitor

1

(2)客户端配置:

使用了单播模式,需要使用下面的命令编辑主节点的配置文件:

sudo vi /etc/ganglia/gmond.conf

1

更改如下:(—-注释为改动)

/* If a cluster attribute is specified, then all gmond hosts are wrapped inside

* of a <CLUSTER> tag. If you do not specify a cluster tag, then all <HOSTS> will

* NOT be wrapped inside of a <CLUSTER> tag. */

cluster {

name = "Spark" ------集群名称

owner = "unspecified"

latlong = "unspecified"

url = "unspecified"

}

/* The host section describes attributes of the host, like the location */

host {

location = "unspecified"

}

/* Feel free to specify as many udp_send_channels as you like. Gmond

used to only support having a single channel */

udp_send_channel {

#mcast_join = 239.2.11.71 ------注释掉组播

host = Mcnode7 ------发送给安装gmetad的机器

port = 8649

ttl = 1

}

/* You can specify as many udp_recv_channels as you like as well. */

udp_recv_channel {

#mcast_join = 239.2.11.71 ------注释掉组播

port = 8649

#bind = 239.2.11.71 ------注释掉

}

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

保存并关闭文件。

(3)客户端生效

重启 ganglia monitor 服务

sudo /etc/init.d/ganglia-monitor restart

1

具体参考【6】【7】

效果:

ganglia集群版搭建(支持hadoop和spark)

1.3.4 配置hadoop metrics设置,连接ganglia集群

修改Hadoop的配置文件hadoop/etc/hadoop/hadoop-metrics.properties(适用于Ganglia老版本)

dfs.class=org.apache.hadoop.metrics.ganglia.GangliaContext31

dfs.period=10

dfs.servers=192.168.1.50:8649

mapred.class=org.apache.hadoop.metrics.ganglia.GangliaContext31

mapred.period=10

mapred.servers=192.168.1.50:8649

jvm.class=org.apache.hadoop.metrics.ganglia.GangliaContext31

jvm.period=10

jvm.servers=192.168.1.50:8649

rpc.class=org.apache.hadoop.metrics.ganglia.GangliaContext31

rpc.period=10

rpc.servers=192.168.1.50:8649

ugi.class=org.apache.hadoop.metrics.ganglia.GangliaContext31

ugi.period=10

ugi.servers=192.168.1.50:8649

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

(2) 修改Hadoop的配置文件hadoop/etc/hadoop/hadoop-metrics2.properties(适用于Ganglia新版本)

*.sink.file.class=org.apache.hadoop.metrics2.sink.FileSink

*.period=10

*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31

*.sink.ganglia.period=10

*.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.50:8649

datanode.sink.ganglia.servers=192.168.1.50:8649

resourcemanager.sink.ganglia.servers=192.168.1.50:8649

nodemanager.sink.ganglia.servers=192.168.1.50:8649

maptask.sink.ganglia.servers=192.168.1.50:8649

reducetask.sink.ganglia.servers=192.168.1.50:8649

1

2

3

4

5

6

7

8

9

10

11

12

13

14

所有的servers都修改为安装为gmetad的机器IP(Spark-Master),保存完以后将配置文件分发到各个Slave节点的${HADOOP_HOME}/etc/hadoop目录下,重启Hadoop集群即可。

效果:

dfs.datanode.BlocksRead:

ganglia集群版搭建(支持hadoop和spark)

ganglia集群版搭建(支持hadoop和spark)

参考见【8】

1.3.5 配置spark metrics设置,连接ganglia集群

(1)配置环境

由于license问题,spark的bin里面没有自带ganglia,需要自己弄

方法1: 编译的时候自己加上

mvn -DskipTests -Pspark-ganglia-lgpl -Phadoop-2.6 -Dhadoop.version=2.6.0 clean package

方法2:运行的时候用jar形式加入 (参考【11】)

–jars lib/spark-ganglia-lgpl_2.10-x.x.x.jar …

(2)设置spark metrics

自行部署spark集群,编辑$SPARK_HOME/conf/metrics.properties文件(没有可以拷贝metrics.properties.template),添加以下内容:

复制代码

*.sink.ganglia.class=org.apache.spark.metrics.sink.GangliaSink

*.sink.ganglia.host=Mcnode7 --host(可以是ip)

*.sink.ganglia.port=8649

*.sink.ganglia.period=10

*.sink.ganglia.unit=seconds

*.sink.ganglia.ttl=1

*.sink.ganglia.mode=unicast --单播

*.sink.ganglia.name=Spark --名字

*.sink.console.class=org.apache.spark.metrics.sink.ConsoleSink

*.sink.console.period=10

*.sink.console.unit=seconds

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

更改后scp到其它spark节点,启动spark集群。

(3) 启动服务进行监控

启动ganglia的gmetad,gmond以及httpd服务:

service gmond start

service gmetad start

service httpd start

1

2

3

参考见【9】

(3) 效果

常用的监控指标有:

DAGScheduler.job.allJobs

driver.BlockManager.memory.maxMem_MB

master.works

1

2

3

spark集群的监控:

ganglia集群版搭建(支持hadoop和spark)

ganglia集群版搭建(支持hadoop和spark)

单个节点的监控:

ganglia集群版搭建(支持hadoop和spark)

控制台输出时间信息:

ganglia集群版搭建(支持hadoop和spark)

相关推荐