我有两个问题可以帮助我理解HDFS在块的上下文中是如何工作的。
1。使用hadoop fs -put命令编写300 MB文件,HDFS块大小为64 MB。 在此命令完成写入200 MB此文件后,其他用户将看到什么 在尝试访问此文件时?
一个。当他们试图访问这个文件时,他们会看到Hadoop抛出一个ConcurrentFileAccessException。
B中。他们会看到文件的当前状态,直到命令写入的最后一位。
℃。他们会通过最后一个完整的块看到文件的当前信息。
d。在整个文件写入和关闭之前,他们不会看到任何内容。
正如我所看到的,因为文件被分割成块,当每个块放入HDFS时它变得可用,所以我的答案是C,但我确实需要验证它......
2。您需要将名为“weblogs”的文件移动到HDFS中。当您尝试复制文件时,您不能。您知道DataNode上有足够的空间。您应该采取哪些措施来缓解这种情况并在HDFS中存储更多文件?
A.增加HDFS中所有当前文件的块大小。
B中。增加剩余文件的块大小。
℃。减少剩余文件的块大小。
d。增加NameNode的内存量。
电子。增加NameNode的磁盘数(或大小)。
F。减少HDFS中所有当前文件的块大小。
我对这个方法的方法是文件可能小到足以适合,但是会为它分配一个更大的块,所以如果你减小块大小,它将" defragment&#34 ;一些差距 - 我无法弄清楚,如果这是为其余文件或所有文件执行此操作的好方法......或者即使我的方法是正确的
谢谢!
答案 0 :(得分:0)
以下是两个链接 https://issues.apache.org/jira/browse/HDFS-1907 Hadoop HDFS: Read sequence files that are being written
链接: error while copying the files from local file system to HDFS in Hadoop
答案 1 :(得分:0)
关于第一个问题,请参阅another SO question中的讨论。在该讨论中,答案可以是C或D,具体取决于问题试图提出的问题。文件是逐块复制的,技术上有一种方法可以查看通过最后一个块写入的文件,但它位于一个名称不同的文件下。
对于第二种方法,一种方法(答案C)是让剩余的文件填补已经存在的文件块之间的空白。您假设小文件分配了大块块是不正确的 - 文件只占用所需的空间。根据{{3}}
与单个磁盘的文件系统不同,HDFS中的文件较小 比一个块不占据整个块的潜在价值 存储