kafka入门及环境搭建
Posted lisin-lee-cooper
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kafka入门及环境搭建相关的知识,希望对你有一定的参考价值。
一.基本概念
一个典型的 Kafka 体系架构包括若干 Producer、若干 Broker、若干 Consumer,以及一个 ZooKeeper 集群, 其中 ZooKeeper 是 Kafka 用来负责集群元数据的管理、控制器的选举等操作的。Producer 将消息发送到 Broker,Broker 负责将收到的消息存储到磁盘中,而 Consumer 负责从 Broker 订阅并消费消息。
Producer: 生产者,也就是发送消息的一方。生产者负责创建消息,然后将其投递到 Kafka 中。
Consumer: 消费者,也就是接收消息的一方。消费者连接到 Kafka 上并接收消息,进而进行相应的业务逻辑处理。
Broker: 服务代理节点。对于 Kafka 而言,Broker 可以简单地看作一个独立的 Kafka 服务节点或 Kafka 服务实例。大多数情况下也可以将 Broker 看作一台 Kafka 服务器,前提是这台服务器上只部署了一个 Kafka 实例。一个或多个 Broker 组成了一个 Kafka 集群。一般而言,我们更习惯使用首字母小写的 broker 来表示服务代理节点。
topic和分区
在 Kafka 中还有两个特别重要的概念—主题(Topic)与分区(Partition)。Kafka 中的消息以主题为单位进行归类,生产者负责将消息发送到特定的主题(发送到 Kafka 集群中的每一条消息都要指定一个主题),而消费者负责订阅主题并进行消费。
主题是一个逻辑上的概念,它还可以细分为多个分区,一个分区只属于单个主题,很多时候也会把分区称为主题分区(Topic-Partition)。同一主题下的不同分区包含的消息是不同的,分区在存储层面可以看作一个可追加的日志(Log)文件,消息在被追加到分区日志文件的时候都会分配一个特定的偏移量(offset)。
二.环境搭建
注意:为了后续的解析和测试,本地搭建单机的zookeeper和kafka,有条件的可以搭建集群。
2.1 zookeeper安装
官网下载zookeeper.tar.gz并解压
tar -zxvf zookeeper.tar.gz
配置环境变量
export ZOOKEEPER_HOME=/opt/zookeeper-3.5.9
export PATH=$PATH:$ZOOKEEPER_HOME/bin
修改zoo.cfg文件
# ZooKeeper服务器心跳时间,单位为ms
tickTime=2000
# 允许follower连接并同步到leader的初始化连接时间,以tickTime的倍数来表示
initLimit=10
# leader与follower心跳检测最大容忍时间,响应超过syncLimit*tickTime,leader认为
# follower“死掉”,从服务器列表中删除follower
syncLimit=5
# 数据目录
dataDir=/tmp/zookeeper/data
# 日志目录
dataLogDir=/tmp/zookeeper/log
# ZooKeeper对外服务端口
clientPort=2181
新增数据日志文件
mkdir -p /tmp/zookeeper/data
mkdir -p /tmp/zookeeper/log
#启动
zkServer.sh start
#查看运行状态
zkServer.sh status
2.2 kafka安装
官网下载kafka.tar.gz并解压
tar -zxvf kafka.tar.gz
配置环境变量
export KAFKA_HOME=/opt/kafka_2.11_2.0.0
export PATH=$PATH:$KAFKA_HOME/bin
修改配置文件conf/server.properties
# broker的编号,如果集群中有多个broker,则每个broker的编号需要设置的不同
broker.id=0
# broker对外提供的服务入口地址
listeners=PLAINTEXT://localhost:9092
# 存放消息日志文件的地址
log.dirs=/tmp/kafka-logs
# Kafka所需的ZooKeeper集群地址,为了方便演示,我们假设Kafka和ZooKeeper都安装在本机
zookeeper.connect=localhost:2181/kafka
创建日志文件
mkdir -p /tmp/kafka-logs
后台启动kafka
kafka-server-start.sh config/server.properties &
2.3 测试发送接收消息
创建topic
kafka-topics.sh --zookeeper localhost:2181/kafka --create --topic topic-demo --replication-factor 1 --partitions 4
查看topic
kafka-topics.sh --zookeeper localhost:2181/kafka --describe --topic topic-demo
创建消费者
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic-demo
创建生产者
kafka-console-producer.sh --broker-list localhost:9092 --topic topic-demo
>Hello, Kafka!
创作挑战赛
新人创作奖励来咯,坚持创作打卡瓜分现金大奖
以上是关于kafka入门及环境搭建的主要内容,如果未能解决你的问题,请参考以下文章
kakfa从入门到放弃: kafka入门,环境搭建,命令行操作
kakfa从入门到放弃: kafka入门,环境搭建,命令行操作
Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十七)待整理