浅谈chukwa在数据收集处理方面的应用Word格式.docx

上传人:b****2 文档编号:5738535 上传时间:2023-05-05 格式:DOCX 页数:18 大小:81.51KB
下载 相关 举报
浅谈chukwa在数据收集处理方面的应用Word格式.docx_第1页
第1页 / 共18页
浅谈chukwa在数据收集处理方面的应用Word格式.docx_第2页
第2页 / 共18页
浅谈chukwa在数据收集处理方面的应用Word格式.docx_第3页
第3页 / 共18页
浅谈chukwa在数据收集处理方面的应用Word格式.docx_第4页
第4页 / 共18页
浅谈chukwa在数据收集处理方面的应用Word格式.docx_第5页
第5页 / 共18页
浅谈chukwa在数据收集处理方面的应用Word格式.docx_第6页
第6页 / 共18页
浅谈chukwa在数据收集处理方面的应用Word格式.docx_第7页
第7页 / 共18页
浅谈chukwa在数据收集处理方面的应用Word格式.docx_第8页
第8页 / 共18页
浅谈chukwa在数据收集处理方面的应用Word格式.docx_第9页
第9页 / 共18页
浅谈chukwa在数据收集处理方面的应用Word格式.docx_第10页
第10页 / 共18页
浅谈chukwa在数据收集处理方面的应用Word格式.docx_第11页
第11页 / 共18页
浅谈chukwa在数据收集处理方面的应用Word格式.docx_第12页
第12页 / 共18页
浅谈chukwa在数据收集处理方面的应用Word格式.docx_第13页
第13页 / 共18页
浅谈chukwa在数据收集处理方面的应用Word格式.docx_第14页
第14页 / 共18页
浅谈chukwa在数据收集处理方面的应用Word格式.docx_第15页
第15页 / 共18页
浅谈chukwa在数据收集处理方面的应用Word格式.docx_第16页
第16页 / 共18页
浅谈chukwa在数据收集处理方面的应用Word格式.docx_第17页
第17页 / 共18页
浅谈chukwa在数据收集处理方面的应用Word格式.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

浅谈chukwa在数据收集处理方面的应用Word格式.docx

《浅谈chukwa在数据收集处理方面的应用Word格式.docx》由会员分享,可在线阅读,更多相关《浅谈chukwa在数据收集处理方面的应用Word格式.docx(18页珍藏版)》请在冰点文库上搜索。

浅谈chukwa在数据收集处理方面的应用Word格式.docx

什么是Chukwa,简单的说它是一个数据收集系统,它可以将各种各样类型的数据收集成适合Hadoop处理的文件保存在HDFS中供Hadoop进行各种MapReduce操作。

Chukwa本身也提供了很多内置的功能,帮助我们进行数据的收集和整理。

Chukwa应用场景介绍

为了更加简单直观的展示Chukwa,我们先来看一个假设的场景。

假设我们有一个规模很大(牵扯到Hadoop的总是很大。

)的网站,网站每天产生数量庞大的日志文件,要收集,分析这些日志文件可不是件容易的事情,读者可能会想了,做这种事情Hadoop挺合适的,很多大型网站都在用,那么问题来了,分散在各个节点的数据怎么收集,收集到的数据如果有重复数据怎么处理,如何与Hadoop集成。

如果自己编写代码完成这个过程,一来需要花费不小的精力,二来不可避免的会引入Bug。

这里就是我们Chukwa发挥作用的时候了,Chukwa是一个开源的软件,有很多聪明的开发者在贡献着自己的智慧。

它可以帮助我们在各个节点实时监控日志文件的变化,增量的将文件内容写入HDFS,同时还可以将数据去除重复,排序等,这时Hadoop从HDFS中拿到的文件已经是SequenceFile了。

无需任何转换过程,中间繁杂的过程都由Chukwa帮我们完成了。

是不是很省心呢。

这里我们仅仅举了一个应用的例子,它还可以帮我们监控来自Socket的数据,甚至定时执行我们指定的命令获取输出数据,等等,具体的可以参看Chukwa官方文档。

如果这些还不够,我们还可以自己定义自己的适配器来完成更加高级的功能。

稍后我们将看到如何定义自己的适配器来做自己想做的事情。

怎么样,是不是有些心动了呢。

Chukwa的架构设计

前面我们简单说了他的一些用途,讲的比较概括,大家不一定能明白,它到底是怎么帮助我们完成功能的,下来我们就先从他的架构设计角度来看看。

我们依然先看一张图。

图1.架构示意图

我们还是以刚才提到的日志的例子来看。

这里我们先介绍几个新名词:

Agent

什么是Agent,agent是驻守在各个节点上的负责收集数据的程序。

Agent又由若干adapter组成。

adapter运行在Agent进程以内,执行实际收集数据的工作,而Agent则负责adapter的管理。

Collector

什么是Collector,Collector收集各个Agent传来的数据,并将这些数据写入HDFS。

了解了这两个关键的名词之后,也许有读者已经在脑海中有了大致的数据流程图了。

是的,它就是这么简单:

数据被Agent收集,并传送到Collector,由Collector写入HDFS,然后由Map-Reducejob进行数据的预处理。

Chukwa环境搭建与部署

这里我们介绍一下如何安装,部署,应用Chukwa

1.前提条件

∙Linux环境

∙这里我们使用RedHat

∙JDK使用1.6JDK

∙系统中需要支持SSH

∙其他要求

2.下载chukwa

∙这里给出的是其中一个镜像的下载地址wget这里的链接是0.4.0版本的chukwa.其他版本可以从官方网站下载。

官网地址:

http:

//incubator.apache.org/chukwa/

3.下载Hadoop

∙Hadoop的下载,安装不是本文重点,这里省略。

当前的0.20.2版是比较稳定的版本。

开发中的0.21.0版,由于jar包结构上的改变以及配置的改变,与当前版本的chukwa的不兼容。

所以建议使用stable版本的Hadoop。

4.安装

∙tar-xzfchukwa-0.4.0.tar.gz

∙tar-xzfhadoop-0.20.2.tar.gz

∙解压之后,假设目录名称分别chukwa-0.4.0和Hadoop-0.20.2

Hadoop的配置

可以参考Hadoop官方网站的教程,限于篇幅,我们这里省略。

Chukwa的配置

这里我们将以最简单的步骤完成agent和collector的配置,使读者可以快速的了解它。

配置Agent

1.编辑$CHUKWA_HOME/conf/chukwa-env.sh文件,这里需要设置JAVA_HOME注释掉HADOOP_HOME,HADOOP_CONF_DIR,因为agent仅仅是用来收集数据,所以不需要HADOOP的参与。

注释掉CHUKWA_PID_DIR,CHUKWA_LOG_DIR,如果不注释的话,那么他指定的位置是在/tmp临时目录下,这会导致,PID和LOG文件被无故删除。

会在后续的操作中导致异常。

注释之后,系统会使用默认路径,默认会在Chukwa安装目录下创建PID和LOG文件。

2.编辑$CHUKWA_HOME/conf/collectors文件,这里需要将collectors的地址写在这里,格式为http:

//hostname:

port/.这里可以写多个collector,每个占一行。

Agent通常会随机选择一个作为collector将数据发送给这个collector,如果当前的collector失败,则会继续选择下一个继续尝试。

collector是有loadbalance功能的,不会说所有的Agent都将数据写入到一个Collector,从而导致失败。

3.编辑$CHUKWA_HOME/conf/initial_adapters文件,这里默认带的配置文件initial_adapters.template,修改名称为initial_adapters,里面默认带了几个adapter的例子。

很容易理解。

这个配置文件的名称,顾名思义是默认初始的adapter,当agent启动的时候,这些adapter就会工作。

配置Collector

1.编辑$CHUKWA_HOME/conf/chukwa-env.sh文件,修改JAVA_HOME,HADOOP_HOME,HADOOP_CONF_DIR,指定为合适的值。

同样的道理,我们需要注释掉CHUKWA_PID_DIR,CHUKWA_LOG_DIR

启动

1.启动hadoop

bin/start-all.sh

2.启动collector

bin/chukwacollector

3.启动agent

bin/chukwaagent

可以看到的结果

清单1.Agent端日志片段

2010-12-2310:

20:

28,315INFOTimer-1ExecAdaptor-callingexec

28,377INFOTimer-1ExecAdaptor-callingexec

28,438INFOTimer-1ExecAdaptor-callingexec

28,451INFOHTTPpostthreadChukwaHttpSender-

collected14chunksforpost_26923

28,452INFOHTTPpostthreadChukwaHttpSender-

>

>

HTTPpost_26923tohttp:

//xi-pli:

8080/length=17788

28,459INFOHTTPpostthreadChukwaHttpSender-

HTTPGotsuccessbackfromhttp:

8080/chukwa;

responselength924

post_26923sent0chunks,gotback14acks

28,500INFOTimer-1ExecAdaptor-callingexec

从这里我们能看到Timer-1ExecAdaptor-callingexec已经被定时执行,而且我们还能看到Agent将信息发送给了我们指定的Collector:

清单2.Collector端日志

30:

22,207INFOTimer-4SeqFileWriter-

rotatingsinkfile/chukwa/logs/201023102522181_xipli_15db999712d1106ead87ffe.chukwa

22,784INFOTimer-1root-

stats:

ServletCollector,numberHTTPConnection:

15,numberchunks:

1110

23,220INFOTimer-3SeqFileWriter-

stat:

datacollection.writer.hdfsdataSize=797670dataRate=26587

从日志我们可以看到Collector已经通过writer将收集到的数据写入了文件/chukwa/logs/201023102522181_xipli_15db999712d1106ead87ffe.chukwa

那么怎么知道数据已经被写入HDFS了呢。

我们可以通过执行hadoop的命令来查看HDFS

清单3.察看日志

bin/hadoopfs-ls/chukwa/logs

如果不出意外,我们已经能看到数据已经被写入了HDFS。

清单4.检查文件

Found205items

-rw-r--r--3hadoopsupergroup

6763952010-12-2217:

12/chukwa/logs/201022171225851_xipli_18f1ec1212d0d4c13067ffa.done

-rw-r--r--3hadoopsupergroup60463662010-12-2217:

17

/chukwa/logs/201022171725877_xipli_18f1ec1212d0d4c13067ff8.chukwa

83524202010-12-2217:

32/chukwa/logs/201022173249756_xipli_1f33c45712d0d6c7cdd8000.done

如果想要将agent部署到多个节点去,只需要在其他节点上也做相应的配置即可。

但是随着节点数目的增多,我们会发现管理agent的难度越来越高。

这时我们可以使用单一的节点来批量管理所有的Agents。

第一个我们需要编辑的文件是conf目录下的agents文件,默认情况下,它是一个模板文件,名称为agents.template,我们需要把它改名为agents。

将agent的hostname/IP逐个添加进这个文件中,每行一个节点。

这时通过调用bin/start-agents.sh和bin/stop-agents.sh可以批量的管理agents的启动和关闭。

如果有遇到不能正常关闭agent的情况,那么一个可用的临时解决方法是将各个节点的chukwa脚本中的kill-1修改为kill-9。

Collector也是类似的控制方式。

基本命令介绍

在bin目录下有很多的可执行文件。

我们这里只关注以下一些文件:

chukwa

chukwa命令的帮助信息如下

清单5.基本命令

Usage:

chukwa[--configconfdir]COMMAND

whereCOMMANDisoneof:

agentrunaChukwaAgent

archiveruntheArchiveManager

collectorrunaChukwaCollector

demuxruntheDemuxManager

dprunthePostDemuxdataprocessors

hiccrunaHICCWebserver

drollrunadailyrollingjob(deprecated)

hrollrunahourlyrollingjob(deprecated)

versionprinttheversion

Utilities:

backfillrunabackfilldataloaderutility

dumpArchiveviewanarchivefile

dumpRecordviewarecordfile

tailstarttailingafile

Mostcommandprinthelpwheninvokedw/oparameters.

各参数的功能如下:

bin/chukwaagent启动本地agent

bin/chukwaagentstop关闭本地agent

bin/chukwacollector启动本地collector

bin/chukwacollectorstop关闭本地collector

bin/chukwaarchive定时运行archive,将文件整理成SequenceFile.并且会去除重复内容。

bin/chukwaarchivestop停止运行archive

bin/chukwademux启动demux管理器,相当于启动了一个M/RJob.默认情况是TsProcessor.我们也可以自己定义自己的数据处理模块,稍后提到。

bin/chukwademuxstop停止demux管理器

bin/chukwadp启动demuxpostprocessor用于定时排序,归并文件,剔除冗余数据。

bin/chukwadpstop停止dp运行

bin/chukwahicc这是一个有意思的东西,它类似一个portal,将数据以图形的方式展现出来。

但是在当前的0.4.0版本还有很多问题,读者要是有兴趣,可以试一下开发中的0.5.0版本。

后面的命令比较简单,根据提示也能正确运行,不做详细叙述。

slaves.sh

slaves.sh命令,很有用,尤其是当你有很多节点的时候,比如有50个节点,想要给每个节点下创建一个目录abc怎么办呢。

如果一个一个去机器上创建,那就太繁琐了。

幸好,有它可以帮我们,bin/slaves.shmkdir/home/hadoop/abc.它就会帮我们在各个节点上创建对应的目录。

start-agents.sh

该命令会启动所有注册在agents文件中的Agent

start-collectors.sh

该命令会启动所有注册在collectors文件中的Collector

stop-agents.sh

该命令会停止所有注册在agents文件中的Agent

stop-collectors.sh

该命令会停止所有注册在collectors文件中的Collector

start-data-processors.sh

该命令是以下三个命令的组合:

bin/chukwaarchive

bin/demux

bin/dp

他会将这三个命令依次启动,不用自己一个一个启动。

stop-data-processors.sh

依次停止archive/demux/dp三个服务

Agent端命令:

当Agent启动之后,我们还可以动态控制Agent中的adapter。

当Agent启动之后,每个Agent都会启动一个telnet服务,用于单独控制Agent。

默认端口是9093。

当运行了命令telnetlocalhost9093之后,会进入telnet控制台,显示如下:

清单6.Agent控制台信息

Trying:

:

1...

Connectedtolocalhost.

Escapecharacteris'

^]'

.

输入回车,并输入help命令,会显示详细的命令帮助信息

清单7.Agent控制台信息

you'

retalkingtotheChukwaagent.Commandsavailable:

add[adaptorname][args][offset]--startanadaptor

shutdown[adaptornumber]--gracefulstop

stop[adaptornumber]--abruptstop

list--listrunningadaptors

close--closethisconnection

stopagent--stopthewholeagentprocess

stopall--stopalladaptors

reloadCollectors--reloadthelistofcollectors

help--printthismessage

Commandnamesarecase-blind.

此时输入list,则可以查看到当前正在运行的所有的adapter。

显示如下:

清单8.Agent控制台信息

adaptor_8567b8b00a5dc746ccd5b8d179873db1)

org.apache.hadoop.chukwa.datacollection.adaptor.ExecAdaptor

Top60/usr/bin/top-b-n1-c505728

adaptor_e69999b07d7023e6ba08060c85bd9ad7)

Df60/bin/df-l353792

其他命令都比较浅显易懂,我们下来仅仅看看add命令。

以下面一个例子来看:

清单9.Agent添加adapter

addfiletailer.LWFTAdaptordataType/foo/bar0

该命令将LWFTAdaptor这个adaptor加入到Agent中并运行,数据类型是dataType类型,这个类型将与后续的demux服务一起配合工作,/foo/barbar是adaptor的参数,最后的数字0则表示数据的偏移量。

目前chukwa0.4.0支持的adaptor大致分以下几种类型:

检测文件/目录变化的,监测UDP数据的,执行特定shell脚本的。

具体可以参考chukwa官方文档,有较详尽的描述。

需要指出的是在0.5版本中,adaptor被更加的强化和规范化。

有兴趣的读者可以看看。

如果要从telnet控制台退出,则可以通过输入close退出。

内部数据处理时序介绍

图2.内部数据处理时序

1.Collector将Agent发送的数据写入到logs/*.chukwa文件,直到文件大小达到64M或者达到一定的时间间隔之后,Collector会将*.chukwa文件重命名为*.done文件表明文件写入结束。

2.DemuxManager每隔

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2