我正在尝试使用cassandra作为后端存储构建一个数据服务层。我是新来Cassandra,不知道什么客户使用Cassandra-节俭或cql 3?我们有很多mapreduce作业使用amazon elastic mapreduce(emr),这些作业将大量读取/写入来自cassandra的数据。总数据量将大于100 tb,在cassandra中有数十亿行。mapreduce作业可能是高qps(>1000 qps)的读写重作业。要求如下:
客户端代码的简单性。thrift似乎内置了与hadoop的集成,以便使用sstableloader进行批量数据加载(http://www.datastax.com/dev/blog/bulk-loading).
能够在运行时定义新列。我们可能需要根据应用程序的要求添加更多的列。似乎cql3不允许在运行时动态定义列。
大容量读/写性能。不知道哪个客户更好。然而,我发现这篇文章声称thrift客户端在高数据量方面有更好的性能:http://jira.pentaho.com/browse/pdi-7610?page=com.atlassian.jira.plugin.system.issuetabpanels:所有选项卡面板
我找不到任何权威的信息来源来回答这个问题。如果你能帮上忙,我很感激,因为我相信这是大多数人的共同问题,并将有利于整个社区。
非常感谢。
-普拉蒂克
1条答案
按热度按时间noj0wjuj1#
hadoop和cassandra都是用java编写的,所以一定要选择一个基于java的驱动程序。至于代码的简单性,我会选择astyanax,他们的wiki页面非常好,文档也非常全面。是的,atyanax确实允许您在运行时随意定义列,但请注意,基于thrift的API正在被cql API所取代。
不过,如果你想走纯cql3路线,我建议你使用datastax的驱动程序。它允许异步连接并不断更新(查看日志)。代码也非常干净,尽管文档还不太清楚,但是源代码中有一些测试可以查看。
但老实说,关于API的问题太多了,您应该仔细阅读并形成自己的看法:
cassandra客户端java api
关于java cassandra客户端,哪一个更好?cql怎么样?
使用cql比节俭的优势
此外,对于性能,这里还有一些基准测试(但是它们已经过时了!)表明cql正在追赶节俭(并且在准备好的声明方面有所超越):
比较字符串和二进制语句参数
cql基准测试