Kafka 集群中有一个 broker 会被选举为 Controller,负责管理集群 broker 的上下线,所有 topic 的分区副本分配和 leader 选举等工作。

Controller 的管理工作都是依赖于 Zookeeper 的。 
 以下为 partition 的 leader 选举过程:

Leader选举流程

我们试试当这个主节点挂了,谁会被抢到(目前这个brokers/ids/    有0  1  2三个节点)

我们启动zk客户端

[root@backup01 bin]# ./zkCli.sh
Connecting to localhost:2181
2020-04-19 16:05:13,799 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on 06/29/2018 04:05 GMT
2020-04-19 16:05:13,815 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=backup01
2020-04-19 16:05:13,815 [myid:] - INFO  [main:Environment@100] - Client environment:java.version=1.8.0_172
2020-04-19 16:05:13,817 [myid:] - INFO  [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2020-04-19 16:05:13,817 [myid:] - INFO  [main:Environment@100] - Client environment:java.home=/usr/local/java/jdk1.8.0_172/jre
2020-04-19 16:05:13,817 [myid:] - INFO  [main:Environment@100] - Client environment:java.class.path=/usr/local/hadoop/zookeeper/zookeeper-3.4.13/bin/../build/classes:/usr/local/hadoop/zookeeper/zookeeper-3.4.13/bin/../build/lib/*.jar:/usr/local/hadoop/zookeeper/zookeeper-3.4.13/bin/../lib/slf4j-log4j12-1.7.25.jar:/usr/local/hadoop/zookeeper/zookeeper-3.4.13/bin/../lib/slf4j-api-1.7.25.jar:/usr/local/hadoop/zookeeper/zookeeper-3.4.13/bin/../lib/netty-3.10.6.Final.jar:/usr/local/hadoop/zookeeper/zookeeper-3.4.13/bin/../lib/log4j-1.2.17.jar:/usr/local/hadoop/zookeeper/zookeeper-3.4.13/bin/../lib/jline-0.9.94.jar:/usr/local/hadoop/zookeeper/zookeeper-3.4.13/bin/../lib/audience-annotations-0.5.0.jar:/usr/local/hadoop/zookeeper/zookeeper-3.4.13/bin/../zookeeper-3.4.13.jar:/usr/local/hadoop/zookeeper/zookeeper-3.4.13/bin/../src/java/lib/*.jar:/usr/local/hadoop/zookeeper/zookeeper-3.4.13/bin/../conf:
2020-04-19 16:05:13,817 [myid:] - INFO  [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2020-04-19 16:05:13,817 [myid:] - INFO  [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2020-04-19 16:05:13,817 [myid:] - INFO  [main:Environment@100] - Client environment:java.compiler=<NA>
2020-04-19 16:05:13,817 [myid:] - INFO  [main:Environment@100] - Client environment:os.name=Linux
2020-04-19 16:05:13,817 [myid:] - INFO  [main:Environment@100] - Client environment:os.arch=amd64
2020-04-19 16:05:13,817 [myid:] - INFO  [main:Environment@100] - Client environment:os.version=3.10.0-862.el7.x86_64
2020-04-19 16:05:13,817 [myid:] - INFO  [main:Environment@100] - Client environment:user.name=root
2020-04-19 16:05:13,817 [myid:] - INFO  [main:Environment@100] - Client environment:user.home=/root
2020-04-19 16:05:13,817 [myid:] - INFO  [main:Environment@100] - Client environment:user.dir=/usr/local/hadoop/zookeeper/zookeeper-3.4.13/bin
2020-04-19 16:05:13,818 [myid:] - INFO  [main:ZooKeeper@442] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@277050dc
Welcome to ZooKeeper!
2020-04-19 16:05:13,878 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1029] - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2020-04-19 16:05:14,007 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@879] - Socket connection established to localhost/0:0:0:0:0:0:0:1:2181, initiating session
2020-04-19 16:05:14,033 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1303] - Session establishment complete on server localhost/0:0:0:0:0:0:0:1:2181, sessionid = 0x10004d8e0310000, negotiated timeout = 30000WATCHER::WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0]

我们看到  controller    是brokerid:0

[zk: localhost:2181(CONNECTED) 2] ls /
[cluster, controller_epoch, controller, brokers, zookeeper, admin, isr_change_notification, consumers, log_dir_event_notification, latest_producer_id_block, config]
[zk: localhost:2181(CONNECTED) 3] get /controller
{"version":1,"brokerid":0,"timestamp":"1586133981273"}
cZxid = 0x500000003
ctime = Mon Apr 06 08:46:21 CST 2020
mZxid = 0x500000003
mtime = Mon Apr 06 08:46:21 CST 2020
pZxid = 0x500000003
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x2000392dd2c0000
dataLength = 54
numChildren = 0
[zk: localhost:2181(CONNECTED) 5]

当我们的kafkabrokerid挂了之后,zk会为我们怎么选举,我们将kafka的brokerid:0的节点  kill掉

查看这个brokerid为0的节点进程

[root@backup01 bin]# kill -9 19728
[root@backup01 bin]# jps
54464 ZooKeeperMain
12732 Elasticsearch
54750 Jps
14623 QuorumPeerMain
[root@backup01 bin]# 
[zk: localhost:2181(CONNECTED) 7] get /controller
{"version":1,"brokerid":1,"timestamp":"1587284613737"}
cZxid = 0x600000005
ctime = Sun Apr 19 16:23:33 CST 2020
mZxid = 0x600000005
mtime = Sun Apr 19 16:23:33 CST 2020
pZxid = 0x600000005
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x3000065a6f40003
dataLength = 54
numChildren = 0
[zk: localhost:2181(CONNECTED) 8]

大数据技术之kafka (第 3 章 Kafka 架构深入) Zookeeper 在 Kafka 中的作用相关推荐

  1. 大数据技术原理与应用——第一章 大数据概述

    第一章 大数据概述 1.1 大数据时代 1.1.1 第三次信息化浪潮 信息化浪潮 发生时间 标志 解决的问题 代表企业 第一次浪潮 1980年前后 个人计算机 信息处理 Intel.AMD.IBM.苹 ...

  2. 大数据技术原理与应用——第一章

    大数据时代 三次信息化浪潮 信息化浪潮 时间 标志 解决的问题 第一次信息化浪潮 1980 个人计算机 信息处理 第二次信息化浪潮 1995 互联网 信息传输 第三次信息化浪潮 2010 大数据.云计 ...

  3. 百分点大数据技术团队:可插拔OSS架构设计和实战经验

    编者按:随着互联网.大数据和人工智能等技术的发展,信息资源得到最大程度的共享,但随之而来的海量文件存取的功能和性能问题也日渐突出.在政务领域解决方案中,对象存储往往扮演着非常重要的角色,如全国各地的健 ...

  4. 大数据技术之Hive 第4章 DDL数据定义语言

    第4章 DDL数据定义语言 4.1 创建数据库 CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LO ...

  5. 百分点大数据技术团队:互联网舆情系统的架构实践

    现代社会是一个信息驱动的社会,每天都有大量的信息产生. 据统计,互联网上每天有数十亿条媒体文章产生,在线信息检索超过500亿次. 伴随着互联网技术的发展和新媒体创新应用,人们越来越倾向于通过微博.微信 ...

  6. 大数据技术技能分析大赛——第一章 python数据分析概述

    目标:掌握python,进行数据处理.统计分析.回归建模和数据可视化. 教材:<大数据分析务实初级教程(python)## 标题> 第一章 python数据分析概述 1.数据分析概述 1 ...

  7. 大数据技术之Shell 第11章 企业真实面试题

    第10章 正则表达式入门 正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本.在Linux中,grep,sed ...

  8. 大数据技术之 Flume

    为什么选用Flume Python爬虫数据 Java后台日志数据 服务器本地磁盘 文件夹 HDFS Flume Flume最主要的作用就是,实时读取服务器本地磁盘的数据,将数据写入到HDFS. 网络端 ...

  9. axure9数据统计插件_WMDA:大数据技术栈的综合实践

    一.概述 WMDA是58自主开发的用户行为分析产品,同时也是一款支持无埋点的数据采集产品,只需要在第一次使用的时候加载一段SDK代码,即可采集全量.实时的PC.M.APP三端以及小程序的用户行为数据. ...

  10. 大数据技术之MapReduce

    大数据技术之MapReduce 目录 大数据技术之MapReduce 第 1 章 MapReduce 概述 1.1 MapReduce 定义 1.2 MapReduce 优缺点 1.2.1 优点 1. ...

最新文章

  1. DNS服务,A记录,URL转发,MX记录,NS记录,CNAME记录,解释与设置教
  2. 服务器标记“asp:ScriptManager”不明确。
  3. 启动DevStack的各项服务
  4. [No0000E6]C# 判断与循环
  5. linux应用小技巧
  6. netmiko可以连接的设备有哪些_气体报警器可以联动哪些设备
  7. 【git】Git 提示fatal: remote origin already exists 错误解决办法
  8. [c/c++] programming之路(12)、循环结构
  9. PCL中的采集器之一OpenNI
  10. Android冷启动优化解析
  11. k8s的精简版k3s安装
  12. 学生信息管理系统(一)——登录窗体
  13. 如何登录锐捷设备(业务软件篇)
  14. 局域网网络流量监控_网工必知:用于监控企业网络的10款最佳工具,拿走!不谢!...
  15. 美团后台开发暑期实习面经(一面+二面)已offer
  16. [转帖]探秘华为(二):华为和H3C(华三)的分道扬镳
  17. 在3dmax软件中添加样条的方法和详细步骤
  18. 深入浅出PA和LNA
  19. (IROS 2022) 基于事件相机的单目视觉惯性里程计 / Event-based Monocular Visual Inertial Odometry
  20. zookeeper C API 完整运行实例

热门文章

  1. 详细地图_一目了然:蒙城学区划分详细地图
  2. 【OpenCV 例程200篇】89. 带阻滤波器的传递函数
  3. 我的Go+语言初体验——(1)超详细安装教程
  4. iOS开发里面的4个层次
  5. python数据可视化散点图案例_Python数据可视化—散点图_python 数据可视化
  6. 国产自主可控的形式化验证代码自动生成工具ModelCoder可替代Matlab/Sumlink
  7. django项目连接远程数据库
  8. Python中json和pickle模快dumps()、loads()、dump()、load()序列化和反序列化实例
  9. 【Python爬虫】BeautifulSoup4 库的一些用法
  10. MPI对道路车辆情况的Nagel-Schreckenberg 模型进行蒙特卡洛模拟