`
thd52java
  • 浏览: 71985 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hadoop数据排序(一)

阅读更多

1、概述

1TB排序通常用于衡量分布式数据处理框架的数据处理能力。Terasort是Hadoop中的的一个排序作业。那么Terasort在Hadoop中是怎样实现的呢?本文主要从算法设计角度分析Terasort作业。

2、算法思想

实 际上,当我们要把传统的串行排序算法设计成并行的排序算法时,通常会想到分而治之的策略,即:把要排序的数据划成M个数据块(可以用Hash的 方法做 到),然后每个map task对一个数据块进行局部排序,之后,一个reduce task对所有数据进行全排序。这种设计思路可以保证在 map阶段并行度很高,但在reduce阶段完全没有并行。

为 了提高reduce阶段的并行度,TeraSort作业对以上算法进行改进:在map阶段,每个map task都会将数据划分成R个数据块 (R为reduce task个数),其中第i(i>0)个数据块的所有数据都会比第i+1个中的数据大;在reduce阶段,第i个 reduce task处理(进行排序)所有map task的第i块,这样第i个reduce task产生的结果均会比第i+1个大,最后将1~R个 reduce task的排序结果顺序输出,即为最终的排序结果。这种设计思路很明显比第一种高效,但实现难度较大,它需要解决以下两个技术难点:第一, 如何确定每个 map task数据的R个数据块的范围? 第二,对于某条数据,如果快速的确定它属于哪个数据块?答案分别为【采样】和【trie树】。

3、Terasort算法

3.1  Terasort算法流程

对于Hadoop的Terasort排序算法,主要由3步组成:采样 –>> map task对于数据记录做标记 –>> reduce task进行局部排序。

数据采样在JobClient端进行,首先从输入数据中抽取一部分数据,将这些数据进行排序,然后将它们划分成R个数据块,找出每个数据块的数据上限和下线(称为“分割点”),并将这些分割点保存到分布式缓存中。

在 map阶段,每个map task首先从分布式缓存中读取分割点,并对这些分割点建立trie树(两层trie树,树的叶子节点上保存有该节点 对应的reduce task编号)。然后正式开始处理数据,对于每条数据,在trie树中查找它属于的reduce task的编号,并保存起来。

在reduce阶段,每个reduce task从每个map task中读取其对应的数据进行局部排序,最后将reduce task处理后结果按reduce task编号依次输出即可。

3.2    Terasort算法关键点

(1)采样

Hadoop自带了很多数据采样工具,包括IntercalSmapler,RandomSampler,SplitSampler等(具体见org.apache.hadoop.mapred.lib)。

采样数据条数:sampleSize = conf.getLong(“terasort.partitions.sample”, 100000);

选取的split个数:samples = Math.min(10, splits.length); splits是所有split组成的数组。

每个split提取的数据条数:recordsPerSample = sampleSize / samples;

对采样的数据进行全排序,将获取的“分割点”写到文件_partition.lst中,并将它存放到分布式缓存区中。

举例说明:比如采样数据为b,abc,abd,bcd,abcd,efg,hii,afd,rrr,mnk

经排序后,得到:abc,abcd,abd,afd,b,bcd,efg,hii,mnk,rrr

如果reduce task个数为4,则分割点为:abd,bcd,mnk

(2)map task对数据记录做标记

每个map task从文件_partition.lst读取分割点,并创建trie树(假设是2-trie,即组织利用前两个字节)。

Map task从split中一条一条读取数据,并通过trie树查找每条记录所对应的reduce task编号。比如:abg对应第二个reduce task, mnz对应第四个reduce task。

 

(3)reduce task进行局部排序

每个reduce task进行局部排序,依次输出结果即可。

分享到:
评论

相关推荐

    《Hadoop海量数据处理》高清完整PDF版

    本书《Hadoop海量数据处理》是一本专注于Hadoop技术的专业技术书籍,旨在向读者介绍Hadoop生态系统的关键组件、核心概念以及在处理海量数据时的应用方法。全书分为基础篇、应用篇和总结篇三个部分,全面涵盖了Hadoop...

    第四章(Hadoop大数据处理实战)Hadoop分布式文件系统.pdf

    第四章(Hadoop大数据处理实战)Hadoop分布式文件系统.pdf第四章(Hadoop大数据处理实战)Hadoop分布式文件系统.pdf第四章(Hadoop大数据处理实战)Hadoop分布式文件系统.pdf第四章(Hadoop大数据处理实战)Hadoop分布式文件...

    第五章(Hadoop大数据处理实战)Hadoop的IO操作.pdf

    第五章(Hadoop大数据处理实战)Hadoop的IO操作.pdf第五章(Hadoop大数据处理实战)Hadoop的IO操作.pdf第五章(Hadoop大数据处理实战)Hadoop的IO操作.pdf第五章(Hadoop大数据处理实战)Hadoop的IO操作.pdf第五章(Hadoop大...

    第二章(Hadoop大数据处理实战)搭建Hadoop分布式集群.pdf

    第二章(Hadoop大数据处理实战)搭建Hadoop分布式集群.pdf第二章(Hadoop大数据处理实战)搭建Hadoop分布式集群.pdf第二章(Hadoop大数据处理实战)搭建Hadoop分布式集群.pdf第二章(Hadoop大数据处理实战)搭建Hadoop分布式...

    4703031《Hadoop大数据处理实战》(康开锋)423-1资源包.rar

    《Hadoop大数据处理实战》是康开锋撰写的一本深入探讨Hadoop技术的书籍,旨在帮助读者理解并掌握Hadoop在大数据处理中的实际应用。这本书的内容涵盖了Hadoop生态系统的核心组件,以及如何利用这些组件解决实际问题。...

    hadoop海量数据处理详解与项目实战

    由于给定的文件内容部分涉及到PDF电子书的提供信息,并非技术知识点,故这部分内容将被忽略,重点将放在标题与描述所提到的Hadoop海量数据处理技术上。 Hadoop是一个由Apache软件基金会开发的开源框架,旨在支持...

    Hadoop数据迁移--从Oracle向Hadoop

    Hadoop数据迁移是指将存储在传统数据库系统(如Oracle)中的数据转移到Hadoop文件系统(HDFS)的过程。在这个过程中,MapReduce作为一种编程模型,用于处理和生成大数据集,被用来连接Hadoop与Oracle数据库,使得...

    DATAGURU-Hadoop数据分析平台

    总的来说,DATAGURU-Hadoop数据分析平台是一个全面的解决方案,集成了Hadoop的关键组件和技术,旨在简化大数据处理流程,提升数据分析效率,帮助企业从海量数据中获取关键洞见。对于希望提升自身大数据处理和分析...

    Hadoop数据分析_大数据_hadoop_数据分析_

    在大数据的世界里,Hadoop是不可或缺的一个核心组件,它为海量数据处理提供了高效、可靠的解决方案。本主题将深入探讨Hadoop在数据分析中的应用及其生态系统的关键技术。 首先,我们需要理解“大数据”的概念。...

    hbase和hadoop数据块损坏处理

    一、HDFS 坏块数据处理 HDFS 坏块数据的处理通常是由挂了两台以上的机器导致的。因此,需要检查集群机器是否挂了多台,然后检查 HDFS 状态。如果不健康,需要确定有损坏的块,列出损坏块,然后删除全部的损坏块。...

    Hadoop构建数据仓库实践1_hadoop_

    在大数据处理领域,Hadoop是一个不可或缺的关键工具,它以其分布式计算框架著称,为企业和组织提供了海量数据存储和处理的能力。本实践指南将深入探讨如何利用Hadoop来构建高效的数据仓库系统,以此来提升数据分析的...

    hadoop海量数据处理.pdf

    总结来说,Hadoop是一个强大的大数据处理框架,其核心组件HDFS和MapReduce为企业提供了处理海量数据的能力。通过不断扩展的生态系统,Hadoop能够满足各种复杂的数据处理需求,是当今大数据时代不可或缺的技术之一。

    数据算法--HadoopSpark大数据处理技巧.pdf

    这份“数据算法--HadoopSpark大数据处理技巧”文档显然探讨了如何利用这两个工具进行复杂的数据操作,具体涉及到Scala编程实现的两个重要算法:Secondary Sort(二级排序)和Common Friends(共同朋友计算)。...

    Hadoop大数据处理技术基础与实践(第2版)(微课版)PPT-课件.rar

    《Hadoop大数据处理技术基础与实践(第2版)(微课版)PPT-课件》是一个关于Hadoop在大数据处理领域的核心课程资源。这个压缩包包含了丰富的教学资料,帮助学习者深入理解和掌握Hadoop生态系统的核心概念和技术。...

    hadoop数据分析

    《Hadoop数据分析》一书是O'Reilly出版社的力作,专为那些希望深入理解如何利用Hadoop进行大规模数据处理和分析的专业人士所撰写。这本书详细地探讨了Hadoop生态系统中的核心组件,以及如何利用这些工具来解决实际的...

    大数据处理框架:Hadoop:Hadoop数据处理框架Pig.docx

    大数据处理框架:Hadoop:Hadoop数据处理框架Pig.docx

    烟草企业基于Hadoop的数据处理研究.pdf

    "烟草企业基于Hadoop的数据处理研究" 本文主要研究了烟草企业基于Hadoop的数据处理研究,讨论了Hadoop平台的技术架构和项目结构,以及在烟草企业中的应用。 一、Hadoop简介 Hadoop是一个开源分布式计算平台,具有...

    Hadoop海量数据处理

    在大数据处理领域,Hadoop是一个不可或缺的关键工具,它专为处理和存储大量数据而设计。本文将深入探讨Hadoop在海量数据处理中的核心概念、架构以及应用。 **Hadoop核心概念** 1. **分布式文件系统(HDFS)**: ...

    Hadoop海量数据处理:技术详解与项目实战 pdf

    Hadoop作为一个强大的大数据处理平台,在处理海量数据方面展现出了极高的效率和灵活性。通过HDFS和MapReduce两大核心技术,Hadoop能够轻松应对PB级数据的存储和处理挑战。对于那些希望利用大数据提升业务价值的企业...

Global site tag (gtag.js) - Google Analytics