hadoop - Mapreduce为什么即使对于很小的文件,拆分(文本文件)的数量也大于1

标签 hadoop split mapreduce

我知道hadoop中的物理块和Inputsplits之间的区别。
顺便说一句,我正在使用Hadoop 2.0版本( yarn 处理)。

我有一个非常小的输入数据集。大小可能是1.5 Mb。当我运行使用此微小数据集的mapredce程序时,在运行期间显示有2个输入拆分。当微型数据集的大小小于128 MB时,为什么应该将其拆分为两个?

在我的理解中,块大小配置为128 MB,输入拆分是数据的逻辑划分。意思是每个拆分从哪里开始(例如在哪个节点和哪个块号)以及在何处结束。数据的开始位置和结束位置是拆分的。

我没有得到在很小的数据集中进行拆分的原因。

有人可以解释吗?
谢谢
纳斯

最佳答案

首先尝试了解如何确定分割数,这取决于两件事:

  • 如果您尚未定义任何自定义拆分大小,则它将采用默认大小,即块大小,在您的情况下为128 MB。
  • 这很重要,现在,如果您有两个小文件,它将保存在两个不同的块中。 因此,拆分数将为2。

  • 您的答案是在上述两点上,这是额外的信息,现在映射器数与拆分数之间的关系为1-1,因此拆分数将与映射器数相同。

    关于hadoop - Mapreduce为什么即使对于很小的文件,拆分(文本文件)的数量也大于1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38044310/

    相关文章:

    hadoop - 从分布式缓存或 HDFS 输出中读取

    java - 在hadoop map reduce中读取矩阵

    Hadoop获取日期之间的时差

    python - Spark中通过reduceByKey()或其他函数来减少作业?

    python - 我想根据特定的单词来划分文件,并且根据这个单词我想要上面的行,然后放入newfile.txt

    hadoop - 使用 spark/scala,我使用 saveAsTextFile() 到 HDFS,但是 hiveql("select count(*) from...) return 0

    hadoop - 在hdfs中找不到仓库

    hadoop - mapreduce 的多表输入

    r - 如何通过R中连续的相同字母拆分字符串

    java - 使用扫描器返回字符串