您的位置:首页 > 大数据 > 人工智能

hadoop性能分析工具vaidya学习

2012-11-30 11:01 417 查看
总的来讲,内置的测试类比较少,真正的profiling还需要自己添加,而且要对hadoop源代码内置各个job counter的实现有叫深入的理解。

但为hadoop专门的profiling提供了一个可支持框架。


vaidya简介

hadoop
0.20.2的vaidya文档

http://hadoop.apache.org/docs/r0.20.2/vaidya.html
一个vaidya使用的简介

http://www.cnblogs.com/reckzhou/articles/2409577.html
其他hadoop监控工具

http://www.zhihu.com/question/19661847

http://www.zhihu.com/question/19661847
使用示例

vaidya基本上是基于hadoop map/reduce任务日志进行事后分析的工具。

(1)在PKGBUILD_hadoop中增加如下包信息,打包重装hadoop

(2)在contrib/vaidya/bin/vaidya.sh中做如下修改

(3)运行一个map-reduce的job,并将output/logs/_histroy目录下的文件hadoop fs -get到本地,运行

(4)

生成一个分析结果的report.xml,示例




vaidya实现细节与内置的测试类

vaydya主要是解析jobHistory文件中的Job信息、task信息、各级couner信息,然后在这些信息上运行各个Test类的evaluate()接口,计算出一个影响0~1之间的影响因子,根据配置的系统success阈值判断该测试用例是否通过。


测试用例的配置文件

生成结果


类图




流程图




内置测试类简介

BalancedReducePartitioning

(1)将各个reduce task的统计信息,按照INPUT_RECORDS排序后,返回一个list

(2) task1.input_record > task2.input_record > task3.input_record

从前到后将input_record想加,直到累计的record大于 PercentReduceRecords(0.85) * job reduce input recored总数

影响力impact level就等于 1- 相加的task的数目/总reduce task数目

相加的task的数目,含义是用了多少个reduce来解决85%的数目,

这个数目越大,相加的task的数目/总reduce task数目就越大,impact level就越小,相反解决85%数目的reduce task数目越小,impact level就越大。

impact level的含义是解决15%以内的reduce数据的task数目,impact level小于20%为通过,就是用20%的reduce解决15%的数据。

也就是说如果用少部分reduce task处理了大部分数据,则视为不平衡。

MapsReExecutionImpact

impact = (LAUNCHED_MAPS - TOTAL_MAPS)/TOTAL_MAP

重试的map task数目的比例不超过40%

ReadingHDFSFilesAsSideEffect

impact = HDFS_BYTES_READ/MAP_INPUT_BYTES/NormalizationFactor

HDFS_BYTES_READ/MAP_INPUT_BYTES/2< 0.05

HDFS_BYTES_READ/MAP_INPUT_BYTES < 0.1

HDFS_BYTES_READ < 0.1 * MAP_INPUT_BYTES

也就是说从HDFS读入的数据,不超过map任务总数据的10%

为什么会小呢?一说是HDFS是底层文件的读入,而map input bytes是job task的输入,例如输入的是压缩文件,那么这个hdfs读肯定小了。

MapSideDiskSpill

impact = (所有map task的FILE_BYTES_WRITTEN的累计 - 总的MAP_OUTPUT_BYTES )/总的MAP_OUTPUT_BYTES/ 归一化数字3

impact < 0.3

所有map task的FILE_BYTES_WRITTEN的累计 - 总的MAP_OUTPUT_BYTES < 0.9 * 总的MAP_OUTPUT_BYTES

在map输出时,由于多次spill,使得FILE_BYTES_WRITTEN 大于 AP_OUTPUT_BYTES,也是说由于spill造成的多写的数据,不超过输出总数据的90%。

io相关配置参数的解释:http://lovebingkuai.diandian.com/post/2012-05-22/19764807

http://www.linuxso.com/architecture/31187.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: