Input MapReduce中输入拆分的主要原因是什么?

Input MapReduce中输入拆分的主要原因是什么?,input,split,mapreduce,Input,Split,Mapreduce,在中,描述了以M个输入拆分对输入文件进行分区。我知道Hadoop中的HDFS会自动对64MB的块进行分区(默认),然后将这些块复制到集群中的其他几个节点,以提供容错能力。我想知道HDFS中的文件分区是否意味着上述MapReduce文章中描述的输入拆分。容错是导致这种分裂的唯一原因还是有更重要的原因 如果在没有分布式文件系统的节点集群上使用MapReduce(数据仅在具有公共文件系统的本地磁盘上),该怎么办?在映射阶段之前,是否需要拆分本地磁盘上的输入文件 谢谢你的回答 I'd like to k

在中,描述了以M个输入拆分对输入文件进行分区。我知道Hadoop中的HDFS会自动对64MB的块进行分区(默认),然后将这些块复制到集群中的其他几个节点,以提供容错能力。我想知道HDFS中的文件分区是否意味着上述MapReduce文章中描述的输入拆分。容错是导致这种分裂的唯一原因还是有更重要的原因

如果在没有分布式文件系统的节点集群上使用MapReduce(数据仅在具有公共文件系统的本地磁盘上),该怎么办?在映射阶段之前,是否需要拆分本地磁盘上的输入文件

谢谢你的回答

I'd like to know if this partitioning of files in HDFS means the input splitting described in mentioned MapReduce papers.
不,MapReduce中的输入拆分是为了在reduce阶段利用多个处理器的计算能力。映射器接收大量数据并将数据拆分为逻辑分区(大多数情况下由程序员自定义映射器实现指定)。然后,这些数据进入各个节点,在这些节点上,称为reducer的独立进程执行数据处理,然后最终整理结果

Is fault tolerance single reason of this splitting or are there more important reasons?
不,这不是这样做的唯一原因。您可以将其与文件系统级别的块大小进行比较,以确保将数据传输到块中、按块压缩数据以及分配I/O缓冲区

想添加一些缺少的概念(ans让我感到困惑)



HDFS

文件存储为块(容错/节点容错)。块大小(64MB-128MB)为64MB。所以一个文件被划分成块,块存储在集群的不同节点上。正在通过复制因子(默认值=3)复制块

地图缩小

已存储在HDFS中的文件在逻辑上划分为输入拆分。 拆分大小可由用户设置

Property name           Type   Default value

然后通过以下公式计算分割大小:

max(minimumSize,min(maximumSize,blockSize))

注意::拆分是合乎逻辑的



希望现在回答你的问题

 I'd like to know if this partitioning of files in HDFS means the input splitting described in mentioned MapReduce papers. 
不,不是所有HDFS块和Map Reduce拆分都是一回事

Is fault tolerance single reason of this splitting or are there more important reasons?
不,分布式计算将是原因

And what if I have MapReduce over cluster of nodes without distributed file system (data only on local disks with common file sytem)? Do I need to split input files on local disk before map phase?

在您的情况下,我想,是的,您将不得不为Map阶段拆分输入文件,并且还必须为Reduce阶段拆分中间输出(来自Mapper)。 其他问题:数据的一致性、容错性、数据丢失(在hadoop中,its=1%)

Map-Reduce是为分布式计算而设计的,所以在非分布式环境中使用Map-Reduce是没有用的


谢谢你的回答,但我不太明白第一段的答案。“映射器接收大量数据并拆分数据”-因此映射器首先将输入文件拆分为M个拆分,然后在N个map worker节点上使用map函数执行整个M个进程,其中一个进程生成一个带有中间键:值对的排序和分区文件?然后将这些文件中的分区发送到相应的还原器?映射的输出不一定要进行排序。这取决于您在映射器中实现的逻辑。Rest“因此映射器首先将输入文件拆分为M个拆分,然后在N个map worker节点上使用map函数执行整个M个进程,其中一个进程生成一个带有中间键:值对的已排序和分区文件?然后将这些文件中的分区发送到相应的还原器”-是,这是真的。谢谢你详细的回答。我已经理解了我的大部分问题,但你对我最后一个问题的回答对我来说仍然不清楚。也许有个问题我还是看不出来。我理解拆分问题,所以我可以将最后一个问题改为:“是否可以在没有分布式文件系统的节点集群上使用MapReduce?”我的意思是,我的集群有20个节点,具有相同的数据方案,但这些数据不存储在具有分布式文件系统(HDFS、GFS)的本地磁盘上但在使用NTFS(或ext3或NTFS或任何其他非分布式FS)的本地磁盘上。我不谈论Hadoop,而是谈论一般的MapReduce模型。我知道在前面的评论中描述的示例集群中,不会有自动复制(如果未实现)和分布式文件系统的其他优点,但我想知道是否有其他(对我来说未知)问题使MapReduce超过描述的集群。在您的情况下,我想,是的,您必须为Map阶段拆分输入文件,也必须为Reduce阶段拆分中间输出(来自Mapper)。其他问题:数据的一致性、容错性、数据丢失(在hadoop中,its=1%)。
And what if I have MapReduce over cluster of nodes without distributed file system (data only on local disks with common file sytem)? Do I need to split input files on local disk before map phase?