基础知识
什么是kafka
Kafka是分布式发布-订阅消息系统,它最初是由LinkedIn公司开发的,之后成为Apache项目的一部分,Kafka是一个分布式,可划分的, 冗余备份的持久性的日志服务,它主要用于处理流式数据。
kafka的设计初衷
1.能够应对海量实时消息数据–高吞吐,低延时
2.需要有分布式的系统特征:高可用,水平扩展
kafka的名词库
1.Broker:代理,就是kafka的一台节点
2.Producer:生产者,向kafka推送消息的角色
3.Consumer:消费者,从kafka拉取消息的角色
4.ConsumerGroup:消费者组,对消费者进行管理
5.Topic:主题,用于区分消息的,对不同的业务类别进行区分
6.Partition:分区,类似于HDFS的分块,目的是为了提高读取效率
7.Replication:副本,保证数据安全性
8.Leader:主副本,某一个主题可以有多个副本,但是只能有一个主副本,支持读写
9.Follower:副本,某一个主题可以有多个副本,但是只能有一个主副本,剩下的都是副本,副本只负责同步数据进行备份,不支持读写,因为读写效 率的提高是依赖分区如果要从副本读取数据,就很难保证数据的一致性
10.Record:记录,发送\消费的一条数据
11.Offset:偏移量,可以理解为消息的编号
12.Segment:分段/日字段
13.ISR:In-Sync Replica:表示目前活着的且能够和主副本尽量保持数据同步的从副本的集合
安装配置kafka(单机介绍)
安装
下载的包是编译好的版本,解压就能使用
[root@localhost ~]# wget http://archive.apache.org/dist/kafka/0.8.2.1/kafka_2.11-0.8.2.1.tgz
[root@localhost ~]# tar -zxf kafka_2.11-0.8.2.1.tgz -C /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost local]# mv kafka_2.11-0.8.2.1/ kafka
[root@localhost local]# cd kafka/
配置
1、kafka
[root@localhost kafka]# mkdir -p /usr/local/kafka/log/kafka
[root@localhost kafka]# cd /usr/local/kafka/config/
[root@localhost config]# vim server.properties
broker.id=0
port=9092 #端口号
host.name=192.168.220.172 #服务器IP地址,修改为自己的服务器IP
log.dirs=/usr/local/kafka/log/kafka #日志存放路径,上面创建的目录
zookeeper.connect=localhost:2181 #zookeeper地址和端口,单机配置部署,localhost:2181
2、zk
[root@localhost config]# mkdir /usr/local/kafka/zookeeper
[root@localhost config]# mkdir /usr/local/kafka/log/zookeeper
[root@localhost config]# vim zookeeper.properties
[root@localhost config]# cd /usr/local/kafka/conf
[root@localhost kafka]# vi zookeeper.properties
dataDir=/usr/local/kafka/zookeeper #zookeeper数据目录
dataLogDir=/usr/local/kafka/log/zookeeper #zookeeper日志目录
clientPort=2181
maxClientCnxns=100
tickTime=2000
initLimit=10
syncLimit=5
启动zk
[root@localhost kafka]# /usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties &
启动kafka
[root@localhost kafka]# /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties &