Hadoop平台上的海量数据排序(1)

&">nbsp;     Yahoo!研究人员使用Hadoop完成了Jim Gray基准排序,此排序包含许多相关的基准,每个基准都有自己的规则。所有的排序基准都是通过测量不同记录的排序时间来制定的,每个记录为100字节, 其中前面的10字节是键,剩余的部分是数值。MinuteSort是比较在一分钟内所排序的数据量大小,GraySort是比较在对大规模数据(至少 100TB)进行排序时的排序速率(TBs/minute)。基准规则具体如下:

输入数据必须与数据生成器生成的数据完全匹配;

任务开始的时候,输入数据不能在操作系统的文件缓存中。在Linux环境下,排序程序之间需要使用内存来交换其他内容;

输入和输出数据都是没有经过压缩的;

输出不能对输入进行重写;

输出文件必须存放到磁盘上;

必须计算输入和输出数据的每个键/值对的CRC32,共128位校验和,当然,输入和输出必须对应相等;

输出如果分成多个输出文件,那么必须是完全有序的,也就是将这些输出文件连接以后必须是完全有序的输出;

开始和分布程序到集群上也要记入计算时间内;

任何抽样也要记入计算时间内。

Yahoo!的研究人员使用Hadoop排列1TB数据用时62秒,排列1PB数据用时16.25个小时,具体如表3-2所示,它获得了Daytona类GraySort和MinuteSort级别的冠军。

表3-2 数据规模与排序时间

下面的内容是根据基准排序的官方网站(http://sortbenchmark.org/)上有关使用Hadoop排序的相关内容整理而成。

Yahoo!的研究人员编写了三个Hadoop应用程序来进行TB级数据的排序:

TeraGen产生数据的map/reduce程序;

TeraSort进行数据取样,并使用map/reduce对数据进行排序;

TeraValidate是用来验证输出数据是否有序的map/reduce程序。

TeraGen用来产生数据,它将数据按行排列并且根据执行任务的数目为每个map分配任务,每个map任务产生所分配行数范围内的数据。最后,TeraGen使用1800个任务产生总共100亿行的数据存储在HDFS上,每个存储块的大小为512MB。

TeraSort是标准的map/reduce排序程序,但这里使用的是不同的分配方法。程序中使用N-1个已排好序的抽样键值来为reduce任 务分配排序数据的行数范围。例如,键值key在范围sample[i-1]<=key<sample[i]的数据会分配给第i个reduce 任务。这样就保证了第i个reduce任务输出的数据都比第i+1个reduce任务输出的数据小。为了加速分配过程,分配器在抽样键值上建立两层的索引 结构树。TeraSort在任务提交之前在输入数据中进行抽样,并将产生的抽样数据写入HDFS中。这里规定了输入输出格式,使得三个应用程序可以正确地 读取并写入数据。reduce任务的副本数默认是3,这里设置为1,因为输出数据不需要复制到多个节点上。这里配置的任务为1800个map任务和 1800个reduce任务,并为任务的栈设置了充足的空间,防止产生的中间数据溢出到磁盘上。抽样器使用100 000个键值来决定reduce任务的边界,如图3-9所示,分布并不是很完美。

TeraValidate保证输出数据是全部排好序的,它为输出目录的每个文件分配一个map任务(如图3-10所示),map任务检查每个值是否 大于等于前一个值,同时输出最大值和最小值给reduce任务,reduce任务检查第i个文件的最小值是否大于第i-1文件的最大值,如果不是则产生错 误报告。

图3-9 reduce任务的输出大小和完成时间分布图

以上应用程序运行在雅虎搭建的集群上,其集群配置为:

910个节点;

每个节点拥有4个英特尔双核2.0GHz至强处理器;

每个节点拥有4个SATA硬盘;

每个节点有8GB的内存;

每个节点有1GB的以太网带宽;

40个节点一个rack;

每个rack到核心有8GB的以太网带宽;

操作系统为Red Hat Enterprise Linux Server 920.html">Release 5.1(kernel 2.6.18);

JDK为Sun Java JDK 1.6.0_05-b13。

整个排序过程在209秒(3.48分钟)内完成,尽管拥有910个节点,但是网络核心是与其他2000个节点的集群共享的,所以运行时间会因为其他集群的活动而有所变化。

时间: 2024-09-19 16:16:15

Hadoop平台上的海量数据排序(1)的相关文章

Hadoop平台上的海量数据排序(2)

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   使用Hadoop进行 GraySort基准排序时,Yahoo!的研究人员将上面的map/reduce应用程序稍加修改以适应新的规则,整个程序分为4个部分,分别为: TeraGen是产生数据的map/reduce程序: TeraSort进行数据取样,并使用map/reduce对数据进行排序: TeraSum是map/reduce程序,用来计算每个键/值对的CRC3

小文本语料库在Hadoop平台上的存储策略研究

小文本语料库在Hadoop平台上的存储策略研究 华中师范大学 郑丽洁 为了解决小文本语料库在Hadoop平台存储中,出现上述分布式存储与检索速度间的矛盾问题,本文提出了一种新的HSCS(Hadoop Smalltexts Corpus Storage)存储策略.该策略首先使用小文本合并技术在HDFS架构中添加一层Merge_Client,将多个小文本文件合并为目录结构式的大文本文件,有效减少了内存压力和访问DataNode的次数:然后采用小文件检索技术,给合并后的大文本文件添加一个二级索引结构及

Hadoop平台上煤矿企业储备定额算法并行化研究与应用

Hadoop平台上煤矿企业储备定额算法并行化研究与应用 内蒙古科技大学  张翔 本文提出基于Hadoop云计算平台的备件消耗量预测系统.该系统分为数据获取模块.数据存储模块.数据预处理模块和备件消耗量预测模块四部分.其中,数据获取模块利用某煤炭集团公司的ERP系统Web Service接口来获取用户数据;数据存储模块中将数据获取模块中获取的备件数据按设计的数据格式存入本地Oracle数据库中;数据预处理模块利用VS2010开发程序将数据库中备件数据按要求进行处理,得到我们需要的数据格式的数据,通

c/c++上传大文件到hadoop平台的效率选择

问题描述 学生党问一个问题...c/c++程序中要把大文件存储到hadoop平台上要怎么选择呢?1.readfile.openfileinhadoop.while(write())2.调用linux的系统操作命令 解决方案 解决方案二:http://hadoop.apache.org/docs/r0.19.1/libhdfs.html#include"hdfs.h"intmain(intargc,char**argv){hdfsFSfs=hdfsConnect("defaul

在CentOS版本的Linux上结合Hadoop平台安装mahout报错

问题描述 在CentOS版本的Linux上结合Hadoop平台安装mahout报错 在CentOS版本的Linux上结合Hadoop平台安装mahout运行时显示错误JAVA__HOME is not set怎么解决?Hadoop平台是1.2.1版本的:mahout是0.9版本的.如图是我的/etc/profile文件. 解决方案 http://blog.sina.com.cn/s/blog_5988cec90101g1p0.html 解决方案二: 你那图的最后一句javahome怎么又给设置成

在CentOS版本的Linux上结合Hadoop平台安装mahout的配置错误

问题描述 在CentOS版本的Linux上结合Hadoop平台安装mahout运行时显示错误JAVA_HOMEisnotset怎么解决?Hadoop平台是1.2.1版本的:mahout是0.9版本的.如图是我的/etc/profile文件. 解决方案

Hadoop平台的基本组成与生态系统

Hadoop系统运行于一个由普通商用服务器组成的计算集群上,该服务器集群在提供大规模分布式数据存储资源的同时,也提供大规模的并行化计算资源. 在大数据处理软件系统上,随着Apache Hadoop系统开源化的发展,在最初包含HDFS.MapReduce.HBase等基本子系统的基础上,至今Hadoop平台已经演进为一个包含很多相关子系统的完整的大数据处理生态系统.图1-15展示了Hadoop平台的基本组成与生态系统. 1.MapReduce并行计算框架 MapReduce并行计算框架是一个并行化

高可用Hadoop平台-Flume NG实战图解篇

1.概述 今天补充一篇关于Flume的博客,前面在讲解高可用的Hadoop平台的时候遗漏了这篇,本篇博客为大家讲述以下内容: Flume NG简述 单点Flume NG搭建.运行 高可用Flume NG搭建 Failover测试 截图预览 下面开始今天的博客介绍. 2.Flume NG简述 Flume NG是一个分布式,高可用,可靠的系统,它能将不同的海量数据收集,移动并存储到一个数据存储系统中.轻量,配置简单,适用于各种日志收集,并支持Failover和负载均衡.并且它拥有非常丰富的组件.Fl

高可用Hadoop平台-实战

1.概述 今天继续<高可用的Hadoop平台>系列,今天开始进行小规模的实战下,前面的准备工作完成后,基本用于统计数据的平台都拥有了,关于导出统计结果的文章留到后面赘述.今天要和大家分享的案例是一个基于电商网站的用户行为分析,这里分析的指标包含以下指标: 统计每日PV 每日注册用户 每日IP 跳出用户 其他指标可以参考上述4个指标进行拓展,下面我们开始今天的分析之旅. 2.流程 首先,在开发之前我们需要注意哪些问题?我们不能盲目的按照自己的意愿去开发项目,这样到头来得不到产品的认可,我们的工作