hdfs块相关问题

ebdffaop  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(383)

我有两个问题可以帮助我理解hdfs如何在块的上下文中工作。
1使用hadoopfs-put命令编写一个300MB的文件,使用64MB的hdfs块大小。在这个命令刚写完这个文件的200MB之后,另一个用户在试图访问这个文件时会看到什么?
答。当他们试图访问这个文件时,他们会看到hadoop抛出concurrentfileaccessexception。
b。他们将看到文件的当前状态,直到命令写入的最后一位。
c。他们将通过最后一个完成的块看到文件的当前状态。
d。在整个文件写入并关闭之前,他们不会看到任何内容。
在我看来,因为文件被分割成块,当每个块被放入hdfs时,它就变得可用了,所以我的答案是c,但我确实需要对它进行验证。。。
2您需要将一个名为“weblogs”的文件移到hdfs中。当你试图复制文件时,你不能。您知道您的数据节点上有足够的空间。您应该采取什么措施来缓解这种情况并在hdfs中存储更多文件?
答。增加hdfs中所有当前文件的块大小。
b。增加剩余文件的块大小。
c。减少剩余文件的块大小。
d。增加namenode的内存量。
e。增加namenode的磁盘数(或大小)。
f。减小hdfs中所有当前文件的块大小。
我的方法是,这个文件可能是足够小,以适应,但一个更大的块将分配给它,因此,如果你减少块大小,它将“碎片整理”的一些差距-我不知道,如果这是一个好的方法,这样做的剩余文件或所有的文件。。。或者即使我的方法是正确的
谢谢您!!

lskq00tm

lskq00tm1#

对于第一个问题,请参阅另一个so问题中的讨论。在那次讨论中,答案可能是c或d,这取决于问题的意图。文件是逐块复制的,从技术上讲,有一种方法可以看到文件是通过最后一个块写入的,但它位于具有不同名称的文件下。
对于第二种方法,一种方法(答案c)是让剩余的文件填补已经存在的文件块之间的空白。您认为小文件分配了大的块的假设是不正确的—文件只占用所需的空间。根据hadoop:权威指南
与单个磁盘的文件系统不同,hdfs中小于单个块的文件不会占用整个块的底层存储。

f4t66c6m

f4t66c6m2#

如果writer没有使用hflush,那么读卡器将看到一个错误,因为块尚未完成。所以我要和d。
这里有两个链接https://issues.apache.org/jira/browse/hdfs-1907hadoop hdfs:读取正在写入的序列文件
这种情况下的一个错误是name节点不知道hdfs中的空格。所以在这种情况下我会选择e。
链接:在hadoop中将文件从本地文件系统复制到hdfs时出错

相关问题