出现:

在搭建hadoop的HA集群环境后,由于两个namenode的状态不一,当active的namenode由于网络等原因出现假死状态,standby接收不到active的心跳,因此判断active的namenode宕机,但实际上active并没有死亡。此时standby的namenode就会切换成active的状态,保证服务能够正常使用。若原来的namenode复活,此时在整个集群中就出现2个active状态的namenode,该状态成为脑裂。脑裂现象可能导致这2个namenode争抢资源,从节点不知道该连接哪一台namenode,导致节点的数据不统一,这在企业生产中是不可以容忍的。

解决方案:

1、添加心跳线。

原来两个namenode之间只有一条心跳线路,此时若断开,则接收不到心跳报告,判断对方已经死亡。此时若有2条心跳线路,一条断开,另一条仍然能够接收心跳报告,能保证集群服务正常运行。2条心跳线路同时断开的可能性比1条心跳线路断开的小得多。再有,心跳线路之间也可以HA(高可用),这两条心跳线路之间也可以互相检测,若一条断开,则另一条马上起作用。正常情况下,则不起作用,节约资源。

2、启用磁盘锁。

由于两个active会争抢资源,导致从节点不知道该连接哪一台namenode,可以使用磁盘锁的形式,保证集群中只能有一台namenode获取磁盘锁,对外提供服务,避免数据错乱的情况发生。但是,也会存在一个问题,若该namenode节点宕机,则不能主动释放锁,那么其他的namenode就永远获取不了共享资源。因此,在HA上使用"智能锁"就成为了必要措施。"智能锁"是指active的namenode检测到了心跳线全部断开时才启动磁盘锁,正常情况下不上锁。保证了假死状态下,仍然只有一台namenode的节点提供服务。

3、设置仲裁机制

脑裂导致的后果最主要的原因就是从节点不知道该连接哪一台namenode,此时如果有一方来决定谁留下,谁放弃就最好了。因此出现了仲裁机制,比如提供一个参考的IP地址,当出现脑裂现象时,双方接收不到对方的心跳机制,但是能同时ping参考IP,如果有一方ping不通,那么表示该节点网络已经出现问题,则该节点需要自行退出争抢资源的行列,或者更好的方法是直接强制重启,这样能更好的释放曾经占有的共享资源,将服务的提供功能让给功能更全面的namenode节点。

以上的3种方式可以同时使用,这样更能减少集群中脑裂情况的发生。但是还是不能保证完全不出现,如果仲裁机制中2台机器同时宕机,那么此时集群中没有namenode可以使用。此时需要运维人员人工的抢修,或者提供一台新的机器作为namenode,这个时间是不可避免的。希望未来能有更好的解决办法,能彻底杜绝这类情况的发生吧~
---------------------
作者:柯南侦探
来源:CSDN
原文:https://blog.csdn.net/kenan2012/article/details/80781594?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/fengli9998/p/9795969.html

zookeeper脑裂相关推荐

  1. 【zookeeper】zookeeper 脑裂问题

    1.概述 转载:https://blog.csdn.net/yjp198713/article/details/79400927 1.1 为什么zookeeper要部署基数台服务器? 所谓的zooke ...

  2. 【Zookeeper】Zookeeper集群“脑裂”问题处理大全

    本文重点分享Zookeeper脑裂问题的处理办法.ZooKeeper是用来协调(同步)分布式进程的服务,提供了一个简单高性能的协调内核,用户可以在此之上构建更多复杂的分布式协调功能. 脑裂通常会出现在 ...

  3. Zookeeper集群脑裂问题

    关于集群中的"脑裂"问题,之前已经在这里详细介绍过,下面重点说下Zookeeper脑裂问题的处理办法.ooKeeper是用来协调(同步)分布式进程的服务,提供了一个简单高性能的协调 ...

  4. 关于ZooKeeper集群脑裂及其解决方案

    本文来说下ZooKeeper集群脑裂及其解决方案 文章目录 概述 Zookeeper集群节点为什么要部署成奇数 Zookeeper集群中的"脑裂"场景说明 Zookeeper集群& ...

  5. zookeeper的脑裂问题

    关于集群中的"脑裂"问题,不清楚的可以看这里(https://www.cnblogs.com/kevingrace/p/7205846.html),下面重点说下 Zookeeper ...

  6. it 脑裂_脑裂是什么?Zookeeper是如何解决的?

    什么是脑裂 脑裂(split-brain)就是"大脑分裂",也就是本来一个"大脑"被拆分了两个或多个"大脑",我们都知道,如果一个人有多个大 ...

  7. Zookeeper和分布式环境中的假死脑裂问题(转)

    Zookeeper和分布式环境中的假死脑裂问题 最近和同事聊天无意间发现他们的系统也存在脑裂的问题.想想当初在我们的系统中为了解决脑裂花了非常大的功夫,现在和大家一起讨论下脑裂,假死等等这些问题和解决 ...

  8. 脑裂是什么?Zookeeper是如何解决的?

    什么是脑裂 脑裂(split-brain)就是"大脑分裂",也就是本来一个"大脑"被拆分了两个或多个"大脑",我们都知道,如果一个人有多个大 ...

  9. 说说Keepalived的脑裂

    1. 工作场景 Keepalived提供了Loadbalancing和High-Availability的功能, 本文说的是其为2个Mycat节点提供HA功能的场景. 2. 关键配置如下, 为主备非抢 ...

最新文章

  1. C++14尝鲜:Generic Lambdas(泛型lambda)
  2. 福利|PMCAFF问答专家群-社区大咖聚集地
  3. Oracle的奇葩设置之非归档模式与RMAN备份
  4. 推荐一个接口文档工具
  5. 一晚带货千万,谁在买8000一面的健身镜?
  6. 软件设计师10-面向对象-设计模式
  7. WebGL编程指南理论分析之物体层次模型(局部运动)
  8. 使用valgrind检查cache命中率
  9. winscp普通用户向linux根目录中上传文件无法建立远程文件
  10. pygame放大图片_使用Pygame进行游戏开发(3)--绘图
  11. 2022/3/25 阿里笔试ACM模式下Scanner的坑
  12. 怎么将两个PDF合并成一个?这里有三个小妙招分享给你
  13. 两金压降两金指什么_​什么是两金压降
  14. MYSQL统一社会信用代码校验函数
  15. mysql存储特殊表情符号_解决mysql存储特殊文字(表情符号)utf8mb4-阿里云开发者社区...
  16. iOS开发打字机效果
  17. js每日一题(11)
  18. C# 程序间通信的各种途径及解析
  19. 别再问自己适不适合做软件测试了
  20. OpenMV 机器视觉模块 简介

热门文章

  1. 同时使用多网卡提升树莓派网络利用率
  2. Linux cut命令
  3. Thinkphp----------为什么Thinkphp会默认进入Index控制器的index方法
  4. 在SQL Server 2008中配置文件流(FILESTREAM)
  5. 【Laravel-海贼王系列】第九章, Events 功能解析
  6. ASP.NET Web API实践系列06, 在ASP.NET MVC 4 基础上增加使用ASP.NET WEB API
  7. Hibernate学习(九)———— 二级缓存和事务级别详讲
  8. animate默认时长所带来的问题及解决
  9. 在浏览器中进行深度学习:TensorFlow.js (四)用基本模型对MNIST数据进行识别
  10. Composer 篇