热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

磁盘坏道引起的hbase查询错误

1、现象说明早上,客户反映某些日期的历史数据查询不出来(我们系统将历史的汇总数据是保存到Hbase中),从查询端的日志看查询失败(查询端是erlang写的分布式查询引擎)。erlang是通过

1、现象说明
早上,客户反映某些日期的历史数据查询不出来(我们系统将历史的汇总数据是保存到Hbase中),从查询端的日志看查询失败(查询端是erlang写的分布式查询引擎)。erlang是通过HBase提供的thrift 服务接口来查询hbase的,所以进一步去查看thrift server的日志信息,发现如下的错误:
这里写图片描述

备注:并不是所有的查询都失败,只有某些站点的某些日期的数据查询失败。

2、问题的排查和定位
从日志Caused by: java.io.IOException: Failed to read compressed block at 212328226 和 Caused by: java.io.IOException: Invalid HFile block magic: 可以初步判断应该是底层保存的文件出现了问题。
(1)首先登录到NameNode web界面,查看是否有corrupted的block的问题,发现一切正常
(2)然后登录到Hbase的web界面,查看对应的表sum_profile_non_filter_olap_d是否正常,发现一切正常
(3)然后运行一下hbase hbck查看是否有不一致的问题,发现也一切正常
(4)进一步使用hdfs fsck来检查上面出错的信息所对应的文件,发现一切正常
这里写图片描述

(5)根据(4)的输出来定位报错的文件的所有block所在的机器,登录到这些机器上,然后分别查看hbase region server和datanode 的日志,但是并未发现到任何的异常输出
(6)根据1-5,排除了HDFS和Hbase服务的异常情况,唯一剩下的就是服务器的硬件问题了。根据上面的报错信息,怀疑是磁盘出现了问题,但是磁盘出问题会报警啊?
使用下面的命令来查看磁盘的健康情况:
smartctl -H /dev/sdc

[root@dn-5-45 ~]# smartctl -H /dev/sdj
smartctl 5.43 2012-06-30 r3573 [x86_64-linux-2.6.32-504.16.2.el6.x86_64] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net

SMART Health Status: FAILURE PREDICTION THRESHOLD EXCEEDED: ascq=0x5 [asc=5d, ascq=5]

终于找到原因了,原来是磁盘有了坏道。。。。(线上的集群已经运行快三年了,出现磁盘坏道的问题也算正常)

3、问题的解决
对于低版本的hadoop,只能将对应的磁盘从dfs.datanode.data.dir目录上去除掉,然后重启DataNode来生效。
最新版本的hadoop引入了-reconfig来动态的更新结点的配置信息。
(1)将出错的磁盘对应的目录从dfs.datanode.data.dir配置项上去除掉
(2)使用下面的命令来让DataNode重新加载配置文件(注意端口号为:50020)
sudo -u hdfs hdfs dfsadmin -reconfig datanode dn-5-45.ptfuture.com:50020 start
(3)使用下面的命令来确定reconfig是否执行完成
sudo -u hdfs hdfs dfsadmin -reconfig datanode dn-5-45.ptfuture.com:50020 status

4、执行完上面操作之后,客户端查询一切恢复正常

备注:为什么磁盘出问题了,没有报警呢?登录到监控系统,发现磁盘的监控是有warn提醒的,只是当前的监控级别针对该warn并未发出报警信息,通知运维同学补充上对应的监控信息。


推荐阅读
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 本文介绍了DataTables插件的官方网站以及其基本特点和使用方法,包括分页处理、数据过滤、数据排序、数据类型检测、列宽度自动适应、CSS定制样式、隐藏列等功能。同时还介绍了其易用性、可扩展性和灵活性,以及国际化和动态创建表格的功能。此外,还提供了参数初始化和延迟加载的示例代码。 ... [详细]
  • 前言:关于跨域CORS1.没有跨域时,ajax默认是带cookie的2.跨域时,两种解决方案:1)服务器端在filter中配置详情:http:blog.csdn.netwzl002 ... [详细]
  • centos6.8 下nginx1.10 安装 ... [详细]
  • MR程序的几种提交运行模式本地模型运行1在windows的eclipse里面直接运行main方法,就会将job提交给本地执行器localjobrunner执行-- ... [详细]
  • 伸缩性|发生_分布式文件系统设计,该从哪些方面考虑?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了分布式文件系统设计,该从哪些方面考虑?相关的知识,希望对你有一定的参考价值。点击上方关注“ ... [详细]
author-avatar
Paul_Zhao
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有