hadoop—基于数据量创建的Map作业数

r1zhe5dt  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(400)

每当我们在任何数据卷上运行任何Map作业时,默认情况下会创建一定数量的Map作业。我想知道背后的逻辑。
考虑一下我尝试在hdfs上上传数据或使用sqoop将数据上传到hive时的情况
是否存在基于数据量(如数学公式)的静态作业数。
有没有一个智能系统能够理解你的数据,它基于有监督的聚类算法,并对每个Map中的数据进行分组?
我想知道hadoop到底是如何知道map jobs的数字的,我试图在internet上找到答案,但是我找不到确切的答案。

zf9nrax1

zf9nrax11#

每个文件在hdfs中表示为块。默认块大小为64mb。
块的(blks)数量大致等于(以mb为单位的数据量)/64。
为每个inputsplit创建Map程序进程。默认情况下,inputsplit的大小等于块的大小,即64 mb。
为了遵守数据局部性原则,Map器在块所在的同一台机器上执行。所以Map器的数量等于块的数量。

qv7cva1a

qv7cva1a2#

执行的Map任务数取决于计算的输入拆分数。
计算输入拆分数的逻辑取决于mapreduce作业中使用的inputformat。
一个Map任务将为每个输入分割产生,所以如果有3个输入分割,我们将有3个Map任务
如果需要自定义此逻辑,可以创建自定义输入格式
更多细节请看权威指南

相关问题