什么是hadoop rumen?
hadoop rumen是为hadoop mapreduce设计的日志解析和分析工具,它能够将jobhistory 日志解析成有意义的数据并格式化存储。rumen可以单独使用,但通常作为其他组件,比如gridmix (v3) 和 mumak的基础库。
hadoop rumen设计动机
对于任何一个工作在hadoop之上的外部工具,分析jobhistory日志都是必须的工作之一。基于这点考虑,hadoop应内嵌一个jobhistory日志分析工具。
统计分析mapreduce作业的各种属性,比如任务运行时间、任务失败率等,通常是基准测试或者模拟器必备的功能,hadoop rumen可以为任务生成cumulative distribution functions (cdf),这可以用于推断不完整的、失败的或者丢失的任务。
hadoop rumen基本构成
hadoop rumen已经内置在apache hadoop 1.0之上(包括0.21.x,0.22.x,cdh3)各个版本中,位于org.apache.hadoop.tools.rumen包中,通常被hadoop打包成独立的jar包hadoop-tools-[version].jar。hadoop rumen由两部分组成:
(1) trace builder
将jobhistory日志解析成易读的格式,当前仅支持json格式。trace builder的输出被称为job trace(作业运行踪迹),我们通过job trace很容易模拟(还原)作业的整个运行过程。
(2) ?folder
将job trace按时间进行压缩或者扩张。这个还是为了方便其他组件,比如gridmix (v3) 和 mumak,使用。folder可以将作业运行过程进行等比例缩放,以便在更短的时间内模拟作业运行过程。
试用hadoop rumen
你可以通过两种方式运行rumen,一种是使用集成化(综合所有功能)的hadooplogsanalyzer类,在很多hadoop版本中,这个类已经过期,不推荐使用,另一种是使用tracebuilder和folder类。它们的运行方式基本类似,下面以hadooplogsanalyzer类为例进行说明:
bin/hadoop org.apache.hadoop.tools.rumen.hadooplogsanalyzer -v1 -write-job-trace file:///tmp/job-trace.json -write-topology file:///tmp/topology.json file:///software/hadoop/logs/history/done/其中,“-v1”表示采用version 1的jobhsitory格式,如果你的hadoop版本是0.20.x系列,则需要加这个参数,“-write-job-trace”是输出的job trace存放位置,“-write-topology”是拓扑结构存放位置,rumen能够通过分析jobhistory中所有文件得到hadoop集群的拓扑结构。最后一项紧跟你的jobhistory 中done目录存放位置,一般在${hdoop_log}/history/done中,如果在本地磁盘,则需在目录前加前缀file://,如果在hdfs上需在目录前加前缀“hdfs://”。
下面是截取的job-trace.json和topology.json文件内容:
【job-trace.json】
“priority” : “normal”, “jobid” : “job_201301061549_0003″, “maptasks” : [ { "attempts" : [ { "location" : null, "hostname" : "hadoop001", "starttime" : 1357460454343, "finishtime" : 1357460665299, "result" : "killed", "shufflefinished" : -1, "sortfinished" : -1, "attemptid" : "attempt_201301061549_0003_m_000000_0", "hdfsbytesread" : -1, "hdfsbyteswritten" : -1, "filebytesread" : -1, "filebyteswritten" : -1, "mapinputrecords" : -1, "mapoutputbytes" : -1, "mapoutputrecords" : -1, "combineinputrecords" : -1, "reduceinputgroups" : -1, "reduceinputrecords" : -1, "reduceshufflebytes" : -1, "reduceoutputrecords" : -1, "spilledrecords" : -1, "mapinputbytes" : -1 } ], “preferredlocations” : [ ], “starttime” : 1357460454686, “finishtime” : -1, “inputbytes” : -1, “inputrecords” : -1, “outputbytes” : -1, “outputrecords” : -1, “taskid” : “task_201301061549_0003_m_000000″, “numbermaps” : -1, “numberreduces” : -1, “taskstatus” : null, “tasktype” : “map” }, { ….【topology.json】
{ “name” : “”, “children” : [ { "name" : "default-rack", "children" : [ { "name" : " hadoop001", "children" : null }, { "name" : " hadoop002", "children" : null }, { "name" : hadoop003", "children" : null }, { "name" : " hadoop004", "children" : null }, { "name" : " hadoop005", "children" : null }, { "name" : " hadoop006", "children" : null } ] } ] }
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!