设为首页 收藏本站
查看: 457|回复: 0

[经验分享] Hadoop 集群基准测试

[复制链接]

尚未签到

发表于 2016-12-5 07:18:55 | 显示全部楼层 |阅读模式
  一、测试条件
  集群完全安装配置后,应立即开始基准测试。基准测试时集群里不应该运行其他一切任务。
  二、测试目标
  1. 硬盘故障:新系统最常见的故障。可以通过运行高强度的IO基准测试程序集中测试。例如TestDFSIO
  2. MapReduce的性能
  三、测试方法
  1、TestDFSIO基准测试HDFS
  测试顺序应该是先写测试后读测试
  写测试:
  使用10个map任务写10个文件,每个500m。
  hadoop jar $HADOOP_HOME/hadoop-test-*.jar TestDFSIO -write -nrFiles 10 -fileSize 1000
  在运行的最后,结果被写入控制台并记录到当前路径TestDFSIO_results.log 。
  数据默认写入 /benchmarks/TestDFSIO目录下
  读测试:
  hadoop jar $HADOOP_HOME/hadoop-test-*.jar TestDFSIO -read-nrFiles 10 -fileSize 1000
  清除测试数据:
  hadoop jar $HADOOP_HOME/hadoop-test-*.jar TestDFSIO -clean
  2、用sort排序测试MapReduce
  Hadoop自带一个部分排序的程序。这对测试整个MapReduce系统很有用,因为整个输入数据集都会通过洗牌传输至reducer。一共三个步骤:生成一些随机的数据,执行排序,然后验证结果。
首先我们通过使用RandomWriter生成一些随机的数据。它以每个节点10个map的方式运行一个MapReduce作业,并且每一个map生成近似10GB的随机二进制数据,带有不同长度的键和值。
  hadoop jar hadoop-examples-0.20.2-cdh3u1.jar randomwriter random-data
  3、TeraSort 基准测试实验
  1TB排序通常用于衡量分布式数据处理框架的数据处理能力。Terasort是Hadoop中的的一个排序作业,在2008年,Hadoop在1TB排序基准评估中赢得第一名,耗时209秒。
  首先执行 teragen 生成数据
  写入1000000 行,每行100字节。格式:
  (10 bytes key) (10 bytes rowid) (78 bytes filler) \r \n
  如
  .t^#\|v$2\ 0AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEFFFFFFFFFFGGGGGGGGGGHHHHHHHH
  hadoop jar hadoop-examples-0.20.2-cdh3u1.jar teragen 1000000 terasort/1000000-input
  查看数据
  hadoop fs -ls /usr/hadoop/terasort/1000000-input
  hadoop jar hadoop-*-examples.jar terasort in-dir out-dir
  排序
  hadoop jar hadoop-examples-0.20.2-cdh3u1.jar terasort terasort/1000000-input terasort/1000000-output
  查看排序
  hadoop fs -ls terasort/1000000-output
  4、 Gridmix 基准测试
  Hadoop Gridmix是针对hadoop系统的基准测试程序。它具备评测大规模数据处理系统所需的各个功能模块,包括:产生数据,生成并提交作业,统计作业完成时间等。本文主要介绍了Hadoop 0.20.2中自带的Gridmix2基准测试程序(位于\src\benchmarks目录下)的设计原理及使用方法。
  作业种类
  Gridmix通过模拟hadoop cluster中的实际负载来评测hadoop性能。它首先根据用户设定的参数生成大量数据和一批作业,然后同时提交这些作业(批处理),最后统计出这批作业的运行时间。为了尽可能地模拟现实中的各种作业,Gridmix自带了各种具有代表性的作业,分别为streamSort,javaSort,webdataScan,combiner(这个作业只是对结果进行了压缩),monsterQuery,webdataSort,可以将这些作业分为以下几类:
  (1) 三阶段map/reduce作业
  输入:500G压缩(等价于2T未压缩的)SequenceFile
  (key,value)=(5 words,100 words)
  计算1:map保留10%的数据,reduce保留40%数据,
  计算2:map保留10%的数据,reduce保留40%数据,数据来自[计算1]的输出
  计算3:map保留10%的数据,reduce保留40%数据,数据来自[计算2]的输出
  动机:很多作业负载是流水式 map/reduce 作业,包括pig
  对应作业:monsterQuery
  (2) 大规模数据排序,其中key和value长度都是变化的
  输入:500G压缩(等价于2T未压缩的)SequenceFile
  (key,value)=(5-10 words,100-10000 words)
  计算:map保留100%的数据,reduce保留100%数据
  动机:处理大规模的压缩数据是非常常见的
  对应作业:webdataSort
  (3) 过滤
  输入:500G压缩(等价于2T未压缩的)SequenceFile
  (key,value)=(5-10 words,100-10000 words)
  计算:map保留0.2%的数据,reduce保留5%数据
  动机:对大数据集进行过滤是很常见的
  对应作业:webdataScan
  (4) API 文本排序(直接调用一些API进行排序)
  输入:500G未压缩文本
  (key,value)=(1-10 words,0-200 words)
  计算:map保留100%的数据,reduce保留100%数据
  动机:map/reduce直接调用库函数进行排序
  对应作业:streamSort,javaSort,其中streamSort使用了shell命令cat作为mapper和reducer(这并不是排序,只是简单的进行逐行扫描),javaSort调用了java中的API进行排序。
  Gridmix生成的一个基准负载包含不同数量的各种类型的作业,且每种作业处理的数据量也不同。用户可以在一个xml文件中配置作业数量和数据量,Gridmix会根据这个配置文件构造相应的作业,提交到集群中并监控它们的执行情况直到所有作业完成。
  使用方法
  (1) 编译
  在/home/hadoop/hadoop_install/src/benchmarks/gridmix2下,输入“ant”,会在build目录下生成gridmix.jar文件,把它copy到gridmix目录下。
  (2) 配置环境变量
  修改脚本gridmix-env-2中的以下几个变量值:
  HADOOP_HOME:hadoop安装路径
  HADOOP_VERSION:hadoop版本,如hadoop-0.20.2
  HADOOP_CONF_DIR:conf路径,如${HADOOP_HOME}/conf
  USE_REAL_DATA:是否使用大的数据集(2TB),如果设为false,缺省数据量是2G。用户可以在generateGridmix2Data.sh根据需要配置。
  (3) 配置作业信息
  Gridmix提供了一个缺省的gridmix_conf.xml,用户可以根据自己的需要作修改。修改的内容可以是:作业的类型和数量,作业处理的数据量,reduce task数目,是否对数据结果进行压缩等。需要注意的是,用户可以配置多个不同reduce数量的同一类型作业,比如:
  <property>
  <name>javaSort.smallJobs.numOfJobs</name>
  <value>8,2</value>
  <description></description>
  </property>
  <property>
  <name>javaSort.smallJobs.numOfReduces</name>
  <value>15,70</value>
  <description></description>
  </property>
  上面的例子设置了10个java sort小作业,其中8个每个带有15个reduce task,另外2个每个带70个reduce task。
  在Gridmix中,每种作业有大中小三种类型,小作业只有3个map task(只处理{part-00000,part-00001,part-00002}三块数据);中作业的task 数目与数据总量有关,它处理与正则表达式{part-000*0,part-000*1,part-000*2}匹配的数据块,比如有10个数据块,分别是part-00000,part-00001,part-00002…part-0009,则中作业只会处理前三块;大作业会处理所有数据。
  (4) 产生数据
  使用generateGridmix2Data.sh脚本产生数据,用户可以根据需要配置数据量。在Gridmix中,数据压缩率是4x。
  (5) 运行
  首先确保hadoop集群已经启动,然后运行./rungridmix_2,该脚本会创建start.out记录作业运行开始时间,作业结束时,创建end.out记录完成时间。
  总结
  Hadoop Gridmix由两个版本,本文讨论的是第二个版本,即Gridmix2。.Gridmix2具有很好的扩展性,用户可以很容易地添加其它作业,同时它能很好的模拟批处理情况。但缺点是它不能模拟随机提交作业(比如按泊松分布进行提交)的应用场景。
  原文地址:http://blog.csdn.net/wf1982/article/details/6763915

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-309641-1-1.html 上篇帖子: Hadoop平台安装配置和升级 下篇帖子: Hadoop 1.0安装配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表