hdfs中的块划分是如何发生的?

rkkpypqq  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(272)

大数据hadoop第一代。我对apachehadoop非常陌生。我只是怀疑我的问题是否无关紧要。
问题:字数问题(干调试)。
例子:
文件名: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”块大小变成64mb时,剩余的单词“hi”进入块2。
现在我的问题是:q1)这是可能的情景吗?
问题2)如果没有,为什么?
q3)如果是,那么输出的字数是多少。
q4)两个块的Map器输出是什么。

g52tjvyc

g52tjvyc1#

mapreduce框架工作于inputsplit而不是hdfs块。
请看下面的se post,以便更好地了解给定文件的inputsplit和Map器数量。
hadoop进程记录是如何跨越块边界分割的?
默认减速器数量
关于您的问题:
问题1)是否可能出现这种情况?
对。可能吧。
q3)如果是,那么输出的字数是多少。
块2中的数据将被复制到正在处理inputsplit的mapper节点上。
更新:
关于您在评论中的其他查询,请参阅hadoop权威指南的下一行:
fileinputformats定义的逻辑记录通常不能整齐地放入hdfs块中。例如,textinputformat的逻辑记录是行,这通常会跨越hdfs边界。这与程序的功能没有关系(例如,行不会丢失或中断),但值得了解,因为这确实意味着数据本地Map(即,与输入数据在同一主机上运行的Map)将执行一些远程读取。这导致的轻微开销通常不显著。
在没有远程读取的情况下,hdfs块将在mapper节点中进行inputsplit。如果记录跨越Map器节点的边界,远程读取将把数据提取到第一个Map器节点,其中大部分数据都存在。

相关问题