kafka安装配置

岁酱吖の 提交于 2020-03-11 17:54:14
  •     Kafka主要构成:

    

    1、Broker:集群中的每一个对应的服务器被称之为broker。

    2、Topic 用于区别消息的类别,每个topic中包含多个Partition;Partition主要可以减少每个日志的数据量,也可以增加请求的并发量。

    3、Producer 消息的生产者,可通过配置partitioner.class设置消息发送到那个Partition上。

    4、Consumer 消息的消费者,可以订阅需要的topics。

    其中更多的其他术语可以参考kafka官方文档


  •     Kafka配置:通过官网下载并安装,通过文件config下的相关properties进行配置;

    

     server.properties启动服务时的相关配置,可拷贝多个配置多个broker服务(单台服务器上配置多个broker服务的方式),如server-1.properties

    console-xxxx.properties启动相关控制台的配置。

    1、server.properties配置文件,启动命令

kafka:bin/kafka-server-start.sh config/server.properties


# broker_id,集群环境下不能重复
broker.id=0
# broker 开放的端口
port=9092
# broker 绑定的主机名
host.name=localhost

# producers、consumers连接的地址. 若没配置,则使用host.name
# 但是在编码过程中发现如不配置这项的话,系统无法启动,比较费解
advertised.host.name=192.168.52.128
 
# 同advertised.host.name类似
#advertised.port=<port accessible by clients>

#存放消息文件的目录
log.dirs=/tmp/kafka-logs
#topic默认的分区数量,数量多少可以影响并发量
num.partitions=1

##zookeeper的配置
zookeeper.connect=192.168.52.128:2181

# Timeout in ms for connecting to zookeeper
zookeeper.connection.timeout.ms=6000

   其它配置属性可参考server内部自行配置。

    2、producer.properties配置文件

# list of brokers used for bootstrapping knowledge about the rest of the cluster
# format: host1:port1,host2:port2 ...
# 配置broker节点数据信息,用于获取元数据信息
metadata.broker.list=192.168.52.128:9092

# name of the partitioner class for partitioning events; default partition spreads data randomly
# 消息发送到那个分区的配置,默认使用org.apache.kafka.clients.producer.internals.DefaultPartitioner
#partitioner.class=

# specifies whether the messages are sent asynchronously (async) or synchronously (sync)
producer.type=sync

# specify the compression codec for all data generated: none, gzip, snappy, lz4.
# the old config values work as well: 0, 1, 2, 3 for none, gzip, snappy, lz4, respectively
compression.codec=none

# message encoder
serializer.class=kafka.serializer.DefaultEncoder
# allow topic level compression
# 压缩方式
#compressed.topics=

    3、consumer.properties配置文件v

# Zookeeper connection string
# comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002"
# 监控的zookeeper链接,消费者主要通过zookeeper获取数据
zookeeper.connect=192.168.52.128:2181

# timeout in ms for connecting to zookeeper
zookeeper.connection.timeout.ms=6000

#consumer group id
#消费者分组信息,每个消息只能被分组中的某个消费者消费
group.id=test-consumer-group

#consumer timeout
#consumer.timeout.ms=5000

    4、connect-xxxx.properties配置文件主要对kafka 0.9的新版特性的相关配置,connect可以对大数据量的源数据拷贝到目标系统中。

       connect-standalone.properties和connect-distributed.properties两个为单机和分布式下的connect启动配置文件,配置详细信息可见具体文件。其启动命令:

bin/connect-distributed.sh config/connect-distributed.properties

     connect-file-source.properties配置源系统的connector:

#connector唯一的名称
name=local-console-source
#connector的实现
connector.class=org.apache.kafka.connect.file.FileStreamSourceConnector
#connector需要创建的最大任务数
tasks.max=1
#需要处理的topic类别
topic=connect-test

    connect-file-sink.properties配置目标系统的connector(和以上配置类似):   

name=local-file-sink
connector.class=org.apache.kafka.connect.file.FileStreamSinkConnector
tasks.max=1
file=test.sink.txt
#接收topic类别列表
topics=connect-test
  •     kafka相关命令

    1、topic相关命令

#创建topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic mykafka

#查看topic
topic:bin/kafka-topics.sh --list --zookeeper localhost:2181

    2、producer发送消息

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic mykafka

    3、customer消费消息

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic mykafka --from-beginning

    以上是对kafka简单的配置及命令操作。

  •     Kafka的优缺点:

    kafka相较于其他mq而言,消费者采用主动poll的模式,poll模式有利于customer根据自身处理能力获取数据。

    kafka的容错性,kafka提供对partitioner的备份到其他broker服务器上;如有服务器挂掉,则zookeeper会重新选择leader处理消息信息。

    配置多个partitioner可提高并发,但不能保证消息的顺序性;若要保证消息的顺序,则只需配置一个分区即可。

    不支持消息的事务性,消息发送包括三种情况(可配置重试次数):

    1、最多只发送一次,消息有可能会丢失,但不会再重发。

    2、至少发送一次,消息不会丢失,但有可能会出现重复发送。

    3、保证消息会且仅会发送一次。

     更多的信息可以查看http://www.infoq.com/cn/articles/kafka-analysis-part-1或者

     官网文档http://kafka.apache.org/documentation.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!