`
cloudeagle_bupt
  • 浏览: 529391 次
文章分类
社区版块
存档分类
最新评论

Hadoop 集群基准测试

阅读更多

一、测试条件

集群完全安装配置后,应立即开始基准测试。基准测试时集群里不应该运行其他一切任务。

二、测试目标

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

分享到:
评论

相关推荐

    Hadoop-构建集群.pdf

    1 集群规范 (Cluster Specification) 2 集群的构建和安装 (Cluster Setup and Installation) 3 Hadoop 配置 ( Hadoop Configuration ) ...5 利用基准评测程序测试 Hadoop 集群 (Benchmarking a Hadoop Cluster)

    Hadoop权威指南 第二版(中文版)

     利用基准测试程序测试Hadoop集群  Hadoop基准测试程序  用户的作业  云上的Hadoop  Amazon EC2上的Hadoop 第10章 管理Hadoop  HDFS  永久性数据结构  安全模式  日志审计  工具  监控  日志  度量  ...

    Hadoop权威指南(中文版)2015上传.rar

    利用基准测试程序测试Hadoop集群 Hadoop基准测试程序 用户的作业 云上的Hadoop Amazon EC2上的Hadoop 第10章 管理Hadoop HDFS 永久性数据结构 安全模式 日志审计 工具 监控 日志 度量 Java管理扩展(JMX) 维护 日常...

    Spark-terasort:Spark Terasort基准测试

    它是对Hadoop集群的存储层(HDFS)和计算层(YARN / Spark)进行组合测试的基准。 完整的TeraSort基准测试运行包含以下三个步骤: 通过TeraGen生成输入数据。 在输入数据上运行实际的TeraSort。 通过TeraValidate...

    就医管理系统java源码-Hadoop-Cluster-in-Machine-Learning:机器学习中的Hadoop集群

    这项研究涉及数据在分布式系统架构中的分布,以及创建用于对孟加拉手写数字文本进行基准测试的机器学习模型。 经常看到,当数据量非常大时,在单台机器上工作的机器学习模型或集群会占用大量的资源和时间。 分布式...

    koonkie:用于宏基因组处理的 Hadoop 框架

    Koonkie:使用 Hadoop 处理环境序列信息的自动化软件工具 Dongjae Kim, Kishori M. Konwar, Niels W. Hanson, Steven J. Hallam 当前的下一代测序平台从环境样本中生成越来越庞大的文本数据集,必须通过各种生物...

    big_data:有关Hadoop,MapReduce,Spark,Docker的教程的集合

    演示,用于对Hadoop集群进行基准测试 面向初学者的Docker:容器世界入门 Pyspark基本演示 使用pyspark生成ngram的基本示例 编码Spark数据框列 探索Unicode类别( ) 用numpy算出多项式回归的示例 使用Faker Python...

    电力设备状态高速采样数据的云存储技术研究

    创建了1个包含20个节点(每个节点配置4核CPU)的Hadoop集群,并对集群进行了基准测试,测试结果表明所建集群适合进行大量数据的读写。以绝缘子泄漏电流数据为例,使用YCSB对所建存储系统进行了性能测试,测试结果...

    支持云计算环境的MapReduce模拟器设计 (2015年)

    然后,集群读取元件从集群中读取参数,从而创建模拟的Hadoop集群环境;最后,利用作业跟踪器跟踪模拟的作业,并利用任务跟踪器运行单个任务.所设计的模拟器从多角度研究Hadoop应用的性能,集中模拟Hadoop的映射和化简行为,...

    graphalytics-platforms-mapreducev2

    在启动基准测试之前,将Hadoop集群配置为以伪分布式或分布式模式运行。 您还必须通过在$HADOOP_CONF_DIR/mapred-site.xml设置以下属性来增加作业计数器的最大数量: mapreduce.job.counters.limit :将其设置为较大...

    CS740-final-project

    HDFSBenchmark:这是我们设计基准测试的地方,以测试 COLAB 是否可以提高吞吐量,前提是我们的读写流量相等。 Openflow-HDFS:这是附加到 Floodlight 控制器的客户端守护进程。 它在 COLAB 中完成主要工作,即收集...

    terraform-aws-emr-cluster:Terraform模块,用于在AWS上预配置Elastic MapReduce(EMR)集群

    terraform-aws-emr-集群 Terraform模块可在AWS上预配置Elastic MapReduce(EMR)集群。... 基准测试描述 基础架构安全合规 互联网安全中心,符合KUBERNETES 互联网安全中心,AWS合规 互联网安全中心,符合AZURE 支付卡

    尚gg大数据项目实战电商数仓系统开发教程.txt

    21_数仓采集_项目经验之基准测试.avi 22_数仓采集_项目经验之HDFS参数调优.avi; F" t) F) H7 W' {& L% n3 H ~7 s 23_数仓采集_Zookeeper安装.avi6 c1 v9 x4 \% K5 D. \0 M 24_数仓采集_项目经验之ZK集群启动停止脚本...

Global site tag (gtag.js) - Google Analytics