ApacheKafka
Apache Kafka
⼀、概述
Apache Kafka是⼀个分布式的流数据平台,代表三层含义:
Publish/Subscribe: 消息队列系统 MQ(Message Queue)
Process: 流数据的实时处理(Stream Process)
Store: 流数据会以⼀种安全、容错冗余存储机制存放到分布式集中
架构
应⽤场景
构建实时的流数据管道,在系统和应⽤之间进⾏可靠的流数据传输
构建实时的流数据处理应⽤,对流数据进⾏转换和加⼯处理
核⼼概念
Cluster: kafka⽀持⼀到多个服务构成的分布式集,每⼀个服务实例成为Broker
Topic: 某⼀个分类的消息的集合,如:订单的topic、商品的topic等
Partition: ⼀个Topic有若⼲个分区(Partition)构成,分区的数量在创建Topic时⼿动指定
Replication: 分区副本,是Partition的冗余备份分区,当Partition不可⽤时,ZooKeeper会⾃动将Replication(Follower)分区升级为Partition(Leader)分区
Offset: 分区中的Record的位置标⽰,每⼀个消费者都会记录⾃⼰的消费位置(offset)
Topic和Log
Each partition is an ordered, immutable sequence of records that is continually appended to—a structured commit log Kafka的每⼀个分区(Partition),都是⼀个有序、不可变的持续追加的记录序列,Kafka会以⼀种结构化的提交⽇志保存分区中的数据。
注意:在分区中写⼊数据时,会在队列的末尾进⾏追加,每⼀个消费者都维护的有⼀个⾃⼰的消费位置(offset)
⼆、环境搭建
完全分布式的Kafka集
准备⼯作
分布式集中时钟同步
JDK1.8以上
ZooKeeper集服务运⾏正常
[root@HadoopNode0* zookeeper-3.4.6]# vi conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/zk/data
clientPort=2181
server.1=hadoopnode01:2887:3887
server.2=hadoopnode02:2888:3888
server.3=hadoopnode03:2889:3889
[root@HadoopNode0* zookeeper-3.4.6]# cd /home/zk
[root@HadoopNode0* zk]# mkdir data
[root@HadoopNode0* zk]# vi data/myid
# Node01
1
# Node02
2
# Node03
3
[root@HadoopNode0* zookeeper-3.4.6]# bin/zkServer.sh start conf/zoo.cfg
# 如何判断zookeeper集服务正常
[root@HadoopNode03 zookeeper-3.4.6]# bin/zkServer.sh status conf/zoo.cfg
JMX enabled by default
Using config: conf/zoo.cfg
Mode: leader  (⼀主两从)
安装配置
将安装包上传并复制到其它节点
# 上传到某⼀个服务器,并拷贝给其它服务器
[root@HadoopNode01 ~]# scp kafka_2.11-2. root@hadoopnode02:~
kafka_2.11-2.                                                                        100%  61MB  61.0MB/s  00:00 [root@HadoopNode01 ~]# scp kafka_2.11-2. root@hadoopnode03:~
kafka_2.11-2.
安装Kafka
[root@HadoopNode0* ~]# tar -zxf kafka_2.11-2. -C /usr
[root@HadoopNode01 kafka_2.11-2.2.0]# ll
total 52
drwxr-xr-x. 3 root root  4096 Mar 102019 bin  # 指令
drwxr-xr-x. 2 root root  4096 Mar 102019 config  # 配置⽂件
drwxr-xr-x. 2 root root  4096 Oct  9 08:56 libs  # 依赖jar包
-rw-r--r--. 1 root root 32216 Mar 102019 LICENSE
-rw-r--r--. 1 root root  336 Mar 102019 NOTICE
drwxr-xr-x. 2 root root  4096 Mar 102019 site-docs  # 使⽤⽂档
环境配置
修改kafka核⼼配置⽂件server.properties
[root@HadoopNode01 kafka_2.11-2.2.0]# vi config/server.properties
broker.id=0|1|2
listeners=PLAINTEXT://HadoopNode0[1|2|3]:9092
log.dirs=/usr/kafka_2.11-2.2.0/data
启动服务
启动
[root@HadoopNode0* kafka_2.11-2.2.0]# bin/kafka-server-start.sh -daemon config/server.properties [root@HadoopNode0* kafka_2.11-2.2.0]# jps
10386 Kafka
10517 Jps
3276 QuorumPeerMain
关闭
[root@HadoopNode0* kafka_2.11-2.2.0]# bin/kafka-server-stop.sh config/server.properties
三、基础使⽤
命令⾏操作
Topic使⽤
新建Topic
[root@HadoopNode01 kafka_2.11-2.2.0]# bin/kafka-topics.sh --bootstrap-server HadoopNode01:9092,HadoopNode02:9092,HadoopNode03:9092 --t opic t1 --partitions 3 --replication-factor 3 --create
展⽰Topic列表
[root@HadoopNode01 kafka_2.11-2.2.0]# bin/kafka-topics.sh --bootstrap-server HadoopNode01:9092,HadoopNode02:9092,HadoopNode03:9092  --l ist
删除Topic
[root@HadoopNode02 kafka_2.11-2.2.0]# bin/kafka-topics.sh --bootstrap-server HadoopNode01:9092,HadoopNode02:9092,HadoopNode03:9092  --delete --topic t2
描述Topic
[root@HadoopNode02 kafka_2.11-2.2.0]# bin/kafka-topics.sh --bootstrap-server HadoopNode01:9092,HadoopNode02:9092,HadoopNode03:9092  --describe --topic t1
Topic:t1        PartitionCount:3        ReplicationFactor:3    Configs:segment.bytes=1073741824
Topic: t1      Partition: 0    Leader: 0      Replicas: 0,2,1 Isr: 0,2,1
Topic: t1      Partition: 1    Leader: 2      Replicas: 2,1,0 Isr: 2,1,0
Topic: t1      Partition: 2    Leader: 1      Replicas: 1,0,2 Isr: 1,0,2
# 测试:kill掉Node03上的kafka服务实例也就是broker【2】
[root@HadoopNode02 kafka_2.11-2.2.0]# bin/kafka-topics.sh --bootstrap-server HadoopNode01:9092,HadoopNode02:9092,HadoopNode03:9092  --describe --topic t1
Topic:t1        PartitionCount:3        ReplicationFactor:3    Configs:segment.bytes=1073741824
Topic: t1      Partition: 0    Leader: 0      Replicas: 0,2,1 Isr: 0,1
Topic: t1      Partition: 1    Leader: 1      Replicas: 2,1,0 Isr: 1,0
hadoop分布式集搭建Topic: t1      Partition: 2    Leader: 1      Replicas: 1,0,2 Isr: 1,0
# 测试:恢复运⾏Node03上的Kafka服务实例Broker[2],第三列信息不改变的原因:(分区的Leader都存在,不会触发ZK的故障转移),第五列信息不变[root@HadoopNode02 kafka_2.11-2.2.0]# bin/kafka-
topics.sh --bootstrap-server HadoopNode01:9092,HadoopNode02:9092,HadoopNode03:9092  --describe --topic t1
Topic:t1        PartitionCount:3        ReplicationFactor:3    Configs:segment.bytes=1073741824
Topic: t1      Partition: 0    Leader: 0      Replicas: 0,2,1 Isr: 0,1,2
Topic: t1      Partition: 1    Leader: 1      Replicas: 2,1,0 Isr: 1,0,2
Topic: t1      Partition: 2    Leader: 1      Replicas: 1,0,2 Isr: 1,0,2

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。