Cassandra批量插入解决方案

5

我有一个以服务方式运行的Java程序,这个程序必须将50k行/秒(1行有25列)插入到Cassandra集群中。

我的集群包含3个节点,其中1个节点有4个CPU核心(Core i5 2.4 GHz),4 GB RAM。

我使用了Hector API、多线程和批量插入,但性能不如预期(大约25k行/s)。

有没有人对此有其他的解决方案?是否支持Cassandra内部批量插入(不需要使用Thrift)?

3个回答

1
Astyanax是Apache Cassandra的高级Java客户端。Apache Cassandra是一种高可用的列式数据库。 Astyanax目前在Netflix中使用。通常问题会尽快修复,并经常发布更新。

https://github.com/Netflix/astyanax


截至2019年:Astyanax已不再开发。 - Michal

1
我在创建SSTables并直接加载它们方面运气不错。分发包中包含了一个名为sstableloader的工具以及一个JMX接口。您可以使用SSTableSimpleUnsortedWriter类来创建SSTables。

详情请参见此处


1

将数据批量插入Cassandra的最快方法是使用Cassandra 0.8及以上版本提供的实用程序sstableloader。为此,您必须首先创建sstables,这可以通过SSTableSimpleUnsortedWriter实现,有关详细信息,请参见此处

另一种更快的方法是使用Cassandra的BulkoutputFormat for hadoop。使用此方法,我们可以编写Hadoop作业来将数据加载到Cassandra中。有关详细信息,请参见使用hadoop批量加载数据到cassandra


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接