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 支持
gzip
和snappy
。
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。
重要
该设置的含义在 Kafka 版本 0.10 和 0.11 之间发生了更改。如果调度程序使用 Vertica 9.1.0 或更早版本,请参阅在 Kafka 0.11 及更高版本中对 message.max.bytes 设置的更改了解您可能需要更改的设置。