每当我们在任何数据卷上运行任何Map作业时,默认情况下会创建一定数量的Map作业。我想知道背后的逻辑。考虑一下我尝试在hdfs上上传数据或使用sqoop将数据上传到hive时的情况是否存在基于数据量(如数学公式)的静态作业数。有没有一个智能系统能够理解你的数据,它基于有监督的聚类算法,并对每个Map中的数据进行分组?我想知道hadoop到底是如何知道map jobs的数字的,我试图在internet上找到答案,但是我找不到确切的答案。
zf9nrax11#
每个文件在hdfs中表示为块。默认块大小为64mb。块的(blks)数量大致等于(以mb为单位的数据量)/64。为每个inputsplit创建Map程序进程。默认情况下,inputsplit的大小等于块的大小,即64 mb。为了遵守数据局部性原则,Map器在块所在的同一台机器上执行。所以Map器的数量等于块的数量。
qv7cva1a2#
执行的Map任务数取决于计算的输入拆分数。计算输入拆分数的逻辑取决于mapreduce作业中使用的inputformat。一个Map任务将为每个输入分割产生,所以如果有3个输入分割,我们将有3个Map任务如果需要自定义此逻辑,可以创建自定义输入格式更多细节请看权威指南
2条答案
按热度按时间zf9nrax11#
每个文件在hdfs中表示为块。默认块大小为64mb。
块的(blks)数量大致等于(以mb为单位的数据量)/64。
为每个inputsplit创建Map程序进程。默认情况下,inputsplit的大小等于块的大小,即64 mb。
为了遵守数据局部性原则,Map器在块所在的同一台机器上执行。所以Map器的数量等于块的数量。
qv7cva1a2#
执行的Map任务数取决于计算的输入拆分数。
计算输入拆分数的逻辑取决于mapreduce作业中使用的inputformat。
一个Map任务将为每个输入分割产生,所以如果有3个输入分割,我们将有3个Map任务
如果需要自定义此逻辑,可以创建自定义输入格式
更多细节请看权威指南