今天下午写了一会代码,然后帮同事解决了一个hbase相关的故障分析,定位了问题根源,觉得比较有代表性,记录一下。
先说一下问题的发生与背景。
这个故障其实是分为两个故障的,第一个比较简单,第二个相对复杂一些。

同事写了一个HBase相关的测试代码,使用Hbase原生Java API,编译打包后分别放在两台测试服务器测试,一台可以,另一台不可以。

第一个故障是发生在两台测试服务器的:
A服务器是正常连通的服务器,装了HBase,centos6
B服务器是无法连通的服务器,没装HBase,centos7
表象是在A服务器可以正常跑编译的jar包,B服务器无法正常跑,卡在连接Zookeeper获取table list的部分就不动了。
看到这知道了吧,其实跟服务器装没装HBase一点关系都没有。
首先怀疑是防火墙,先关掉B服务器的firewalld,没起作用,然后用netstat看了一下,发现A服务器连接Hbase走的是tcp,而B服务器是centos7,连接hbase走的是tcp6,而hbase集群是centos6,没有ipv6,禁用B服务器的tcp6,然后仍然没起作用。
netstat查看HBase ZK服务器,跟B服务器也建立连接了,也ESTABLISHED了,就是不返回数据。
之后,唉,在经过35次超时以后,报错日志出来了,是B服务器里缺少一条A主机名IP的映射的关系,而同事写的代码里又要连接B主机里那个并不存在的A主机,于是就卡在了查询主机名的过程中,将A主机加到/etc/hosts里面,故障解决。

然后第二个故障的判断是比较有意思的,仍然是这个程序,我们有两个集群,机房分别在无锡和杭州。该代码需要从杭州机房请求无锡机房的HBase集群取数据,然后跟第一个故障的表象一模一样,毫无区别,都是无法通过zookeeper获取table list,但是整个操作系统环境肯定是没问题。
虽然表象一样,但是原因相差十万八千里。注明一下:无锡的***网段是10开头的A类地址,杭州是172开头的B类地址,需要跑数据的杭州服务器和无锡的HBase之间由运维同事做了***链接。
然后我们动用了jstack,strace各种工具都看不出问题。
jstack提示卡在listTable的线程上,strace卡在FUTEX_WAIT上,看不出来,然后超出35次超时以后的报错也看不出啥问题。HBase的listtable方法只连接单台zk服务器,所以也没有映射全部HBase主机名到hosts的必要。
看了一眼netstat,发现杭州机房172发送了请求杭州机房10网段zk 2181端口的请求,记得是停在了SYN_SEND上,半天也没有ESTABLISHED,然后马上又看了一下无锡HBase的netstat,发现根本没有连接建立,立即大彻大悟。
跟同事分析了一下,应该是***的隧道连接是单向路由或者以NAT方式连接的,我推测应该是无锡10网段的***可能是NAT,是可以通过***连接杭州172网段的,而杭州172网段无法连接无锡10网段,于是让同事在两边分别做了ping测试,结果和我预想的一样,杭州无法ping通无锡,而无锡可以ping通杭州。
因为做***的运维同事不在,打电话问了一下,确实***是单向路由,至此问题就算解决了,等着运维同事回来加路由表应该就好了。
两个问题的排查解决差不多一个多小时吧,没写完kerberos的principal/keytab管理页面就快下班了。这是另外一个集群的故事了。
说明40岁的老程序员还是有点作用的,还是能快速解决点问题,还是有活下去的价值的。

Hadoop运维记录系列(二十二)相关推荐

  1. Hadoop运维记录系列(十二)

    从公司离职有几天了,今天回去看同事,想一起吃饭,没成想摊上大事了.说下午hadoop集群的机房停电了,然后集群就启动不了了,几个人从下午4点多折腾到8点多还没搞定,有几台服务器找不到硬盘,还有内网pi ...

  2. Hadoop运维记录系列(十四)

    周末去了趟外地,受托给某省移动公司(经确认更正,是中国移动位置基地,不是省公司)做了一下Hadoop集群故障分析和性能调优,把一些问题点记录下来. 该系统用于运营商的信令数据,大约每天1T多数据量,2 ...

  3. Hadoop运维记录系列(十六)

    应了一个国内某电信运营商集群恢复的事,集群故障很严重,做了HA的集群Namenode挂掉了.具体过程不详,但是从受害者的只言片语中大概回顾一下历史的片段. Active的namenode元数据硬盘满了 ...

  4. Hadoop运维记录系列(十)

    昨天同事遇到一个hadoop故障,找了半天没看出问题,问到我这里,花了一会解决了一下,估计这是我给暴风的集群解决的最后的故障了,以后就不定给谁解决问题去了. 只截下来了Namenode的报错Log,D ...

  5. Hadoop运维记录系列(三)

    Hive 0.10发布了,修正了一些bug,搞了一些新特性,对提高工作效率很有帮助,于是尝试升级了一下,然后遇到了一些问题,记录一下. 主要是看上了下面几个feature,打算换上看看. 1. All ...

  6. Hadoop运维记录系列(十七)

    上个月通过email,帮朋友的朋友解决了一个Cloudera的Spark-SQL无法访问HBase做数据分析的问题,记录一下. 首先,对方已经做好了Hive访问HBase,所以spark-sql原则上 ...

  7. Python自动化运维开发----基础(十二)函数

    1.函数的定义 函数是对代码块起了一个名字,在需要执行代码块的时候,直接调用函数 >>> def test(): ... print(test) ... >>> t ...

  8. linux 7 realm,系统运维|Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC...

    本教程将告诉你如何将 Ubuntu 桌面版机器加入到带有 SSSD 和 Realm 服务的 Samba4 活动目录域中,以在活动目录中认证用户. 要求: 第 1 步:初始配置 1. 在把 Ubuntu ...

  9. 2021年大数据Hadoop(二十二):MapReduce的自定义分组

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 MapReduce的自定义分组 需求 分析 实现 第一步: ...

最新文章

  1. Linux虚拟机和Window本地共享文件夹用于PHP项目调试
  2. out和ref之间的区别
  3. 第二章matlab数据及其运算,第2章 MATLAB数据及其运算_习题答案
  4. iOS高仿城觅应用客户端项目(开发思路和代码)
  5. $(...).modal is not a function
  6. android bionic memcpy 汇编源码解析
  7. DPDK-VPP 学习笔记-04 Load Balancer plugin nat4 PATCH
  8. 将CCT色温转换成RGB
  9. windows 10专业版关闭自动更新
  10. IOS错误之----警告 Local declaration of 'XXX' hides insta
  11. 加油站会员管理系统用什么好
  12. 爬取京东图书价格信息分析
  13. HCL实验:OSPF路由汇聚
  14. Mechanize使用手册
  15. xarray+cfgrib读取grib文件——报错总结
  16. Redis的maven依赖
  17. 王思聪砸百万组装服务器,跑分全球第4
  18. random seed什么意思
  19. 游戏经济系统——体系设计002
  20. 大屏数据可视化测试-数据准确性校验

热门文章

  1. mongdb安装使用
  2. 全检体系结构风格浅谈
  3. Android之TextView的样式类Span的使用具体解释
  4. Windows Server 2008 R2 SP1遗忘管理员密码后的解决方案
  5. android开发环境建立以及开发工具的使用--怎样使用eclipse来开发android源码
  6. Linux 学习基础入门之Linux发展史
  7. C#设计模式之二十职责链模式(Chain of Responsibility Pattern)【行为型】
  8. 3年测试经验的文艺青年,从京东测试团队浅谈纯功能测试人员该何去何从?
  9. 官方文档,才是正途-docker-compose
  10. 软考培训 - 2014年3月1日信息系统项目管理师开班