是否可以并行追加多个客户端的HDFS文件?

max*_*dim 21 hadoop gfs hdfs

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

我记得听过谷歌技术演示文稿之一,GFS支持这样的追加功能,但尝试使用HDFS进行一些有限的测试(使用常规文件追加()或使用SequenceFile)似乎不起作用.

谢谢,

Spi*_*nim 12

我不认为HDFS可以实现这一点.即使您不关心记录的顺序,也要关心文件中字节的顺序.您不希望编写器A编写部分记录,然后由编写器B损坏.这是HDFS自身解决的难题,因此它不会.

每个编写器创建一个文件.将所有文件传递给需要读取此数据的任何MapReduce工作程序.这更简单,适合HDFS和Hadoop的设计.如果非MapReduce代码需要将此数据作为一个流读取,则按顺序流式传输每个文件或编写一个非常快速的MapReduce作业来合并文件.

  • @Spike只是为了澄清GFS确实支持并发追加.来自他们的GFS文章:"记录追加被我们的分布式应用程序大量使用,其中不同机器上的许多客户端同时附加到同一文件." (4认同)

小智 7

仅供参考,可能它在hadoop 2.6.x中得到完全支持,在官方网站上获取JIRA项目:https://issues.apache.org/jira/browse/HDFS-7203