我有一个以服务方式运行的Java程序,这个程序必须将50k行/秒(1行有25列)插入到Cassandra集群中。
我的集群包含3个节点,其中1个节点有4个CPU核心(Core i5 2.4 GHz),4 GB RAM。
我使用了Hector API、多线程和批量插入,但性能不如预期(大约25k行/s)。
有没有人对此有其他的解决方案?是否支持Cassandra内部批量插入(不需要使用Thrift)?
详情请参见此处。
将数据批量插入Cassandra的最快方法是使用Cassandra 0.8及以上版本提供的实用程序sstableloader。为此,您必须首先创建sstables,这可以通过SSTableSimpleUnsortedWriter实现,有关详细信息,请参见此处。
另一种更快的方法是使用Cassandra的BulkoutputFormat for hadoop。使用此方法,我们可以编写Hadoop作业来将数据加载到Cassandra中。有关详细信息,请参见使用hadoop批量加载数据到cassandra。