【问题标题】:VoltDB Kafka importerVoltDB Kafka 导入器
【发布时间】:2019-02-12 20:58:50
【问题描述】:

我目前正在使用 VoltDB kafka importer 从多个 kafka 主题中导入数据。我正面临装载机的性能问题。 我阅读了 VoltDB 文档,但找不到如何微调导入器。

如何指定topic的具体分区?

我目前的设置

6 nodes of VoltDB cluster and Kafka importers on the nodes with custom procedure for insert.

Kafka 导入器配置

Host: 172.x.x.x:9092
Topic: mytopic_1,mytopic_2,...mytopic_10
Procedure: tinsert

创建过程 tinsert INSERT INTO tinsert (sensor_id, column2, column3, received_time) VALUES (?, ?, ?,now());

表已分区,分区键为sensor_id

问题是导入器没有像生成数据那样快地提取数据。

消息发布速率为每秒 10,000 条记录

任何帮助将不胜感激。

【问题讨论】:

    标签: voltdb


    【解决方案1】:

    您可以调整一些会影响 Kafka Importer 将数据摄取到 VoltDB 的速率的因素。

    1. Kafka 中主题的分区数。 VoltDB 将为每个分区运行一个消费者线程。更多分区 = 更多线程。

    2. VoltDB 导入器从 Kafka 的当前偏移量中检索一批记录,然后为每条记录调用该过程。它等待过程回调返回,因此它知道所有内容都已处理。然后它推进 Kafka 中的偏移量并检索另一个批次。这个过程可能会限制它可以处理的速率。如果您设置属性 commit.policy=10,那么它只会将偏移量提前到它每 10 毫秒读取的任何值。这可能会允许更快的数据流,但如果出现故障并重新启动(例如,偏移量超出已读取但未插入的记录),可能会出现小间隙。

    配置选项见:https://docs.voltdb.com/UsingVoltDB/exportimportkafka.php

    1. 在集群上调用的过程的性能/规模。如果表是分区的,并且过程只是插入,它可能不是限制因素。

    披露:我在 VoltDB 工作

    【讨论】:

    • 感谢您的帮助。我能够通过在生产者上使用相同的分区来提高性能。我创建了分区过程,分区键与表分区键是同一列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 2018-10-12
    相关资源
    最近更新 更多