Kafka 几个重要的配置总结

注意:配置基于Kafka 0.8.2.1


broker配置



#非负整数,用于唯一标识broker
broker.id 0


#kafka持久化数据存储的路径,可以指定多个,以逗号分隔
log.dirs /tmp/kafka-logs


#broker接收连接请求的端口
port 9092


#指定zk连接字符串,[hostname:port]以逗号分隔
zookeeper.connect


#单条消息最大大小控制,消费端的最大拉取大小需要略大于该值
message.max.bytes 1000000


#接收网络请求的线程数
num.network.threads 3


#用于执行请求的I/O线程数
num.io.threads 8


#用于各种后台处理任务(如文件删除)的线程数
background.threads 10


#待处理请求最大可缓冲的队列大小
queued.max.requests 500


#配置该机器的IP地址
host.name 


#默认分区个数
num.partitions  1


#分段文件大小,超过后会轮转
log.segment.bytes 1024 * 1024 * 1024


#日志没达到大小,如果达到这个时间也会轮转
log.roll.{ms,hours}   168


#日志保留时间
log.retention.{ms,minutes,hours}


#不存在topic的时候是否自动创建
auto.create.topics.enable true


#partition默认的备份因子
default.replication.factor 1


#如果这个时间内follower没有发起fetch请求,被认为dead,从ISR移除
replica.lag.time.max.ms   10000


#如果follower相比leader落后这么多以上消息条数,会被从ISR移除
replica.lag.max.messages  4000


#从leader可以拉取的消息最大大小
replica.fetch.max.bytes 1024 * 1024


#从leader拉取消息的fetch线程数
num.replica.fetchers 1


#zk会话超时时间
zookeeper.session.timeout.ms  6000


#zk连接所用时间
zookeeper.connection.timeout.ms


#zk follower落后leader的时间
zookeeper.sync.time.ms 2000


#是否开启topic可以被删除的方式
delete.topic.enable false


producer配置


#参与消息确认的broker数量控制,0代表不需要任何确认 1代表需要leader replica确认 -1代表需要ISR中所有进行确认
request.required.acks 0


#从发送请求到收到ACK确认等待的最长时间(超时时间)
request.timeout.ms  10000


#设置消息发送模式,默认是同步方式, async异步模式下允许消息累计到一定量或一段时间又另外线程批量发送,吞吐量好但丢失数据风险增大
producer.type sync


#消息序列化类实现方式,默认是byte[]数组形式
serializer.class kafka.serializer.DefaultEncoder


#kafka消息分区策略实现方式,默认是对key进行hash
partitioner.class kafka.producer.DefaultPartitioner


#对发送的消息采取的压缩编码方式,有none|gzip|snappy
compression.codec none


#指定哪些topic的message需要压缩
compressed.topics  null


#消息发送失败的情况下,重试发送的次数 存在消息发送是成功的,只是由于网络导致ACK没收到的重试,会出现消息被重复发送的情况
message.send.max.retries 3


#在开始重新发起metadata更新操作需要等待的时间
retry.backoff.ms 100


#metadata刷新间隔时间,如果负值则失败的时候才会刷新,如果0则每次发送后都刷新,正值则是一种周期行为
topic.metadata.refresh.interval.ms 600 * 1000


#异步发送模式下,缓存数据的最长时间,之后便会被发送到broker
queue.buffering.max.ms 5000


#producer端异步模式下最多缓存的消息条数
queue.buffering.max.messages 10000


#0代表队列没满的时候直接入队,满了立即扔弃,-1代表无条件阻塞且不丢弃
queue.enqueue.timeout.ms -1


#一次批量发送需要达到的消息条数,当然如果queue.buffering.max.ms达到的时候也会被发送
batch.num.messages 200




consumer配置


#指明当前消费进程所属的消费组,一个partition只能被同一个消费组的一个消费者消费
group.id


#针对一个partition的fetch request所能拉取的最大消息字节数,必须大于等于Kafka运行的最大消息
fetch.message.max.bytes  1024 * 1024


#是否自动周期性提交已经拉取到消费端的消息offset
auto.commit.enable true


#自动提交offset到zookeeper的时间间隔
auto.commit.interval.ms  60 * 1000


#消费均衡的重试次数
rebalance.max.retries  4


#消费均衡两次重试之间的时间间隔
rebalance.backoff.ms 2000


#当重新去获取partition的leader前需要等待的时间
refresh.leader.backoff.ms   200


#如果zookeeper上没有offset合理的初始值情况下获取第一条消息开始的策略smallest|largeset
auto.offset.reset largest


#如果其超时,将会可能触发rebalance并认为已经死去
zookeeper.session.timeout.ms  6000


#确认zookeeper连接建立操作客户端能等待的最长时间
zookeeper.connection.timeout.ms 6000
  • 10
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 数据采集是指将各种类型的数据从不同来源收集起来,以便后续的处理和分析。而Kafka则是一个开源的分布式流处理平台,它可以处理大规模的数据流并实现高效的数据传输。所以数据采集Kafka标书指的是使用Kafka作为数据采集的工具和平台。 在数据采集过程中,Kafka的主要作用是作为数据的中间件,用于解决数据源产生数据速率过快而消费端处理速率较慢的问题。通过使用Kafka,可以实现数据的异步传输和解耦,保证数据的高可靠性和稳定性。此外,Kafka还支持分布式集群部署和水平扩展,能够处理海量数据流的并发请求。 在编写数据采集Kafka标书时,首先要明确具体的需求和目标。比如需要采集的数据类型、数据源的数量和产生速率、数据采集的频率等等。然后根据需求,设计合适的Kafka集群架构,包括主题(Topic)的划分、分区(Partition)的设置、副本(Replication)的配置等。 接下来,需要明确数据的生命周期,在数据产生、传输和消费的整个流程中如何保证数据的可靠性和一致性。可以使用Kafka提供的数据复制机制和故障恢复机制来实现数据的持久化存储和高可用性。 此外,在数据采集Kafka标书中还需要考虑到数据的安全性和权限管理。可以使用Kafka提供的认证和授权机制来限制数据的访问权限,保护数据的机密性和完整性。 最后,为了保证数据采集Kafka的稳定性和性能,需要考虑系统的容量规划和性能调优。可以根据数据的规模和业务需求来优化Kafka的集群规模、硬件配置以及优化代码和参数的设置。 综上所述,数据采集Kafka标书需要明确需求和目标,设计合理的架构和流程,并注意数据的安全性和性能优化。通过精心设计和规划,可以实现高效、可靠的数据采集和传输。 ### 回答2: 数据采集是指通过不同的方法和技术收集和获取数据,以供后续分析和处理。Kafka是一种开源的分布式流媒体平台,用于高性能、可持久化的数据处理。因此,数据采集和Kafka之间存在着密切的联系。 数据采集过程中,可以通过不同的方式将数据发送到Kafka中进行处理。首先,可以使用Kafka提供的生产者API将数据直接发送到Kafka集群中。生产者程序可以根据业务需求将数据按照一定的规则进行分区和分发,确保数据的顺序性和可靠性。其次,可以使用Kafka Connect工具连接各种外部数据源,如数据库、文件系统等,将数据采集到Kafka中。通过配置适当的连接器,可以实现数据的实时传输和同步。 在数据采集过程中,还可以结合其他组件来进一步优化和扩展数据处理能力。例如,可以使用Kafka Streams库来进行实时数据处理和分析,对数据进行转换、聚合等操作,并将结果发送回Kafka或其他目标系统。此外,还可以结合其他的大数据处理工具,如Spark、Hadoop等,进行批量数据处理和分析。 总结而言,数据采集和Kafka是紧密相关的。Kafka提供了高性能、可靠的数据处理能力,可以作为数据采集的中间件或传输通道,帮助用户收集和传输数据。同时,Kafka还提供了丰富的工具和组件,可以进一步扩展和优化数据处理的能力。因此,在进行数据采集方案设计时,Kafka是一个值得考虑和使用的选择。 ### 回答3: 数据采集是指通过各种方式获取数据并将其存储到特定的地方,以便后续处理和分析。而Kafka是一种高吞吐量的分布式流处理平台,被广泛用于对实时数据进行收集、存储和处理。 在数据采集中,使用Kafka有以下几个优点: 1. 高吞吐量:Kafka是专门为高吞吐量的数据流处理而设计的,能够轻松处理大量的数据。这对于采集系统来说非常重要,尤其是在需要传输和处理实时数据的场景下。 2. 可靠性:Kafka采用分布式的存储和复制机制,确保数据的可靠性和冗余。当数据采集节点发生故障时,Kafka能够自动将数据备份恢复,避免数据丢失。 3. 实时性:Kafka能够实时地传输数据,支持高效的数据流处理。这使得数据采集系统能够及时获取和处理实时数据,满足实时性要求。 4. 扩展性:Kafka能够水平扩展,适应不断增长的流量。当数据采集需求增加时,可以通过增加Kafka节点来增加吞吐量和存储容量,而无需调整整个系统架构。 5. 异步处理:Kafka支持异步数据传输和处理。数据采集节点可以将数据发送到Kafka后立即返回,而无需等待数据的实际处理。这种异步处理方式减少了数据采集节点的负载,提高了系统的性能和吞吐量。 在编写数据采集Kafka标书时,需要详细描述数据采集系统的需求和方案,并说明如何使用Kafka进行数据的传输、存储和处理。同时,还需要说明Kafka的部署和配置方式,并提供性能指标和可扩展性计划。最后,还需要在标书中阐述Kafka的优势和适用场景,并给出合理的预算和时间安排。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值