mapreducehadoop中输入分裂数与Map器数的关系

disbfnqx  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(233)

我是hadoop和map-reduce模型的新手,我正在尝试正确的概念。
我想首先得到正确的输入分裂和Map器数量的概念。
我正在运行mapreduce wordcount程序,下面是我的问题。
1) 如何确定输入分割?我用两个不同大小的输入在同一个集群上运行相同的程序。

file 1 : size 48mb. => i got number of splits:1 in log.
file 2: size 126mb => number of splits : 1 
file 2 : size 126mb ( executed in eclipse IDE) => number of splits: 4

126 mb文件的拆分数不应等于2?因为我读到块大小是64MB。因此,它必须创建两个分裂。
2) Map绘制者的数量是如何确定的?我试图通过下面的一行,让更多的Map绘制者了解mapreduce的工作流程。

conf.get("mapred.map.tasks")

每次返回2。
3) 分裂的数目和Map器的数目有关系吗?
4) 做以上事情要看集群吗?伪分布式模式和其他集群模式是相同的还是不同的?
谢谢您。

qoefvg9y

qoefvg9y1#

在mapreduce中 InputFormat 类负责提供分割的信息。输入分割是进入一个Map任务的数据量。
在hadoop2.4中,默认块大小是128mb,因此您将看到126mb文件的1个分割。
Map器的数目由输入路径的拆分数目决定,假设您在一个有10个文件的目录上处理,并且每个文件由10个拆分组成,那么您的作业将需要100个Map器来处理数据。
是的,就像我在大多数情况下说的 number of splits = number of mappers 除非hadoop知道如何计算分裂。例如,压缩文件格式(如gzip)在这种情况下不可拆分 number of files = number of mappers .
不,对于伪模式和簇模式也是一样的。
更多信息:
默认拆分大小和更改拆分大小
如何计算拆分
跨块边界的记录拆分

相关问题