2

我想将一些文件流入和流出 cassandra,因为我们已经使用它而不是设置完整的 hadoop 分布式文件系统。是否有任何异步放置在 atyanax 或 hector 中,我在完成时提供回调,这样我可以避免 1000 次调用的 1 毫秒网络延迟,因为我写了 1000 个条目(在几行和几列之间拆分,所以它是流式传输的并行到几台服务器,然后所有响应/回调在完成流式传输时返回)。Hector 或 astyanax 是否支持这一点?

看起来 astyanax 支持查询回调,所以我想我可以使用主键将文件流回 astyanax?

谢谢,院长

4

1 回答 1

1

Cassandra 实际上并不支持通过 thrift API 进行流式传输。此外,将文件分解为单个突变批次,将数据分布在多行和多列中可能非常危险。这可能会导致 cassandra 上的堆被炸毁,或者您也可能遇到 1MB 套接字写入缓冲区限制,在某些错误情况下,这实际上会导致您的 thrift 连接无限期挂起(尽管我认为这可能在最新版本的 cassandra 中得到修复) .

Astyanax (https://github.com/Netflix/astyanax/wiki/Chunked-Object-Store) 中的新分块对象存储配方建立在我们在 Netflix 在 Cassandra 中存储大型对象的经验之上,并提供了一个简单的 API 来处理所有为您分块和并行化。它仍然可以对 cassandra 进行 1000 次调用(取决于您的文件大小和块大小),但也可以为您处理所有重试和并行化。读取文件也是如此。API 将读取这些块并将它们按顺序重新组合成一个 OutputStream。

于 2012-05-02T06:02:00.973 回答