每当我们在任何数据量上运行任何Map作业时,默认情况下会创建一定数量的地图作业。 我想知道它背后的逻辑。

考虑当我尝试在HDFS上传数据或使用sqoop将数据上传到HIVE时的情况

  • 是否有一些基于数据量的静态工作数,如数学公式。
  • 是否有一些智能系统可以根据监督聚类算法了解您的数据,并在每个Map中对数据进行分组?

我想确切地知道Hadoop如何知道数字,如果Map工作,我试图在互联网上找到答案,但我找不到确切的答复。

===============>>#1 票数:2 已采纳

执行的映射任务数取决于计算的输入拆分数。

计算输入拆分数的逻辑取决于MapReduce作业中使用的InputFormat。

将为每个输入拆分生成一个地图任务,因此如果有3个输入拆分,我们将有3个地图任务

如果您需要以任何方式自定义此逻辑,则可以创建自定义InputFormat

有关更多详细信息,请查看权威指南

===============>>#2 票数:0

每个文件在HDFS中表示为块。 默认块大小为64MB。

(blks)no块大致等于(以mb为单位的数据量)/ 64。

为每个InputSplit创建一个映射器进程。 默认情况下,InputSplit的大小等于块的大小,即64 MB。

为了遵守数据局部性原则,Mapper在该块所在的同一台机器上执行。 因此,映射器的数量将等于没有块。

  ask by Abhishek Choudhary translate from so

未解决问题?本站智能推荐: