易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 4014|回复: 0
收起左侧

Ganglia监控Spark

[复制链接]
发表于 2017-8-31 22:11:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x

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

  由于Licene的限制,没有放到默认的build里面,如果需要使用,需要自己编译。在使用Maven编译Spark的时候,我们可以加上-Pspark-ganglia-lgpl选项来将Ganglia相关的类打包进spark-assembly-x.x.x-hadoopx.x.x.jar中,命令如下:

[iteblog@iteblog spark]$ ./make-distribution.sh --tgz -Phadoop-2.4 -Pyarn -DskipTests   E. A. ?# c' q9 m; Q; \+ u+ K
  -Dhadoop.version=2.4.0 -Pspark-ganglia-lgpl
* O# q0 t$ t4 c/ O/ g* c) B
+ |4 ~4 Z2 i& G' B# T5 Y- Y如果你使用的是SBT来编译,可以加上SPARK_GANGLIA_LGPL=true,完整命令如下:, J5 c0 g& v( a  k2 q
[iteblog@iteblog spark]$ SPARK_HADOOP_VERSION=2.4.0 SPARK_YARN=true0 U( N  \# c  J2 U+ M- O

  SPARK_GANGLIA_LGPL=true sbt/sbt assembly

 或者你在提交作业的时候,单独将Ganglia相关依赖加入到--jars选项中:
[size=1em][size=1em]--jars lib/spark-ganglia-lgpl_2.10-x.x.x.jar  ...1 n  K0 S! l  `/ u% J- ^4 M9 p
[size=1em]) v9 s& Y: H' m
& ~* J9 b/ C' h" C" [) ?
6 n8 W0 U$ ~2 D: C: S7 l

 依赖弄好之后,我们需要在$SPARK_HOME/conf/metrics.properties文件中加入一下配置:

4 W* Z- ?! f' a, o" w* o1 K
/ r  w/ X3 Z% h/ y, A1 `8 _

  依赖弄好之后,我们需要在$SPARK_HOME/conf/metrics.properties文件中加入一下配置:

*.sink.ganglia.class=org.apache.spark.metrics.sink.GangliaSink
*.sink.ganglia.host=www.iteblog.com
*.sink.ganglia.port=8080 *.sink.ganglia.period=10
*.sink.ganglia.unit=seconds *.sink.ganglia.ttl=1
*.sink.ganglia.mode=multicast
  l$ L; u% ]. E

  O- _6 w7 Q+ F$ N- |7 j

host和port这个就是你Ganglia监控的地址,其中mode支持'unicast'(单播) 和 'multicast'(多播)两种模式。

如果你出现类似下面的异常信息:
15/06/11 23:35:14 ERROR MetricsSystem: Sink class org.apache.spark.metrics.sink.GangliaSink cannot be instantialized
java.lang.ClassNotFoundException: org.apache.spark.metrics.sink.GangliaSink         
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)         
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)         
at java.security.AccessController.doPrivileged(Native Method)         
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)         

% W* E' \3 m* f+ j
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)         
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)         
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)         
at java.lang.Class.forName0(Native Method)         
at java.lang.Class.forName(Class.java:191)         
at org.apache.spark.metrics.MetricsSystem$$anonfun$registerSinks$1.apply(MetricsSystem.scala:138)         
at org.apache.spark.metrics.MetricsSystem$$anonfun$registerSinks$1.apply(MetricsSystem.scala:134)         
at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:98)         
at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:98)         
at scala.collection.mutable.HashTable$class.foreachEntry(HashTable.scala:226)         
at scala.collection.mutable.HashMap.foreachEntry(HashMap.scala:39)         
at scala.collection.mutable.HashMap.foreach(HashMap.scala:98)         
at org.apache.spark.metrics.MetricsSystem.registerSinks(MetricsSystem.scala:134)         

( K; S& j; Y7 n, ^! a, L7 f6 J
at org.apache.spark.metrics.MetricsSystem.<init>(MetricsSystem.scala:84)         
at org.apache.spark.metrics.MetricsSystem$.createMetricsSystem(MetricsSystem.scala:171)         
at org.apache.spark.deploy.worker.Worker.<init>(Worker.scala:106)         
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)         
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)         
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)         
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)         
at akka.util.Reflect$.instantiate(Reflect.scala:65)         
at akka.actor.Props.newActor(Props.scala:337)         
& w, ]4 z5 \  z% ?
at akka.actor.ActorCell.newActor(ActorCell.scala:534)         
at akka.actor.ActorCell.create(ActorCell.scala:560)         
at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:425)         
at akka.actor.ActorCell.systemInvoke(ActorCell.scala:447)         
at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:262)         
at akka.dispatch.Mailbox.run(Mailbox.scala:218)         
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:386)         
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)         
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)         
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)         
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)   
 请查看你的Spark包是否将org.apache.spark.metrics.sink.GangliaSink打包进去了;或者仔细看下你的配置文件,请尽量拷贝我这里提供的。    
配置弄好之后,启动你的Spark集群,然后去https://www.iteblog.com/ganglia-web监控页面查看是否弄好了,类似下面的信息:   如果想及时了解Spark、Hadoop或者Hbase相关的文章,欢迎关注微信公共帐号:iteblog_hadoop   
除了上图的master.apps 和master.workers 监控,Ganglia里面还显示如下的信息:
{     
    "version": "3.0.0",      
"gauges": {         
           "jvm.PS-MarkSweep.count": {      
                "value": 0        
             },  
        "jvm.PS-MarkSweep.time": {  
               "value": 0         },  
        "jvm.PS-Scavenge.c   ount": {
               "value": 186         },
         "jvm.PS-Scavenge.time": {
               "value": 375         },
         "jvm.heap.committed": {
             "value": 536412160         },
          "jvm.heap.init": {
              "value": 536870912         },
         "jvm.heap.max": {
              "value": 536412160         },
          "jvm.heap.usage": {
               "value": 0.315636349481712
         },
          "jvm.heap.used": {
               "value": 169311176
         },
         "jvm.non-heap.committed": {
              "value": 37879808         },
          "jvm.non-heap.init": {
              "value": 24313856
         },
          "jvm.non-heap.max": {
            "value": 184549376
         },
          "jvm.non-heap.usage": {
             "value": 0.19970542734319513
         },
          "jvm.non-heap.used": {
             "value": 36855512
$ v4 [& z+ N- U/ x3 B
        },
         "jvm.pools.Code-Cache.usage": {
             "value": 0.031689961751302086
         },
          "jvm.pools.PS-Eden-Space.usage": {
             "value": 0.9052384254331968
         },
         "jvm.pools.PS-Old-Gen.usage": {
            "value": 0.02212668565200476
        },
         "jvm.pools.PS-Perm-Gen.usage": {
            "value": 0.26271122694015503
         },
         "jvm.pools.PS-Survivor-Space.usage": {
             "value": 0.5714285714285714
         },
         "jvm.total.committed": {
            "value": 574291968
         },
          "jvm.total.init": {
            "value": 561184768
        },
         "jvm.total.max": {
            "value": 720961536
         },
          "jvm.total.used": {
             "value": 206166688
         },
          "master.apps": {
            "value": 0
         },
         "master.waitingApps": {
             "value": 0
         },
         "master.workers": {
            "value": 0
         }
    },
     "counters": { },
      "histograms": { },
     "meters": { },
      "timers": { }

0 Q  o# Z6 K. `8 f1 Y+ e8 L
}

) e) S+ o; ^  y$ J! q) L
7 v' ]+ m- [4 L1 l) q  I" r& x
/ o/ F" |7 x3 w7 [  {$ C# N, Q
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 23:52 , Processed in 0.055370 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

快速回复 返回顶部 返回列表