2014-11-06 52 views
0

假设文件XYZ的数据大小为68MB。所以块(默认块为64MB)将是A-64MB和B-4MB。 在B块中,其余空间被另一个数据块占用。处理HADOOP中的最后一个数据块

因此,当对XYZ数据文件进行处理时,A和B块数据将被处理。由于B块 也包含另一个文件的数据,HADOOP在B块的情况 中如何知道块的哪一部分要处理?

回答

1

如果您有68 MB的文件(XYZ),并且假设您的块大小为64MB,那么数据将被拆分为2个块​​。块A将存储64MB数据,然后块B将存储4MB的其余部分,块将被关闭(这里没有空间浪费),其他文件的数据将不会被放入块B.

因此,在处理过程中,MapReduce确切知道要为特定文件处理哪些块。当然,还有其他一些限制,比如输入分割,在处理块来计算记录边界时,MapReduce将其考虑在内。

+0

你的意思是说,在Block B的情况下,它将被再次分成两个块。一个大小为4MB,剩余用于其他数据。对!!! – user4221591 2014-11-06 07:28:58

+1

不,HDFS块只是物理linux文件系统的逻辑抽象,所以第二个块只存储在HDFS中的4 MB逻辑文件和该块的NameNode中的1个元数据条目中。但是在技术上,块的技巧上存储为1000个linux块= 4MB(假设'4KB' ext4块大小)。看看这个[问题](http://stackoverflow.com/questions/15062457/hdfs-block-size-vs-actual-file-size)了解更多信息。 – Ashrith 2014-11-06 07:43:21

相关问题