Kafka 和 Vertica 配置设置

可以微调 Vertica 和 Kafka 的配置设置,从而优化性能。

Vertica 和 Kafka 集成使用的是 rdkafka 版本 0.11.6。除非另有说明,否则以下配置设置使用默认的 librdkafka 配置属性值。有关如何覆盖默认值的说明,请参阅直接设置 Kafka 库选项

Vertica 生产者设置

以下设置更改 Vertica 如何使用 KafkaExport 函数和通知程序为 Kafka 生成数据。

queue.buffering.max.messages
Vertica 生产者队列的大小。如果 Vertica 以过快的速度生成过多消息,那么队列可能会填满,从而导致丢弃消息。增加此值会消耗更多内存,但是会减少消息丢失的机会。

默认值

  • KafkaExport:1000

  • 通知程序:10000

queue.buffering.max.ms
Vertica 刷新生产者消息队列的频率。虽然较低的值会减少延迟,但以吞吐量为代价。较高的值会增加吞吐量,但会导致生产者队列(由 queue.buffer.max.messages 设置)更频繁地填满,从而导致丢弃消息。

默认值: 100 ms

message.max.bytes
Kafka 协议请求消息批次的最大大小。此值在源、代理和生产者上都应该相同。
message.send.max.retries
生产者尝试将消息传递给代理的次数。较高的值会增加成功机会。
retry.backoff.ms
Vertica 在重新发送失败的消息前等待的间隔。
request.required.acks
Kafka 在认为消息传递成功之前需要的代理副本确认数。需要确认会增加延迟。移除确认会增加消息丢失的风险。
request.timeout.ms
生产者等待代理响应的间隔。代理响应时间受服务器负载和所需消息确认数的影响。
较高的值会增加延迟。
compression.type
在将数据发送给代理之前用于编码数据的压缩算法。压缩有助于减少 Vertica 生产者的网络占用空间并提高磁盘利用率。Vertica 支持 gzipsnappy

Kafka 代理设置

Kafka 代理接收来自生产者的消息,并在 Kafka 使用者之间分配它们。在代理本身上配置这些设置。这些设置独立于生产者和使用者设置。有关 Apache Kafka 代理设置的详细信息,请参考 Apache Kafka 文档

message.max.bytes
Kafka 协议请求消息批次的最大大小。此值在源、代理和生产者上应该相同。
num.io.threads
代理用于接收和处理请求的网络线程数。更多的线程可以提高并发性。
num.network.threads
代理用于接受网络请求的网络线程数。更多的线程可以提高并发性。

Vertica 使用者设置

以下设置更改 Vertica 在使用来自 Kafka 的数据时的行为方式。当直接执行 COPY 语句时,可以在 KafkaSource UDL 上使用 kafka_conf 参数设置此值。对于调度程序,请使用调度程序工具中的 --message_max_bytes 设置。

message.max.bytes
Kafka 协议请求消息批次的最大大小。请将该值设置为足够高的值,以防止提取消息批次的开销干扰加载数据。对于新创建的加载规范,默认为 24MB。