`

Hadoop中map数的计算

 
阅读更多

Hadoop中在计算一个JOB需要的map数之前首先要计算分片的大小。计算分片大小的公式是:

goalSize = totalSize / mapred.map.tasks

minSize = max {mapred.min.split.size, minSplitSize}

splitSize = max (minSize, min(goalSize, dfs.block.size))

totalSize是一个JOB的所有map总的输入大小,即Map input bytes。参数mapred.map.tasks的默认值是2,我们可以更改这个参数的值。计算好了goalSize之后还要确定上限和下限。

下限是max {mapred.min.split.size, minSplitSize} 。参数mapred.min.split.size的默认值为1个字节,minSplitSize随着File Format的不同而不同。

上限是dfs.block.size,它的默认值是64兆。

举几个例子,例如Map input bytes100兆,mapred.map.tasks默认值为2,那么分片大小就是50兆;如果我们把mapred.map.tasks改成1,那分片大小就变成了64兆。

计算好了分片大小之后接下来计算map数。Map数的计算是以文件为单位的,针对每一个文件做一个循环:

1.   文件大小/splitsize>1.1,创建一个split,这个split的大小=splitsize,文件剩余大小=文件大小-splitsize

2.   文件剩余大小/splitsize<1.1,剩余的部分作为一个split

举几个例子:

1.   input只有一个文件,大小为100M,splitsize=blocksize,map数为2,第一个map处理的分片为64M,第二个为36M

2.   input只有一个文件,大小为65M,splitsize=blocksize,则map数为1,处理的分片大小为65M (因为65/64<1.1

3.   input只有一个文件,大小为129M,splitsize=blocksize,则map数为2,第一个map处理的分片为64M,第二个为65M

4.   input有两个文件,大小为100M20M,splitsize=blocksize,map数为3,第一个文件分为两个map,第一个map处理的分片为64M,第二个为36M,第二个文件分为一个map,处理的分片大小为20M

5.   input10个文件,每个大小10Msplitsize=blocksize,则map数为10,每个map处理的分片大小为10M

再看2个更特殊的例子:

1.   输入文件有2个,分别为40M20Mdfs.block.size = 64M mapred.map.tasks采用默认值2。那么splitSize = 30M map数实际为3,第一个文件分为2map,第一个map处理的分片大小为30M,第二个map10M;第二个文件分为1map,大小为20M

2.   输入文件有2个,分别为40M20Mdfs.block.size = 64M mapred.map.tasks手工设置为1

那么splitSize = 60M map数实际为2,第一个文件分为1map,处理的分片大小为40M;第二个文件分为1map,大小为20M

通过这2个特殊的例子可以看到mapred.map.tasks并不是设置的越大,JOB执行的效率就越高。同时,Hadoop在处理小文件时效率也会变差。

根据分片与map数的计算方法可以得出结论,一个map处理的分片最大不超过dfs.block.size * 1.1 ,默认情况下是70.4兆。但是有2个特例:

1.   Hive中合并小文件的map only JOB,此JOB只会有一个或很少的几个map

2.   输入文件格式为压缩的Text File,因为压缩的文本格式不知道如何拆分,所以也只能用一个map

分享到:
评论

相关推荐

    hadoop中map/reduce

    在大数据处理领域,Hadoop是不可或缺的核心框架,其核心组件MapReduce则是分布式计算的重要实现方式。MapReduce的设计理念源于Google的同名论文,它通过将大规模数据处理任务分解为两个阶段:Map(映射)和Reduce...

    hadoop map-reduce turorial

    Hadoop Map-Reduce框架是设计用于处理大规模数据集(多太字节级)的软件框架,它允许在大量廉价硬件集群上(可达数千节点)进行并行处理,确保了数据处理的可靠性与容错性。此教程全面介绍了Hadoop Map-Reduce框架的...

    hadoop map reduce 中文教程

    在 Hadoop MapReduce 中,分布式计算是其核心功能之一。它通过将大数据集分割成多个小数据块(称为“split”),然后将这些数据块分配到不同的节点上进行并行处理。这种设计使得 Hadoop 能够有效地利用大量计算机...

    Hadoop存储与计算分离实践PDF

    本主题“Hadoop存储与计算分离实践”聚焦于Hadoop生态系统中的核心概念,旨在提升系统性能和效率。这一实践是现代大数据架构中一个重要的设计理念,允许存储和计算资源独立扩展,从而实现更灵活、高效的资源管理和...

    基于Hadoop架构的分布式计算和存储技术及其应用.pdf

    而MapReduce是Hadoop的另一个核心组件,它是一种分布式计算模型,通过Map(映射)和Reduce(归约)两个阶段对大规模数据集进行处理。Map阶段将输入数据分割成独立的块,并进行并行处理,产生一系列中间结果。Reduce...

    Windows平台下Hadoop的Map/Reduce开发

    在Windows平台上进行Hadoop的Map/Reduce开发可能会比在Linux环境下多一些挑战,但通过详细的步骤和理解Map/Reduce的工作机制,开发者可以有效地克服这些困难。以下是对标题和描述中涉及知识点的详细说明: **Hadoop...

    使用Hadoop中的MapReduce计算框架可以对数字文本分析及求和

    使用Hadoop中的MapReduce计算框架可以对数字文本分析及求和,当遇到大规模数据时,使用别的编程语言会使得计算过程变得复杂,但使用MapReduce并行计算框架只需编写map函数和reduce函数即可,简单方便.zip

    炼数成金hadoop完整课件(8)

    在"炼数成金hadoop完整课件(8)"中,你将深入学习这两个组件以及相关的生态系统。 1. **Hadoop分布式文件系统(HDFS)**:HDFS是Hadoop的基础,是一个高度容错性的文件系统,设计时考虑了硬件故障的常态。HDFS将大...

    Hadoop进行分布式计算的入门资料

    这篇入门资料将引导我们了解如何利用Hadoop进行分布式计算。 一、Hadoop概述 Hadoop的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce。HDFS是一种分布式文件系统,能够存储大量数据并保证其高可用...

    远程调用执行Hadoop Map/Reduce

    在IT行业中,分布式计算系统是处理大规模数据的关键技术之一,Hadoop MapReduce就是其中的典型代表。本篇文章将深入探讨“远程调用执行Hadoop Map/Reduce”的概念、原理及其实现过程,同时结合标签“源码”和“工具...

    hadoop,map,reduce,hdfs

    Hadoop通过将大数据集分割成小块,并将这些数据块分配到集群中的各个节点上进行处理,从而实现了高效的并行计算能力。这种分布式计算模式非常适合处理海量数据,因为它可以显著提高数据处理速度。 #### 安装Hadoop ...

    最高气温 map reduce hadoop 实例

    MapReduce是一种编程模型,用于大规模数据集的并行计算,由Google提出并在Hadoop中得以实现。 【描述】:“运行命令hadoop jar ‘/home/hadoop/downloas/max.jar’ upload.MaxTemperature” 这里执行的命令是启动...

    基于hadoop计算机平均分

    【标题】"基于Hadoop计算机平均分"是一个关于利用Java编程语言和Apache Hadoop框架来计算数据集中的平均分数的项目。Hadoop是大数据处理领域的一个核心工具,它提供了分布式存储(HDFS)和分布式计算(MapReduce)的...

    Hadoop Map-Reduce教程

    在 Hadoop Map-Reduce 中,数据处理过程主要分为两个阶段:**Map 阶段** 和 **Reduce 阶段**。 ##### Map 阶段 Map 函数接收输入数据块,并将其转换为一系列键值对。这一阶段的主要任务是对输入数据进行预处理,...

    Hadoop Map Reduce教程

    - **YARN**:YARN (Yet Another Resource Negotiator) 是 Hadoop 2.x 版本引入的新资源管理系统,它使得 Hadoop 集群能够运行多种类型的计算任务。 - **Hive**:Hive 是一个数据仓库工具,允许用户通过 SQL 查询来...

    java操作hadoop之mapreduce计算整数的最大值和最小值实战源码

    本教程将详细讲解如何使用Java编程语言操作Hadoop的MapReduce来计算整数序列中的最大值和最小值,这对于数据分析和处理任务来说是非常基础且实用的技能。 首先,我们需要理解MapReduce的工作原理。MapReduce是一种...

    基于Hadoop-Map Reduce的算法.zip

    MapReduce是Google提出的一种分布式计算模型,它将复杂的并行计算任务分解为两个主要阶段:Map(映射)和Reduce(规约)。Map阶段负责将原始输入数据分割成多个键值对,并分别处理;Reduce阶段则负责对Map阶段产生的...

    Hadoop2.7.1中文文档

    在Hadoop2.7.1中,引入了YARN(Yet Another Resource Negotiator),它作为资源管理器,负责调度集群中的计算资源,提高了系统的资源利用率和任务调度效率。YARN将原本由JobTracker承担的任务调度和资源管理职责分离...

Global site tag (gtag.js) - Google Analytics