kafka简单介绍、使用及常见报错

简介

kafka是一个分布式的流媒体平台
应用:消息系统、日志收集、用户行为追踪、流式处理。

特点

  • 高吞吐量
    处理数据能力强,能处理TB级的海量数据
  • 消息持久化
    把数据存在硬盘里,硬盘价格低且空间大(处理海量数据);
    对硬盘顺序读取,效率是很高的。
  • 高可靠性
    分布式的服务器,可以做集群部署
  • 高可扩展性
    服务器不够用了,加一个服务器,只需要简单配置一下。

术语

  • Broker:kafka服务器,集群中的每一个服务器,称为一个broker
  • 可以使用zookeeper管理集群
  • 发布-订阅模式,生产者把消息放到某个位置,可以有多个消费者订阅这个位置,读取消息,这时消息可以被多个消费者同时或先后读到。
  • Topic:kafka使用的是发布定于模式,生产者把消息发布的位置,称为Topic。
  • partition:把一个Topic分为多个分区
    kafka简单介绍、使用及常见报错_第1张图片
  • offset:消息在分区内存放的索引,生产者在队尾写入消息,消费者按索引去读。
    kafka简单介绍、使用及常见报错_第2张图片
  • 副本
    kafka是一个分布式的消息引擎,为了让数据更可靠,每一个分区会有多个副本。
    Leader Replica(主副本): 当消费者从分区获取数据时,主副本可以处理这个请求,做出响应。
    Follower Replica(随从副本): 只是备份而已,但当主副本挂掉时,会从多个从副本中选一个做主副本。

使用

  • 配置
    zookeeper.properties
    修改数据存放路径(你想存哪就写哪)
dataDir=e:/javawork/zookeeper

server.properties
kafka日志文件存放的位置

log.dirs=e:/javawork/kafka-logs

常用命令介绍
http://kafka.apache.org/documentation/#quickstart

使用kafka自带的zookeeper,启用zookeeper,使用zookeeper.properties配置文件。

D:\kafka_2.12-2.4.0>bin\windows\zookeeper-server-start.bat config\zookeeper.properties

kafka简单介绍、使用及常见报错_第3张图片
启动kafka

D:\kafka_2.12-2.4.0>bin\windows\kafka-server-start.bat config\server.properties

创建topic test,服务器为localhost:9092,1副本,1分区

D:\kafka_2.12-2.4.0\bin\windows>kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test

验证是否创建成功

D:\kafka_2.12-2.4.0\bin\windows>kafka-topics.bat --list --bootstrap-server localhost:9092

在这里插入图片描述
往主题上发送消息,调用kafka-console-producer.bat

kafka-console-producer.bat --broker-list localhost:9092 --topic test

在这个窗口发消息
在这里插入图片描述
再开一个窗口接收消息

D:\kafka_2.12-2.4.0\bin\windows>kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning

在这里插入图片描述
关闭

D:\kafka_2.12-2.4.0\bin\windows>zookeeper-server-stop.bat
D:\kafka_2.12-2.4.0\bin\windows>kafka-server-stop.bat

不要暴力关闭窗口!

易报错点

1.启动zookeeper报错

D:\kafka_2.12-2.4.0\bin\windows>zookeeper-server-start.bat config\zookeeper.properties
[2020-05-22 22:10:16,197] INFO Reading configuration from: config\zookeeper.properties (org.apache.zookeeper.server.quorum.QuorumPeerConfig)
[2020-05-22 22:10:16,200] WARN config\zookeeper.properties is relative. Prepend .\ to indicate that you're sure! (org.apache.zookeeper.server.quorum.QuorumPeerConfig)
[2020-05-22 22:10:16,201] ERROR Invalid config, exiting abnormally (org.apache.zookeeper.server.quorum.QuorumPeerMain)
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing config\zookeeper.properties
        at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:154)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:113)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:82)
Caused by: java.lang.IllegalArgumentException: config\zookeeper.properties file is missing
        at org.apache.zookeeper.server.util.VerifyingFileFactory.doFailForNonExistingPath(VerifyingFileFactory.java:51)
        at org.apache.zookeeper.server.util.VerifyingFileFactory.validate(VerifyingFileFactory.java:45)
        at org.apache.zookeeper.server.util.VerifyingFileFactory.create(VerifyingFileFactory.java:40)
        at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:139)
        ... 2 more
Invalid config, exiting abnormally

这是因为zookeeper-server-start.bat在bin\windows目录下,但zookeeper.properties在config目录下,而不是bin\windows目录下,所以在这个bin\windows目录下找不到zookeeper.properties而报错。
正确写法:

D:\kafka_2.12-2.4.0>bin\windows\zookeeper-server-start.bat config\zookeeper.properties

启动kafka报错
如果暴力关闭kafka窗口,则下次启动时会报错。因为这种暴力关闭方式很有可能导致kafka无法完成对日志文件的解锁,再次启动kafka时,会提示日志文件被锁,无法成功启动。
解决方法
将kafka日志文件全部删除,再次启动即可。

你可能感兴趣的:(kafka)