chukwa采集框架中负责将大量小文件进行合并的组件是

优采云 发布时间: 2020-08-13 07:22

  Apache 的开源项目 hadoop, 作为一个分布式存储和估算系统,已经被业界广泛应用。很多小型企业都有了各自基于 hadoop 的应用和相关扩充。当 1000+ 以上个节点的 hadoop 集群显得常见时,集群自身的相关信息怎样搜集和剖析呢?针对这个问题, Apache 同样提出了相应的解决方案,那就是 chukwa。

  概述

  chukwa 的官方网站是这样描述自己的: chukwa 是一个开源的用于监控小型分布式系统的数据搜集系统。这是建立在 hadoop 的 hdfs 和 map/reduce 框架之上的,继承了 hadoop 的可伸缩性和鲁棒性。Chukwa 还收录了一个强悍和灵活的工具集,可用于展示、监控和剖析已搜集的数据。

  在一些网站上,甚至扬言 chukwa 是一个“日志处理/分析的full stack solution”。

  说了这么多,你心动了吗?

  Chukwa 是哪些?

  在泰国神话中Chukwa是一只最古老的龟。它支撑着世界。在它的背上还支撑着一种称作Maha-Pudma的小象,在小象的背上顶着这个月球。呵呵,大象?Hadoop?不难理解为何在Hadoop中的这个子项目称作Chukwa了,或许Chukwa的其中一位开发者是美国人?呵呵,我胡扯的,神话中的Chukwa的,貌似是这样的,如图所示:

  

  Chukwa是由Yahoo贡献,基于Hadoop的大集群监控系统,可以用他来剖析和搜集系统中的数据(日志)。Chukwa运行HDFS中储存数据的采集器和MapReduce框架之上,并承继了Hadoop的可扩展性和鲁棒性, Chukwa使用MapReduce来生成报告,他还包括一个用于检测和剖析结果显示的web-portal工具,通过web-portal工具让这个搜集数据的更佳具有灵活性,这点有点像是类似 linux工具,例如:awk 。这几乎是一个日志处理/分析的full stack solution,国内用hadoop做日志剖析的,或者即将做日志剖析的可以关注下。

  Chukwa 由哪几个组件组成的?

  Chukwa是Yahoo开发的Hadoop之上的数据采集/分析框架,主要用于日志采集/分析。该框架提供了采集数据的Agent,由Agent采集数据通过HTTP发送数据给Cluster的Collector,collector把数据sink进Hadoop,然后通过定期运行Map reducer来剖析数据,将结果呈现给用户。

  Chukwa 有以下4个主要的组成部分:

  Agent搜集各服务器的数据

  Collectors接收agent的数据;并写进储存

  MapReduce jobs归档数据

  HICC就是 Hadoop Infrastructure Care Center的四个英语词组的简写,简单来说是个Web工程用于ChukWa的内容展示。

  几个部件大致的处理流程如下:

  

  在这个Blog中后续会对ChukWa有进一步的描述,再次感谢你的阅读。

  –end–

  转自:

  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的系统构架

  搭建、运行Chukwa要在Linux环境下,要安装MySQL数据库,在Chukwa/conf目录 中有2个SQL脚本 aggregator.sql、database_create_tables.sq l 导入MySQL数据库,此外还要有Hadoo的HDSF运行环境,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 从数据的形成、采集、存储、分析到展示的整个生命周期都提供了全面的支持。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线