1

问题

我一直在开发一个应用程序,该应用程序需要支持异步读取数据对象并附加写入。换句话说,一个缓冲区。在任何给定时间都会有许多数据对象。

我一直在研究可用的分布式文件系统,以找到一个支持在写入文件时读取文件的系统,但我的搜索一无所获。根据经验,我知道 Amazon S3 不支持这一点,而我不确定其他的,例如 HadoopDFS。

解决方案:分块?

我曾考虑将数据分块作为一种解决方案,这将涉及将传入的写入拆分为 n 字节块以将其作为一个整体写入 DFS。不再需要的块可以被删除而不会干扰正在写入的新数据,因为它们是 DFS 上的单独文件。

这种策略的问题是,当缓冲区读取器消耗数据的速度比缓冲区写入器创建它的速度快时,它会导致暂停。较小的块会减轻这种影响,但并不完美。

总结问题

  • 是否存在支持将对象作为缓冲区读取/写入的 DFS?
  • 如果不是,在 DFS 上分块数据是模拟缓冲区的最佳方式吗?
4

1 回答 1

0

Lustre (lustre.org) 支持并发连贯读写,包括 O_APPEND 写入。并发性由 Lustre 分布式锁管理器 (LDLM) 控制,该管理器向客户端授予范围锁并在发生冲突时撤销锁。支持同一文件的多个读取器和多个并发写入器,它们将看到一致的文件数据,就像在本地文件系统的情况下一样。

于 2013-01-30T20:09:12.870 回答