PDI 5.3的Cassandra数据查询问题

Cassandra data query problems with PDI 5.3

我有一个 Cassandra 安装,其中包含 table 不超过 110k 条记录。

我在使用 PDI 5.3(最新版本)查询数据时遇到了很多麻烦。我经常在 Cassandra 方面失去记忆。

虽然我安装的 Cassandra 服务器不是最好的,只有 4Gb RAM 和 2 个内核,但我仍然希望能够毫无问题地执行这个简单的任务。

在 cassandra /conf/cassandra-env.sh 中,我配置了:

MAX_HEAP_SIZE="4G"
HEAP_NEWSIZE="200M"

现在我可以查询的最大行数是 80k。 文档建议将 MAX_HEAP_SIZE 设置为机器 RAM 的 1/4。但对我来说,这意味着 1G 并且只有大约 20k 行要查询。

我可以通过在 PDI 的 Cassandra input 步骤中使用 limit 关键字限制 select 来判断我可以查询多少行。

我可以调整任何其他参数以获得更好的性能吗?这是一个开发服务器,在生产环境中,我预计会有超过 100 万行的查询。

安装 Cassandra 的服务器:Red Hat Enterprise Linux 服务器版本 6.6 (Santiago)

Cassandra 版本:apache-cassandra-2.1.2

编辑:版本已更新。

为内存牺牲 IO(因为内存正在杀死你):

  • 降低键/行缓存(如果启用)(键缓存默认打开)
  • 如果您执行大量删除操作,您可以降低 gc_grace_seconds 以更快地删除墓碑(假设您在获取 80k 行时进行了多次范围扫描,这会有所帮助)

一些其他想法:

  • 分页(Select 80k 的 0-10k,然后 10-20k 等
  • 检查内存表的大小,如果它们太大,请降低它们。
  • 使用跟踪来验证您正在检索的内容 (tombstones can cause lots of overhead)

This thread 建议降低 commit_log 大小,但是提交日志在 2.1 中进行了大量修改并从堆中移出,应该不再是这样的问题了。