21

基本上整个问题都在标题中。我想知道是否可以同时从多台计算机附加到位于 HDFS 上的文件?诸如存储由多个进程不断产生的事件流之类的东西。顺序并不重要。

我记得在 Google 技术演示之一中听到 GFS 支持此类附加功能,但尝试使用 HDFS 进行一些有限的测试(使用常规文件 append() 或使用 SequenceFile)似乎不起作用。

谢谢,

4

2 回答 2

12

我认为 HDFS 不可能做到这一点。即使您不关心记录的顺序,但您确实关心文件中字节的顺序。您不希望写入器 A 写入部分记录,然后被写入器 B 破坏。这是 HDFS 自己解决的难题,所以它不会。

为每个作者创建一个文件。将所有文件传递给任何需要读取此数据的 MapReduce 工作人员。这要简单得多,并且适合 HDFS 和 Hadoop 的设计。如果非 MapReduce 代码需要将这些数据作为一个流读取,那么要么按顺序流式传输每个文件,要么编写一个非常快速的 MapReduce 作业来合并文件。

于 2011-06-17T20:31:24.413 回答
8

仅供参考,根据官方网站上的 JIRA 项目,hadoop 2.6.x 可能会完全支持它:https ://issues.apache.org/jira/browse/HDFS-7203

于 2015-01-27T19:13:17.110 回答