我有一个作为服务运行的 java 程序,该程序必须插入 50k 行/秒(1 行有 25 列)到 cassandra 集群。
我的集群包含 3 个节点,1 个节点有 4 个 cpu 核心(核心 i5 2.4 ghz),4 GB 内存。
我使用了 Hector api、多线程、批量插入,但性能太低了(大约 25k 行/秒)。
任何人都为此提出了另一种解决方案。是否有 cassandra 支持内部批量插入(不使用 Thrift)。
将数据批量插入 Cassandra 的最快方法是sstableloader,这是 Cassandra 在 0.8 及更高版本中提供的实用程序。为此,您必须首先创建 sstables,这可以使用SSTableSimpleUnsortedWriter 进行更多关于此的描述here
另一种更快的方法是用于 hadoop 的 Cassandras BulkoutputFormat。有了它,我们可以编写 Hadoop 作业来将数据加载到 cassandra。查看更多关于这个bulkload to cassandra with hadoo
我很幸运地创建了 sstables 并直接加载它们。发行版中包含一个sstableloader 工具以及一个 JMX 接口。您可以使用SSTableSimpleUnsortedWriter类创建 sstables。
详情在这里。
Astyanax 是 Apache Cassandra 的高级 Java 客户端。Apache Cassandra 是一个高度可用的面向列的数据库。Astyanax 目前在 Netflix 使用。问题通常会尽快修复,并且经常发布。