【问题标题】:Cassandra data query problems with PDI 5.3PDI 5.3 的 Cassandra 数据查询问题
【发布时间】:2015-03-02 18:25:36
【问题描述】:

我有一个 Cassandra 安装,其中包含一个不超过 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 关键字限制选择来判断我可以查询多少行。

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

安装 Cassandra 的服务器:Red Hat Enterprise Linux Server 6.6 版(圣地亚哥)

Cassandra 版本:apache-cassandra-2.1.2

编辑:版本已更新。

【问题讨论】:

  • 您运行的是哪个版本的 C*?另外,您为什么要查询如此大量的数据?选择 1M 行是 oom 的好方法,在这个阶段你应该分页。但是,我们确实需要错误日志,我会发布答案,但它更多的是建议而不是解决方案。

标签: cassandra pdi


【解决方案1】:

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

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

其他一些想法:

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

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

【讨论】:

  • 感谢您的回答。我正在查询大量数据,因为我有大量数据。实际上,每次运行我都需要大约 100 万条记录。我知道分页应该是解决方案,但是我用来查询数据的 Pentaho ETL 工具 PDI 不支持它(据我所知)。我现在正在与他们的支持人员联系,以了解如何处理大数据查询。如果以及何时解决此问题,我将在此处发布更新。我会更新问题中的版本。
  • 查看已实现手动分页的twissandra 示例应用程序。它在时间线上,但是围绕数据模型有一些方法可以让您手动进行修补。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-09
  • 2016-08-20
  • 1970-01-01
  • 1970-01-01
  • 2016-03-15
  • 2019-05-30
相关资源
最近更新 更多