CDH安装的ZK,三个节点,基本都是默认配置,一直用得正常,今天出现问题,
客户端连接超时6倍时长,默认最大会话超时时间是一分钟。
原因分析:
1.首先要确认网络正确。确认时钟同步。
2.查看现有的配置,基本都是默认配置 JVM配置是1G 有 2g的,不一样
3.查看dataDir目录,du -sh .发现已经有五百多M
具体原因不确定,没有看到日志中出现的问题,
分析可能是因为随着时间的推移,ZOOKEEPER中的数据信息量增大,启动后
因为需要同步的数据量和初始同步时间过短简(initLimit=10)等原因,
造成集群不健康,
解决方案:
1.增大JVM堆栈内存从1G到3G,确认机器上有足够内存,不能SWAP。
2.增大TICKTIME FROM 2000 TO 3000  增加“tickTime”或者“initLimit和syncLimit”的值,或者两者都增大。
3.增大最大客户端连接数 统一为600 (以防万一)

查询相关的资料:

1 参考这位兄弟的文章:菜鸟小玄: https://www.jianshu.com/p/f30ae8e75d6d

一个server广播的数据包括4个部分:

自己所选取的leader的id:首次选举的话,这个id就是自己的id;

当前server保存的数据的zxid:越新就越应该被其它server选为leader,保证数据的最新

逻辑时钟:也就是这是第几次选举,越大表示这是越新的选举;

本机状态:LOOKING,FOLLOWING,OBSERVING,LEADING几种;

每个server收到其它server发来的值后,进行判断,选择所保存的数据最新(zxid最大)、逻辑时钟最大,且在选举状态的id作为leader(当然,还有其它条件,逻辑比较复杂,这里不再赘述),并重新广播。来来回回几次之后,系统达成一致,得票多的为leader,leader被选出。

现在leader被选出,但这并不意味着它能坐稳leader的位置,因为接下来,leader要向所有的follower同步自己所保存的数据(多写问题)。如果这个过程出错或超时,则又需要重新选举leader;

那么一般造成zookeeper集群挂掉的原因是什么呢?归根到底一句话:要同步的数据太大!多大?500M

zookeeper集群中leader和follower同步数据的极限值是500M,这500M的数据,加载到内存中,大约占用3个G的内存。数据过大,在每次选举之后,需要从server同步到follower,容易造成下面2个问题:

网络传输超时,因为文件过大,传输超过最大超时时间,造成TimeoutException,从而引起重新选举。

最后经同事反馈,极有可能是由于大数据所依赖的云平台的IO问题造成的,因为云平台出问题的时间与我们大数据平台故障的时间相一致,而另一个小的物理集群依然正常,

其实这个问题,我分析的时候,按正常的逻辑,应该先检查系统本身的问题,要去var/log/messages中去检查有没有IO相关的错误或其他错误,这是第一步。

因为是云平台的问题,他们坏了一块盘,刚好分在了CDH的管理节点上,我们在日志中找不到INPUT/OUTPUT的错误,只是超时。

这就是HADOOP权威指南中没有不建议使用云平台的原因,容易隐藏问题,还享受不到云平台本身带来的那些优势。

谨记!!!!

记一次ZOOKEEPER集群超时问题分析的更多相关文章

  1. 记一次zookeeper集群搭建错误的排除

    zookeeper官网上的文档说得很清楚. http://zookeeper.apache.org/doc/r3.5.1-alpha/zookeeperAdmin.html#sc_designing ...

  2. zookeeper集群的搭建以及hadoop ha的相关配置

    1.环境 centos7 hadoop2.6.5 zookeeper3.4.9 jdk1.8 master作为active主机,data1作为standby备用机,三台机器均作为数据节点,yarn资源 ...

  3. ZooKeeper1 利用虚拟机搭建自己的ZooKeeper集群

    前言:       前段时间自己参考网上的文章,梳理了一下基于分布式环境部署的业务系统在解决数据一致性问题上的方案,其中有一个方案是使用ZooKeeper,加之在大数据处理中,ZooKeeper确实起 ...

  4. 构建高可用ZooKeeper集群

    ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务,提供了诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知和分布式锁等分布式基础服务.由于 Zo ...

  5. 构建高可用ZooKeeper集群(转载)

    ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务,提供了诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知和分布式锁等分布式基础服务.由于 Zo ...

  6. Zookeeper集群的安装和使用

    Apache Zookeeper 由 Apache Hadoop 的 Zookeeper 子项目发展而来,现已经成为 Apache 的顶级项目,它是一个开放源码的分布式应用程序协调服务,是Google ...

  7. zookeeper集群配置与启动

    摘要:Zookeeper是一个很好的集群管理工具,被大量用于分布式计算.如Hadoop以及Storm系统中.这里简单记录下Zookeeper集群环境的搭建过程.本文以Ubuntu 12.04 LTS作 ...

  8. Linux环境快速部署Zookeeper集群

    一.部署前准备: 1.下载ZooKeeper的安装包: http://zookeeper.apache.org/releases.html 我下载的版本是zookeeper-3.4.9. 2.将下载的 ...

  9. ZooKeeper 03 - ZooKeeper集群的脑裂问题 (Split Brain问题)

    目录 1 ZooKeeper的主从机制 2 什么是ZooKeeper的脑裂 2.1 脑裂现象的表现 2.2 为什么会出现脑裂 3 ZooKeeper如何解决"脑裂" 3.1 3种可 ...

随机推荐

  1. K-mean聚类算法汇聚有用信息——学习笔记

    无监督-无标签 聚类,难点在于评估和调参. k-means最简单实用 基本概念 K值:数据聚成多少类. 质心:各个维度算平均数.Centroid 相似度量:距离来算(欧式距离——直线距离,余弦距离) ...

  2. NPOI导出Excle

    前端: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" con ...

  3. 剑指 offer set 24 扑克牌的顺子

    题目 从扑克牌中任意抽取出 5 张牌, 判断是不是顺子, 并且大小王可以看成任意的数字 思路 1. 把大小王当做 0 插入到数组中, 然后对数组排序 2. 统计相邻两个数之间的空隙数, 若空隙数大于 ...

  4. iOS开发之--png图片编译时报错 (Command /Applications/Xcode.app/Contents/Developer/usr/bin/copypng failed with exit code 1 )

    编译或者运行APP的时候,老是报这个错误:Command /Applications/Xcode.app/Contents/Developer/usr/bin/copypng failed with ...

  5. Python Pypi 修改 国内源(以豆瓣源为例)

    参考:http://pip.readthedocs.io/en/latest/user_guide/#config-file Pypi在国内豆瓣源的地址如下: http://pypi.douban.c ...

  6. 【黑金原创教程】【TimeQuest】【第三章】TimeQuest 扫盲文

    声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...

  7. PHP 开发环境的搭建和使用02--整合让apache处理php

    PHP5.3.5直接下载解压即可.但是怎样才能让apache处理php呢? 1/  在apache 的conf目录下 的 httpd.conf(用于指定apache的设置)加入如下代码:   Load ...

  8. 在JavaWeb项目中处理静态文件或动态链接拼接网站地址的最优处理方案

    在开发网站时候我们会遇到下面问题? - 在引用网页中引用js和css或者动态的Servlet的时候我们是写绝对路径还是相对路径? - 如果写相对路径吧,上线偶尔会报404,还要手动去拼接绝对路径 - ...

  9. PAT 甲级 1068 Find More Coins(0,1背包)

    1068. Find More Coins (30) 时间限制 150 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Eva l ...

  10. wordpress 忘记密码

    update wp_users set user_pass=md5("123456") where user_login='帐号';