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

hadoop job解决大数据量关联时数据倾斜的一种办法

 
阅读更多

数据倾斜是指,map /reduce程序执行时,reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长,这是因为某一个key的条数比其他key多很多(有时是百倍或者千倍之多),这条key所在的reduce节点所处理的数据量比其他节点就大很多,从而导致某几个节点迟迟运行不完。

用hadoop程序进行数据关联时,常碰到数据倾斜的情况,这里提供一种解决方法。

(1)设置一个hash份数N,用来对条数众多的key进行打散。

(2)对有多条重复key的那份数据进行处理:从1到N将数字加在key后面作为新key,如果需要和另一份数据关联的话,则要重写比较类和分发类(方法如上篇《hadoop job解决大数据量关联的一种方法》)。如此实现多条key的平均分发。

int iNum = iNum % iHashNum;

String strKey = key + CTRLC + String.valueOf(iNum) + CTRLB + “B”;

(3)上一步之后,key被平均分散到很多不同的reduce节点。如果需要和其他数据关联,为了保证每个reduce节点上都有关联的key,对另一份单一key的数据进行处理:循环的从1到N将数字加在key后面作为新key

for(int i = 0; i < iHashNum; ++i){

String strKey =key + CTRLC + String.valueOf(i) ;

output.collect(new Text(strKey), new Text(strValues));}

以此解决数据倾斜的问题,经试验大大减少了程序的运行时间。但此方法会成倍的增加其中一份数据的数据量,以增加shuffle数据量为代价,所以使用此方法时,要多次试验,取一个最佳的hash份数值。

======================================

用上述的方法虽然可以解决数据倾斜,但是当关联的数据量巨大时,如果成倍的增长某份数据,会导致reduce shuffle的数据量变的巨大,得不偿失,从而无法解决运行时间慢的问题。

有一个新的办法可以解决 成倍增长数据 的缺陷:

在两份数据中找共同点,比如两份数据里除了关联的字段以外,还有另外相同含义的字段,如果这个字段在所有log中的重复率比较小,则可以用这个字段作为计算hash的值,如果是数字,可以用来模hash的份数,如果是字符可以用hashcode来模hash的份数(当然数字为了避免落到同一个reduce上的数据过多,也可以用hashcode),这样如果这个字段的值分布足够平均的话,就可以解决上述的问题。-

第二种方法并不好把握,也不是很通用

http://www.cnblogs.com/xuxm2007/archive/2011/09/01/2161929.html

分享到:
评论

相关推荐

    数据算法:Hadoop/Spark大数据处理技巧

    数据算法:Hadoop/Spark大数据处理技巧

    win7下hadoop job提交

    在Windows 7环境下提交Hadoop作业(Job)是一项技术性的任务,涉及到多个步骤和概念。首先,我们需要了解Hadoop的基本架构。Hadoop是由Apache软件基金会开发的一个开源分布式计算框架,它允许在廉价硬件上处理和存储...

    Hadoop之外卖订单数据分析系统

    在大数据处理领域,Hadoop是一个不可或缺的开源框架,它为海量数据的存储和处理提供了高效、可靠的解决方案。本文将深入探讨“Hadoop之外卖订单数据分析系统”,并介绍如何利用Hadoop进行大规模数据处理,以及如何将...

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

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

    Hadoop、Hbase大数据处理、数据挖掘

    它的强一致性模型确保了数据的准确性,而其水平扩展能力使其能轻松应对大数据量的增长。HBase适合实时查询和大数据分析场景,如日志分析、物联网数据处理等。 数据挖掘是从大量数据中提取有价值信息的过程,涉及...

    基于Hadoop的股票大数据分析系统.zip

    标题中的“基于Hadoop的股票大数据分析系统”指的是利用Apache Hadoop框架来处理和分析海量的股票市场数据。Hadoop是一个开源的分布式计算框架,它允许在大规模集群中存储和处理大量数据。在这个系统中,Hadoop可能...

    基于Hadoop的电影影评数据分析

    【基于Hadoop的电影影评数据分析】是一项大数据课程的大作业,旨在利用Hadoop的分布式...通过这个项目,学生可以深入理解大数据处理流程,并学习如何利用Hadoop解决实际问题,为未来从事大数据相关工作打下坚实基础。

    Hadoop 的大规模数据交换

    在大数据处理领域,Hadoop 是一个至关重要的开源框架,它为海量数据的存储和处理提供了高效、可扩展的解决方案。本文将深入探讨“Hadoop 的大规模数据交换”这一主题,结合给定的压缩包文件“基于Hadoop 的大规模...

    数据算法: Hadoop+Spark大数据处理技巧.pdf

    《数据算法:Hadoop+Spark大数据处理技巧》是一本深入探讨大数据处理技术的专业书籍,主要聚焦于两大主流的大数据处理框架——Hadoop和Spark。这本书不仅涵盖了基础理论,还提供了丰富的实践指导,对于想要深入了解...

    基于Hadoop的农业大数据挖掘系统构建.pdf

    - 文档提及的“2018, 30(7):19-21”可能是一个与Hadoop或大数据挖掘相关的文章引用,表明在系统构建时参考了该文献的理论或实践。 总之,构建一个基于Hadoop的农业大数据挖掘系统是一个复杂的过程,涉及到数据存储...

    基于Hadoop的农业大数据挖掘系统构建 (1).pdf

    随着农业数据量的剧增,传统数据处理方法已不再适用,而Hadoop作为一种大数据处理框架,为农业大数据的存储、处理和分析提供了新的解决方案。农业数据的特点、数据分析的现状以及大数据技术的应用构成了构建农业大...

    Hadoop大数据分析与挖掘实战.rar

    《Hadoop大数据分析与挖掘实战》是一本专为IT专业人士准备的深度学习资源,它深入探讨了大数据领域中的核心技术和应用。这本书的核心内容围绕Hadoop框架展开,详细讲解了如何利用Hadoop进行大规模数据处理、分析和...

    数据算法 Hadoop Spark大数据处理技巧

    《数据算法:Hadoop/Spark大数据处理技巧》介绍了很多基本设计模式、优化技术和数据挖掘及机器学习解决方案,以解决生物信息学、基因组学、统计和社交网络分析等领域的很多问题。这还概要介绍了MapReduce、Hadoop和...

    Hadoop权威指南天气数据

    《Hadoop权威指南》是大数据处理领域的一本经典著作,它深入浅出地介绍了Hadoop生态系统及其核心组件的使用。本示例中的“Hadoop权威指南天气数据”是指该书中用于演示Hadoop处理任务的数据集,具体包含了1901年和...

    数据算法 Hadoop Spark大数据处理技巧.zip

    《数据算法 Hadoop Spark大数据处理技巧》这本书深入探讨了大数据处理的核心技术和工具,主要涵盖了Hadoop和Spark两个关键框架。大数据是当前信息技术领域的重要趋势,它涉及到如何从海量、多源、快速生成的数据中...

Global site tag (gtag.js) - Google Analytics