众所周知, hadoop 是运行在分布式的集群环境下,同是是许多用户或者组共享的集群,因此任意时刻都会有很多用户来访问 NN 或者 JT ,对分布式文件系统或者 mapreduce 进行操作,使用集群下的机器来完成他们的存储和计算工作。当使用 hadoop 的用户越来越多时,就会使得集群运维人员很难客观去分析集群当前状况和趋势。比如 NN 的内存会不会在某天不知晓的情况下发生内存溢出,因此就需要用数据来得出 hadoop 当前的运行状况。
Chukwa 就是利用了集群中的几个进程输出的日志,如 NN,DN,JT,TT 等进程都会有 log 信息,因为这些进程的程序里面都调用 log4j 提供的接口来记录日志,而到底日志的物理存储是由 log4j.properties 的配置文件来配置的,可以写在本地文件,也可以写到数据库。 Chukwa 就是来控制这些日志的记录,由 chukwa 程序来接替这部分工作,完成日志记录和采集工作。 Chukwa 由以下几个组件组成: agent 收集各个进程的日志,并将收集的日志发送给 collector 。 Collector 收集 agent 发送为的数据,同时将这些数据保存到 hdfs 上, MR job 利用 mapreduce 来分析这些数据。 DumpTool 将结果下载保存到 mysql 数据库。 HICC 将数据展现出来。更多信息: http://incubator.apache.org/chukwa/
Ganglia 则更偏向于操作系统低层一点的监控,主要是收集集群中的各个机器的 CPU 使用情况,内存使用情况,磁盘 I0, 网络 IO ,磁盘容量等,更像是 windows 的任务管理器,只不过它是管理分布集群机器。类似的,它也由以下组件组成:数据采集组件,每隔一段时间采集一次数据,然后将数据发送给收集器,收集器收集好数据,再将数据保存到数据库,最后一个叫做 rrdtool 通过图形化来展现数据。更值的一提的是, ganglia 更加通用性,除了收集固定的机器性性外,它还提供了相关插件,可以插入到其他进程,如 JAVA 程序,然后可以收集起这些进程的相关信息。
更多信息: http://ganglia.info/
http://www.javabloger.com/article/j2ee-linux-ganglia-rrdtool-java-mysql-1.html
对于深入了解当前平台的状态以及集群中机器的运行情况, chukwa 和 ganglia 无疑是不错的工具,可以用来去得到相关的准确数据,用来知道当前的运行状态,为未来做决策,推断出当前的瓶颈,以及优化相关的应用程序等。
相关文章
- 02-09NAND Flash与eMMC的区别
- 02-09golang nil切片与空切片的区别
- 02-09AtomicLong与LongAdder的区别
- 02-09matplotlib.pyplot.gca().set_xlim(初始值,末值) 与 matplotlib.pyplot.xticks()的区别
- 02-09函数与方法的区别
- 02-09迭代器--》生成器--》协程的关系与区别
- 02-09python 同步与异步的性能区别以及遇到IO阻塞时会自动切换任务
- 02-09Spring web 与 Spring MVC 的区别
- 02-09元组与列表的区别
- 02-09python 之 并发编程(守护线程与守护进程的区别、线程互斥锁、死锁现象与递归锁、信号量、GIL全局解释器锁)