17.1 Chukwa简介
Hadoop的MapReduce最初的主要用于日志处理。但是使用MapReduce处理日志是一件很烦琐的事情,因为集群中机器的日志在不断地增加,会生成大量小文件,而MapReduce其实只有在处理少量的大文件数据时才会产生最好的效用。
Chukwa作为Hadoop的子项目弥补了这一缺陷。同时它也是一个高可靠性的应用,能通过扩展处理大量的客户端请求,还能汇聚多路客户端的数据流。Chukwa也非常适合商业应用,特别是在云环境上,并且它已经成功地使用在多个场景中。
Chukwa的开发主要面向四类群体:Hadoop使用者、集群运营人员、集群的管理者、Hadoop开发者。
Hadoop使用者:他们一般想了解作业运行的状态,以及还有多少资源可以用于新的作业,因此他们需要得到的是作业日志和作业输出。
集群运营人员:他们需要了解硬件故障、异常状态、资源的消耗情况。
集群的管理者:他们需要了解在什么样的成本下能够提供什么样的服务,这就意味着他们需要一个工具去分析集群系统或单个用户过去的使用状况,并利用分析出的信息预测将来的需求。他们也要了解系统的一些特征值,如一个任务的平均等待时间。Hadoop开发者:Hadoop的开发人员通常需要了解系统的运行情况,Hadoop的运行瓶颈、失效模式等。
Chukwa作为Hadoop软件家族中的一员,依赖于其他Hadoop的子项目使用,比如,以HDFS作为存储层,以MapReduce作为计算模型,以Pig作为高层的数据处理语言。Chukwa系统的最大开销被限制在整个集群系统可用资源的5%以内。
Chukwa是一个分布式系统,它采用的是流水式数据处理方式和模块化结构的收集系统,在每一个模块中有一个简单规范的接口,这有利于将来更新,而不需要打破现行的编码结构。流水式模式就是利用其分布在各个节点客户端的采集器收集各个节点被监控的信息,然后以块的形式通过HTTP Post汇集到收集器,由它处理后转储到HDFS中。之后这些数据由Archiving处理(去除重复数据和合并数据)提纯,再由分离解析器利用MapReduce将这些数据转换成结构化记录,并存储到数据库中,HICC(Hadoop Infrastructure Care Center)通过调用数据库里数据,向用户展示可视化后的系统状态。
图17-1展示了Chukwa流水式数据处理结构。
下面的章节将从Chukwa架构出发,介绍系统中的各个模块,并且讲解Chukwa如何实现系统的可靠性。在对Chukwa整个系统框架及原理有所了解后,大家可以根据“Chukwa集群搭建”一节的介绍,搭建一个自己的Chukwa系统来监控Hadoop集群,这样就可以与其他监控系统有一个比较。希望大家可以结合自己实际使用感受,进一步了解Chukwa监控系统的特点。
图 17-1 Chukwa流水式数据处理结构