kafka_2.11-0.11.0.1集群搭建
时间:2022-05-06
本文章向大家介绍kafka_2.11-0.11.0.1集群搭建,主要内容包括一、准备工作、二、搭建Zookeeper集群、三、搭建Kafka集群、四、验证Kafka集群正常工作、五、界面管理、六、参考文档、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
本文搭建一个三节点的Kafka集群。该集群有三个Zookeeper、三个Kafka Broker。
一、准备工作
-
解压kafka安装包,获得如下目录:
unzip kafka_2.11-0.11.0.1.zip
kafka_2.11-0.11.0.1
-
Kafka目录结构:
展示如下内容:
.
├── LICENSE
├── NOTICE
├── bin
├── config
├── libs
├── logs
└── site-docs
cd kafka_2.11-0.11.0.1
tree -L 1
二、搭建Zookeeper集群
-
将目录切换到
Kafka
的config
目录,要修改的主要是server.properties以及zookeeper.properties两个配置文件。 对Kafka感兴趣的童鞋们可前往 https://www.cnblogs.com/jun1019/p/6256371.html 了解Kafka常用配置属性详解。server.properties kafka配置文件
zookeeper.properties zookeeper配置文件
-
修改
zookeeper.properties
: Zookeeper配置详解可参考:http://blog.csdn.net/lengzijian/article/details/9226867initLimit=10
syncLimit=5
dataDir=/Users/apple/Desktop/zookeeper # zookeeper的快照存储地址
-
clientPort=2181
# zookeeper端口
-
maxClientCnxns=0
# 单个客户端与单台服务器之间的连接数的限制
-
server.1=IP1:2888:3888
# server.x中的x要与myid中的数字一致,2888用于follower与leader之间的数据同步与其他通信;3888用于leader选举时的通信。
server.2=IP2:2889:3889
server.3=IP3:2890:3890
-
将目录切换到
dataDir
目录,并创建myid文件,内容分别是1、2、3。注意myid的内容要与server.x
中的x相一致。cd /Users/apple/Desktop/zookeeper
vim myid
-
三台机器都配置好
zookeeper.properties
并创建myid
文件后,即可进行测试。依次在三台机器上执行如下命令,即可启动Zookeeper集群。-
cd kafka_2.11-0.11.0.1
# 切换到你的Kafka目录
nohup bin/zookeeper-server-start.sh config/zookeeper.properties &
-
- 观察启动日志,确认启动无误。
三、搭建Kafka集群
搭建完Zookeeper集群后,Kafka集群的搭建就完成了一大半。下面我们来搭建Kafka集群:
-
在Kafka的config目录下创建文件
server-cluster.properties
,在其中填写如下内容: 当然,这里server-cluster.properties
名称不是强制的,你可以叫其他名字;不仅如此,也可直接修改server.properties
。-
broker.id=1
# kafka broker的id,三个节点不能相同
listeners=PLAINTEXT://:9094 # kafka所使用的端口
log.dir=/tmp/kafka-logs # kafka日志路径
zookeeper.connect=xxx,yyy,zzz # Zookeeper集群的地址列表,IP:PORT的形式,多个用,分隔
-
-
依次在三台机器执行如下命令,启动Kafka
-
cd kafka_2.11-0.11.0.1
# 切换到你的Kafka目录
bin/kafka-server-start.sh config/server-cluster.properties &
-
- 观察启动日志,确认启动无误。
四、验证Kafka集群正常工作
-
创建一个Topic,其中的xxx、yyy、zzz是Zookeeper的地址,形式为IP:PORT
-
bin/kafka-topics.sh --create --zookeeper xxx,yyy,zzz --replication-factor 3
--partitions 1
--topic my-replicated-topic
-
-
我们现在已经搭建了一个Kafka集群,并创建了一个Topic,但我们如何知道每个broker在做什么呢?可使用
describe topics
命令: 其中,第一行是对所有partition的摘要,每个附加行给出了每个partition的详情,这里只有一个partition,所以只有一行。 leader是负责给定partition所有读写的节点,每个节点将称为partition随机选择部分的leader。 replicas是复制此partition日志的节点列表,无论它们是否leader,即使它们处于活动状态。 isr是一组in-sync
副本,这是replicas列表的子集,这些副本当前活动,并被引导到leader。bin/kafka-topics.sh --describe --zookeeper xxx,yyy,zzz --topic my-replicated-topic
-
Topic:my-replicated-topic PartitionCount:1
ReplicationFactor:3
Configs:
-
Topic:
my-replicated-topic Partition:
0
Leader:
1
Replicas:
1,3,2
Isr:
1,3,2
笔者按:isr常被翻译成“副本同步队列”。 leader、replicas、isr可参考:https://www.cnblogs.com/mengyou0304/p/4836555.html
-
创建一个生产者:
地址为IP:PORT的形式,多个用逗号分隔
-
bin/kafka-console-producer.sh --broker-list kafka集群地址列表
--topic my-replicated-topic
-
-
另启一个窗口,创建消费者:
kafka地址为IP:PORT的形式,为Kafka集群中的任意一个节点。
-
bin/kafka-console-consumer.sh --bootstrap-server kafka地址
--from-beginning --topic my-replicated-topic
-
- 在生产者窗口输入任意文字,看在消费者窗口能否接收。如果能正常接收,说明Kafka集群搭建成功。
五、界面管理
参考笔者博客Kafka Manager管理Kafka集群:http://www.itmuch.com/work/kafka-manager/
六、参考文档
- Kafka官方文档:http://kafka.apache.org/quickstart
- Kafka 0.9集群搭建文档:http://blog.csdn.net/gongxinju/article/details/53415051
- Reporting Service报表开发
- 不要信任云:这不只是安全的问题
- C#温故而知新—闲话.Net
- c# IO&&线程 打造 定时打开指定程序
- 前FDIC主席:比特币政策不应打击加密货币发展
- 任何人都不应该控制区块链供应链
- c# IO操作(带进度的文件复制器,读取文本文件的指定行)
- 高科技来了!玩游戏一样开船的时代来了……
- C++库大全
- 人工智能行业前景预测 全球市场或超2700亿元
- Arxiv网络科学论文摘要14篇
- 工信部:网络强国建设2018年重点工作任务
- 刚刚!张小龙再出重磅!微信小程序掀起新零售红利狂潮!
- 无人驾驶系列——深度学习笔记:Tensorflow的安装-windows系统
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 每日一题 | 二进制操作问题
- Pandas | Dataframe的merge操作,像数据库一样尽情join
- 每日一题 | 灾后重建问题
- 树形结构已知子节点找父节点
- 解析 hashMap 源码之基本操作 get
- RCE(远程命令/代码执行漏洞)原理及复现
- 我的Vue不小心跨域了o(╥﹏╥)o 干它
- 金九银十准备季——Java后端多线程&并发面试题及答案(二)
- TypeScript 设计模式之观察者模式
- pytest文档46-关于https请求警告问题
- pytest文档45-allure添加环境配置(environment)
- Pytest fixture参数化params
- Python 批量合并 Excel
- 用 Python 了解一下最炫国漫《雾山五行》
- Python 基础(六):列表与元组