想补充一些缺失的概念(ans 让我很困惑)
HDFS
文件存储为块(故障/节点容差)。块大小(64MB-128MB)64MB。所以一个文件被分成块,块存储在集群上的不同节点上。一个块被复制因子复制(默认=3)。
Map-Reduce
已经存储在HDFS中的文件在逻辑上分为INPUT-SPLITS。
分割大小可以由用户设置
Property name Type Default value
mapred.min.split.size int 1
mapred.max.split.sizea long Long.MAX_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 Phase 拆分输入文件,并且您还必须为 Reduce Phase 拆分中间输出(来自 Mapper)。
其他问题:数据一致性、容错性、数据丢失(在hadoop中=1%)。
Map-Reduce 是为分布式计算而设计的,因此在非分布式环境中使用 Map-Reduce 是没有用的。
谢谢