块HD如何在HDFS中发生?

时间:2017-02-06 11:59:44

标签: hadoop mapreduce hdfs

大数据Hadoop第一代。我是Apache Hadoop的新手。我只是怀疑可能是我的问题无关紧要。

问题:字数统计问题(干调试)。

示例:

文件名:test.txt

文件大小:120 MB

默认块大小:64 MB

文件内容:

Hello StackOverflow
Hi StackOverflow
Hola StackOverflow
Mushi Mushi StackOverflow
.....
.....
.....
Mushi Mushi StackOverflow

块数为:2(64 MB + 56 MB)

第1组包含:

Hello StackOverflow
Hi StackOverflow
Hola StackOverflow
Mushi Mus

第2栏包含:

hi StackOverflow
.....
.....
.....
Mushi Mushi StackOverflow

注意:这里Mushi字在块1和块2之间分裂,因为在单词“Mus”块大小变为64 MB时,剩余字“hi”进入块2。

现在我的问题是: Q1)是否可能出现这种情况?

Q2)如果不是为什么?

Q3)如果是,那么单词计数输出是什么。

Q4)两个块的Mapper输出是什么。

1 个答案:

答案 0 :(得分:0)

MapReduce框架适用于 InputSplit ,而非 HDFS阻止

请查看以下SE帖子,以便更好地了解InputSplit&给定文件的映射器数量。

How does Hadoop process records split across block boundaries?

Default number of reducers

关于你的问题:

  

Q1)是否可能出现这种情况?

是。可能的。

  

Q3)如果是,那么单词计数输出是什么。

Block-2中的数据将复制到正在处理InputSplit的Mapper节点上。

更新

关于评论中的其他查询,请查看Hadoop权威指南中的以下行:

  

FileInputFormats定义的逻辑记录通常不能完全适合HDFS块。例如,a   TextInputFormat的逻辑记录是行,它们通常会越过HDFS边界。这没有   关注你的程序的功能 - 例如,线路不会被遗漏或损坏 - 但值得了解   因为它确实意味着数据本地映射(即,与输入数据在同一主机上运行的映射)   将执行一些远程读取。这导致的轻微开销通常不显着。

如果没有远程读取,则您的HDFS块在Mapper节点中是InputSplit。如果记录跨越Mapper节点的边界,则远程读取将数据提取到第一个Mapper节点,其中存在大部分数据。