Apache 的开源项目 hadoop, 作为一个分布式存储和计算系统,已经被业界广泛应用。很多大型企业都有了各自基于 hadoop 的应用和相关扩展。当 1000+ 以上个节点的 hadoop 集群变得常见时,集群自身的相关信息如何收集和分析呢?针对这个问题, Apache 同样提出了相应的解决方案,那就是 chukwa。
概述
chukwa 的官方网站是这样描述自己的: chukwa 是一个开源的用于监控大型分布式系统的数据收集系统。这是构建在 hadoop 的 hdfs 和 map/reduce 框架之上的,继承了 hadoop 的可伸缩性和鲁棒性。Chukwa 还包含了一个强大和灵活的工具集,可用于展示、监控和分析已收集的数据。
在一些网站上,甚至声称 chukwa 是一个“日志处理/分析的full stack solution”。
说了这么多,你心动了吗?
我们先来看看 chukwa 是什么样子的:
chukwa 不是什么
1. chukwa 不是一个单机系统. 在单个节点部署一个 chukwa 系统,基本没有什么用处. chukwa 是一个构建在 hadoop 基础上的分布式日志处理系统.换言之,在搭建 chukwa 环境之前,你需要先构建一个 hadoop 环境,然后在 hadoop 的基础上构建 chukwa 环境,这个关系也可以从稍后的 chukwa 架构图上看出来.这也是因为 chukwa 的假设是要处理的数据量是在 T 级别的.
2. chukwa 不是一个实时错误监控系统.在解决这个问题方面, ganglia,nagios 等等系统已经做得很好了,这些系统对数据的敏感性都可以达到秒级. chukwa 分析的是数据是分钟级别的,它认为像集群的整体 cpu 使用率这样的数据,延迟几分钟拿到,不是什么问题.
3. chukwa 不是一个封闭的系统.虽然 chukwa 自带了许多针对 hadoop 集群的分析项,但是这并不是说它只能监控和分析 hadoop.chukwa 提供了一个对大数据量日志类数据采集、存储、分析和展示的全套解决方案和框架,在这类数据生命周期的各个阶段, chukwa 都提供了近乎完美的解决方案,这一点也可以从它的架构中看出来.
chukwa 是什么
上一节说了很多 chukwa 不是什么,下面来看下 chukwa 具体是干什么的一个系统呢?
具体而言, chukwa 致力于以下几个方面的工作:
1. 总体而言, chukwa 可以用于监控大规模(2000+ 以上的节点, 每天产生数据量在T级别) hadoop 集群的整体运行情况并对它们的日志进行分析
2. 对于集群的用户而言: chukwa 展示他们的作业已经运行了多久,占用了多少资源,还有多少资源可用,一个作业是为什么失败了,一个读写操作在哪个节点出了问题.
3. 对于集群的运维工程师而言: chukwa 展示了集群中的硬件错误,集群的性能变化,集群的资源瓶颈在哪里.
4. 对于集群的管理者而言: chukwa 展示了集群的资源消耗情况,集群的整体作业执行情况,可以用以辅助预算和集群资源协调.
5. 对于集群的开发者而言: chukwa 展示了集群中主要的性能瓶颈,经常出现的错误,从而可以着力重点解决重要问题.
基本架构
有了一个感性的认识后,我们来看下它的构架, chukwa 的整体结构图是下面这个样子的:
其中主要的部件为:
1. agents : 负责采集最原始的数据,并发送给 collectors
2. adaptor : 直接采集数据的接口和工具,一个 agent 可以管理多个 adaptor 的数据采集
3. collectors 负责收集 agents 收送来的数据,并定时写入集群中
4. map/reduce jobs 定时启动,负责把集群中的数据分类、排序、去重和合并
5. HICC 负责数据的展示
相关设计
adaptors 和 agents
在每个数据的产生端(基本上是集群中每一个节点上), chukwa 使用一个 agent 来采集它感兴趣的数据,每一类数据通过一个 adaptor 来实现, 数据的类型(DataType?)在相应的配置中指定. 默认地, chukwa 对以下常见的数据来源已经提供了相应的 adaptor : 命令行输出、log 文件和 httpSender等等. 这些 adaptor 会定期运行(比如每分钟读一次 df 的结果)或事件驱动地执行(比如 kernel 打了一条错误日志). 如果这些 adaptor 还不够用,用户也可以方便地自己实现一个 adaptor 来满足需求。
为防止数据采集端的 agent 出现故障,chukwa 的 agent 采用了所谓的 ‘watchdog’ 机制,会自动重启终止的数据采集进程,防止原始数据的丢失。
另一方面, 对于重复采集的数据, 在 chukwa 的数据处理过程中,会自动对它们进行去重. 这样,就可以对于关键的数据在多台机器上部署相同的 agent,从而实现容错的功能.
collectors
agents 采集到的数据,是存储到 hadoop 集群上的. hadoop 集群擅长于处理少量大文件,而对于大量小文件的处理则不是它的强项,针对这一点,chukwa 设计了 collector 这个角色,用于把数据先进行部分合并,再写入集群,防止大量小文件的写入。
另一方面,为防止 collector 成为性能瓶颈或成为单点,产生故障, chukwa 允许和鼓励设置多个 collector, agents 随机地从 collectors 列表中选择一个 collector 传输数据,如果一个 collector 失败或繁忙,就换下一个 collector. 从而可以实现负载的均衡,实践证明,多个 collector 的负载几乎是平均的.
demux 和 archive
放在集群上的数据,是通过 map/reduce 作业来实现数据分析的. 在 map/reduce 阶段, chukwa 提供了 demux 和 archive 任务两种内置的作业类型.
demux 作业负责对数据的分类、排序和去重. 在 agent 一节中,我们提到了数据类型(DataType?)的概念.由 collector 写入集群中的数据,都有自己的类型. demux 作业在执行过程中,通过数据类型和配置文件中指定的数据处理类,执行相应的数据分析工作,一般是把非结构化的数据结构化,抽取中其中的数据属性.由于 demux 的本质是一个 map/reduce 作业,所以我们可以根据自己的需求制定自己的 demux 作业,进行各种复杂的逻辑分析. chukwa 提供的 demux interface 可以用 java 语言来方便地扩展.
而 archive 作业则负责把同类型的数据文件合并,一方面保证了同一类的数据都在一起,便于进一步分析, 另一方面减少文件数量, 减轻 hadoop 集群的存储压力。
dbadmin
放在集群上的数据,虽然可以满足数据的长期存储和大数据量计算需求,但是不便于展示.为此, chukwa 做了两方面的努力:
1. 使用 mdl 语言,把集群上的数据抽取到 mysql 数据库中,对近一周的数据,完整保存,超过一周的数据,按数据离现在的时间长短作稀释,离现在越久的数据,所保存的数据时间间隔越长.通过 mysql 来作数据源,展示数据.
2. 使用 hbase 或类似的技术,直接把索引化的数据在存储在集群上
到 chukwa 0.4.0 版本为止, chukwa 都是用的第一种方法,但是第二种方法更优雅也更方便一些.
hicc
hicc 是 chukwa 的数据展示端的名字.在展示端, chukwa 提供了一些默认的数据展示 widget,可以使用“列表”、“曲线图”、“多曲线图”、“柱状图”、“面积图式展示一类或多类数据,给用户直观的数据趋势展示。而且,在 hicc 展示端,对不断生成的新数据和历史数据,采用 robin 策略,防止数据的不断增长增大服务器压力,并对数据在时间轴上“稀释”,可以提供长时间段的数据展示
从本质上, hicc 是用 jetty 来实现的一个 web 服务端,内部用的是 jsp 技术和 javascript 技术.各种需要展示的数据类型和页面的局都可以通过简直地拖拽方式来实现,更复杂的数据展示方式,可以使用 sql 语言组合出各种需要的数据.如果这样还不能满足需求,不用怕,动手修改它的 jsp 代码就可以了.
其它数据接口
如果对原始数据还有新的需要,用户还可以通过 map/reduce 作业或 pig 语言直接访问集群上的原始数据,以生成所需要的结果。chukwa 还提供了命令行的接口,可以直接访问到集群上数据。
默认数据支持
对于集群各节点的cpu使用率、内存使用率、硬盘使用率、集群整体的 cpu 平均使用率、集群整体的内存使用率、集群整体的存储使用率、集群文件数变化、作业数变化等等 hadoop 相关数据,从采集到展示的一整套流程, chukwa 都提供了内建的支持,只需要配置一下就可以使用.可以说是相当方便的.
可以看出,chukwa 从数据的产生、收集、存储、分析到展示的整个生命周期都提供了全面的支持。
分享到:
相关推荐
ChukwaPoster.pdf、chukwa_presentation.pdf和chukwa_presentation_cca08.pdf这三份文档可能包含了关于Chukwa的更深入的介绍,如其架构细节、工作流程、最佳实践以及与其他Hadoop组件(如MapReduce、HBase)的集成...
Apache Chukwa是一款开源的数据收集系统,专门设计用于监控大规模分布式系统的状态,尤其与Hadoop生态系统紧密集成。作为Hadoop的扩展,Chukwa利用Hadoop的分布式文件系统(HDFS)和MapReduce框架,确保了高可扩展性...
Apache Chukwa 是一个专为监控大规模分布式系统而设计的开源数据收集系统,尤其是针对Hadoop环境。Hadoop本身是一个广泛应用于大数据处理的分布式存储和计算框架,而Chukwa则是在Hadoop之上构建的,旨在解决大规模...
1. **Hadoop Ecosystem**:Chukwa是Hadoop生态的一部分,因此,理解Hadoop的基本概念,如HDFS(Hadoop Distributed File System)和MapReduce计算模型,是安装Chukwa的前提。 2. **Chukwa架构**:Chukwa主要由四个...
而Apache Chukwa作为Hadoop的扩展,专为监控大型分布式系统而设计,特别是在Hadoop集群环境中,它扮演着至关重要的角色。 Chukwa的核心功能在于数据收集、存储和分析,以确保对大规模Hadoop集群的健康状况有深入的...
### Chukwa:大规模监控系统与Hadoop的关系 在IT领域,尤其是大数据处理与分析方面,Hadoop无疑占据了举足轻重的地位。然而,随着分布式系统规模的不断扩展,其复杂性和潜在的故障模式也日益增加,这促使了对监控和...
Chukwa由多个模块组成,包括Collector(收集器)、Agent(代理)、Hadoop Integration(Hadoop集成)、Adapters(适配器)和Chukwa Data Store(数据存储)等。 1. Collector:这是Chukwa的核心组件之一,负责接收...
Chukwa采用了层次化的数据收集体系结构,主要包含四个核心组件:Adapters、Collectors、Hadoop Storage和Chukwa Agents。 - Adapters:是Chukwa系统与日志源之间的接口,负责将各种不同格式的日志数据转化为统一的...
Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括,YARN, Hcatalog, Oozie, Cassandra, Hama, Whirr, ...
《Hadoop实战(第2版)》全书一共19章:第1~2章首先对Hadoop进行了全方位的宏观介绍,然后介绍了Hadoop在三大主流操作系统平台上的安装与配置方法;第3~6章分别详细讲解了MapReduce计算模型、MapReduce的工作机制、...
Hadoop生态系统包括Hadoop核心、Hadoop Common、分布式文件系统HDFS、MapReduce框架、并行数据分析语言Pig、列存储NoSQL数据库HBase、分布式协调器Zookeeper、数据仓库Hive以及Hadoop日志分析工具Chukwa等组件。...
Hadoop包括介绍:Hadoop、Zookeeper、Avro、Chukwa、Ambari、Whirr、Bigtop、HCatalog、Hue、HBase、Pig、Sqoop、Cassandra、Hama、Flume、Giraph、Oozie、Crunch、Hive、Mahout。
《Hadoop权威指南》是Tom White所著,对Hadoop进行了全面的介绍,是学习和使用Hadoop的权威指南。该书分为多个部分,涵盖Hadoop生态系统中的核心组件,如HDFS、MapReduce、YARN、HBase、ZooKeeper、Avro、Chukwa、...
系统地讲授了Hadoop的核心技术和扩展技术,包括: HDFS、MapReduce、HBase、Hive、Pig、Cassandra、Chukwa和ZooKeeper等,并给出了3个完整的Hadoop云计算综合应用实例,最后介绍了保障Hadoop平台可靠性的方法。...
内容全面,对hadoop整个技术体系进行了全面的讲解,不仅包括hdfs和mapreduce这两大核心内容,而且还包括hive、hbase、mahout、pig、zookeeper、avro、chukwa等与hadoop相关的子项目的内容。实战性强,为各个知识点...
二、Hadoop云计算平台组件介绍 1. Hadoop:Hadoop是Apache软件基金会旗下的开源分布式计算框架,主要用于存储和处理大规模数据。 2. HBase:HBase是基于Hadoop的分布式NoSQL数据库,提供了高性能的数据存储和检索...
- Chukwa:它是基于Hadoop的开源数据收集系统,用于监控大型分布式系统的健康状态。 - Pig:是一种高级的脚本语言,用于编写MapReduce任务,适用于数据流和数据转换的场景。 - Hive:为数据仓库设计,提供了SQL方言...
综上所述,本课程深入介绍了Hadoop在Web日志分析中的应用,从基本的日志概念到复杂的分布式日志收集和处理架构,为学员提供了一套完整的Hadoop实战知识体系。通过本课程的学习,学员可以掌握如何使用Hadoop系统进行...