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

hbaseput写入数据慢_HBase运维|HBase疑难杂症诊治

hbase2.0处理rit状态记录日期版本号类别描述2019-07-051.0.0A排查hbase2.0的rit问题问题说明由于使用HDP3.0,HDP3.0使用的是

9fd5d79b458d3951dd21bd0d0fd5767f.gif

hbase2.0处理rit状态记录

日期

版本号

类别

描述

2019-07-05

1.0.0

A

排查hbase2.0的rit问题

问题说明

由于使用HDP3.0,HDP3.0使用的是hbase2.0.0版本,hbase的ui页面发现很多表出现了rit,删除表过程中,region的状态卡在了opening。先尝试使用hbck2工具进行修复,发现在hbase2.0的master的rpc方法中没有hbck2中的bypass,assign方法,通过源码发现,hbck2的rpc方法是在hbase2.0.2中才增加的,所以只能尝试手动处理:

一.hdfs上已经没有对应目录,meta里没有对应表状态信息,存在有对应的分区信息

1. 检查表状态

get 'hbase:meta','KYLIN_0054K9NLSU','table:state'

结果为空

2. 通过源码发现表状态

ENABLED,对应meta表里的值\x80\x00
DISABLED, 对应meta表里的值\x80\x01
DISABLING, 对应meta表里的值\x80\x02
ENABLING, 对应meta表里的值\x80\x03

3. 查找分区信息

scan 'hbase:meta',{FILTER => org.apache.hadoop.hbase.filter.PrefixFilter.new(org.apache.hadoop.hbase.util.Bytes.toBytes('KYLIN_0054K9NLSU'))}

发现存在有分区记录

4. 手动修改表状态或者删除分区信息

put 'hbase:meta','KYLIN_0054K9NLSU','table:state','\x80\x01'

或者deleteall 表对应的分区信息,修改后重启hbase,发现rit状态消失

二.hdfs上已经有对应目录,meta里有对应表状态信息和分区信息

1. 确认一下表的信息和数据

hbase hbck -summary TableName

2. 检查表状态

get 'hbase:meta','KYLIN_0354K9NLSU','table:state'

meta表里的值\x80\x02,表的状态为DISABLING

3. 找出异常的region

echo "scan 'hbase:meta',{FILTER => org.apache.hadoop.hbase.filter.PrefixFilter.new(org.apache.hadoop.hbase.util.Bytes.toBytes('KYLIN_0354K9NLSU'))}"|hbase shell -n|grep OPENING

找出异常的region

4. 将region信息更新为CLOSED状态

put 'hbase:meta','KYLIN_0354K9NLSU,,1561953520536.30b7d24eaa3209c6e5e8de764ad04855.','info:state','CLOSED',1562117738678

………

5. 将表状态更新为disable

put 'hbase:meta','KYLIN_0354K9NLSU','table:state',"\x08\x01",1562120793251

重启hbase后rit消失

存在问题

  • rit是删除表的时候出现,所以表中的数据可以忽略,上述操作也是表中没有数据时操作

  • 如果是生成集群,已经存在的数据比较多,不建议直接重启,可以通过切换master的方式

  • 可以使用HDP3.1.1,里面hbase版本是2.0.2,可以使用hbck2操作

  • 使用hbck2的方法的话,修改meta状态后还会同步改zookeeper状态,能避免状态不一致


HBase2.x之RIT问题解决

问题描述

Region-In-Trasition机制:从字面意思来看,Region-In-Transition说的是Region变迁机制,实际上是指在一次特定操作行为中Region状态的变迁,例如merge、split、assign、unssign等操作。RIT问题指的是在RIT过程中出现异常情况,然后导致region的状态一直保持在RIT,使得HBase出现异常。

解决方案

方案一

检查hdfs的健康度,是否有hbase的文件丢失或损坏,运行命令hadoop fsck /,结果如下:

b4917ae33fe8ab34bae8b4767222b39c.png

排除hdfs丢失block的问题。如果出现hdfs的block损坏或丢失的情况,可以通过hdfs的修复命令进行修复。

方案二

在HBase1.x系列中RIT问题通常可以通过hbase  hbck –repair操作完成修复。但是在HBase2.x系列中,该命令还没有支持,所以暂时无法通过这种命令完成修复。结果如下:

836b6a3e16bfbbf559007065b230b1d7.png

第一次执行发现没有权限,root用户不是hdfs的超级用户,安装提示需要以hbase用户去执行该命令。修改如下:

su hbase -s /bin/sh -c "hbase hbck -repair"

f177677e7d2648c16e973ff8da80198e.png

提示为hbase有其他线程正在执行hbck fix命令,但是其实没有这种命令,其实从这里就可以看出HBase2.x对于-repair的支持是不够的。我按照提示删除了hdfs(/hbase/.tmp/)上的hbase-hbck.lock文件,重新运行命令如下:

ea9b8935aef07667d27123c246618672.png

方案三

根据RIT状态执行assign或者unassign命令,状态信息如下:

92297c9aef0c03b9b69e69e4eab98a06.png

经过查询资料,解决方案如下:

57b2c6c0a43b5c5b40d82c097bacd84c.png

hbase shell多次执行unassign '20acfcbd68fd624a78bb34c88f9382d1'和unassign '20acfcbd68fd624a78bb34c88f9382d1' , true都超时结束,通过修改rpc和zk的超时时间都无法完成(正常超时时间为60000ms,修改为600000ms)。

方案四

经过多次试验,最终都无法使得HBase回复正常,最终决定删除进行测试。

Zookeeper节点删除:

通过hbase zkcli命令进入Zookeeper命令行界面:

e6a1530873af870594b1abece7ff7f43.png

我想删除节点 /hbase-unsecure/region-in-transition,但是发现并没有该节点,经过资料查询了解到HBase2.x的RIT状态并不像HBase1.x系列存储在Zookeeper上。经过测试删除/hbase节点重启hbase并不能解决RIT问题。

HBase表删除:

hbase shell>disable M_TDY_PT_LCZZ

disable失败,所以正常删除表操作无法执行。需要进行暴力删除,暴力删除指的是从元数据进行删除。

先停掉HBase

c0ab3e96dc3cabc922a613727d6e3445.png

删除hdfs表目录(记得先备份,等下恢复用)

hdfs dfs -cp /hbase/data/hospital/P_TDY_DASC_DE02_01_039_63 /
hdfs dfs -cp /hbase/data/hospital/M_TDY_PT_LCZZ /
hdfs dfs -rm -r -skipTrash /hbase/data/hospital/P_TDY_DASC_DE02_01_039_63
hdfs dfs -rm -r -skipTrash /hbase/data/hospital/ M_TDY_PT_LCZZ
delete 'hbase:meta','rowkey', 'column'

Rowkey信息可以通过hbase的UI看到:

13cd8de800d61af8cc5a91a95d149c8c.png

ede8816351bd33a84302c71aa4ed9045.png

然后重启HBase,但是发现问题没有解决。

hbase shell查询数据看到hbase的meta删除失败了,原本的meta信息还在:

7bd5b71f6d6c638817ca351b5ad89627.png

然后重新删除(delete命令换成deleteall命令):

fd7781da2f94e639916740a1aad60588.png

6d96e1ad73eadc0e81a1c1471f0ae434.png

再删除Zookeeper中的/hbase节点,重启HBase发现RIT问题已经解决了。

后续就是重建表,然后恢复数据。

Phoenix故障处理笔记

1. Timeline

  • 06-26 16:00 Phoenix使用方反馈慢;

  • 06-26 16:02 同事通过监控看到Phoenix HBase集群一个对应的RegionServer,QueueSize过高,此bug基本是Butch Put Lock在高并发写入的问题,我们已在下个版本中增加信息日志定位此问题;

  • 06-26 16:05 同事重启该队列过高的RegionServer;

  • 06-26 16:10 同事跟我说,好多Phoenix的Region处于RIT状态;

  • 06-26 17:00 暂停该Phoenix集群所有的写入;

  • 06-26 20:00 跟业务沟通,可能会正常影响一段时间,经同意。至此各种hbck,各种重启RegionServer&Master不怎么管用,RIT数量升至550个;

  • 06-27 12:00 尝试修复;

  • 06-27 15:00 问题修复。

2. 处理流程

2.1 异常现象

1. 大量Region无法上线(NotServingRegionException)

db9bcdaf6c9032d3704dcfa99749cc97.png

2. Phoenix的SYSTEM.CATALOG系统表也无法上线。

36cd937066cb56c2e715b2c40fbd330b.png

2.2 处理流程

  1. 手动assign SYSTEM.CATALOG 表的Region上线,并且跟踪Master&对应RegionServer的日志。整个offline&open流程都正常。但是中间会由于各种其他的表不在线failover后close掉;

  2. 打印jstack, 感觉这几个线程有问题,都在waiting;

    29fcc0dffc35f54e72ec1ad7330d7792.png

  • 通过上面的信息看,open region确实有问题。查看Phoenix Indexer Observer源码就会知道是在根据Recover WAL Entry构建索引;

  • 修改hbase.regionserver.executor.openregion.threads数,此配置是负责open region的handler数:


        hbase.regionserver.executor.openregion.threadsname>
        50value>
    property>

    默认 3, 我们这边的hbase版本(1.0.0-cdh5.4.4)

  • 重启RegionServer;

  • assign SYSTEM.CATAOG 表的Region,上线成功;

  • 修修补补,fixMeta fixAssignments就ok了。

3. 原理分析

1. 重启RegionServer, 会造成该RegionServer上面的Region下线,并且被重新Balance到新的RegionServer中。

2. Region在新的RegionServer中open过程会找到该Region下的recover.edits 文件,进行replay;

3.Phoenix表使用HBase的协处理类型之Observer,具体使用查看示例

org.apache.phoenix.hbase.index.Indexer,此用作根据WAL构建索引的,具体参考Phoenix的相关材料。

4. 在SYSTEM.CATALOG 的打开过程中,会查询其他的里面表,其他的表也处于RIT未恢复。然而其他的表Region在open的过程也需要构建Index,尚且有一部分在openregion的队列里面。最终SYSTEM.CATALOG无法上线(此处不准确,纯属囫囵吞枣似的查看源码推测)。

5. 增加open region handler数之后,重启RegionServer后,需要进行一些hbck -fixMeta -fixAssginment 将一些未上线的Region上线, 就ok了。

6. 如果出现个别的Region还是上线失败,那就手动解决吧!个人认为比hbck -repair暴力修复靠谱。

b808fcb4e4d861c556224ecf9715ecd3.png



推荐阅读
  • HBase Java API 进阶:过滤器详解与应用实例
    本文详细探讨了HBase 1.2.6版本中Java API的高级应用,重点介绍了过滤器的使用方法和实际案例。首先,文章对几种常见的HBase过滤器进行了概述,包括列前缀过滤器(ColumnPrefixFilter)和时间戳过滤器(TimestampsFilter)。此外,还详细讲解了分页过滤器(PageFilter)的实现原理及其在大数据查询中的应用场景。通过具体的代码示例,读者可以更好地理解和掌握这些过滤器的使用技巧,从而提高数据处理的效率和灵活性。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • 在Linux系统中,原本已安装了多个版本的Python 2,并且还安装了Anaconda,其中包含了Python 3。本文详细介绍了如何通过配置环境变量,使系统默认使用指定版本的Python,以便在不同版本之间轻松切换。此外,文章还提供了具体的实践步骤和注意事项,帮助用户高效地管理和使用不同版本的Python环境。 ... [详细]
  • 大数据领域的职业路径与角色解析
    本文将深入探讨大数据领域的各种职业和工作角色,帮助读者全面了解大数据行业的需求、市场趋势,以及从入门到高级专业人士的职业发展路径。文章还将详细介绍不同公司对大数据人才的需求,并解析各岗位的具体职责、所需技能和经验。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • Spark与HBase结合处理大规模流量数据结构设计
    本文将详细介绍如何利用Spark和HBase进行大规模流量数据的分析与处理,包括数据结构的设计和优化方法。 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
  • Kafka 是由 Apache 软件基金会开发的高性能分布式消息系统,支持高吞吐量的发布和订阅功能,主要使用 Scala 和 Java 编写。本文将深入解析 Kafka 的安装与配置过程,为程序员提供详尽的操作指南,涵盖从环境准备到集群搭建的每一个关键步骤。 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • 在搭建Hadoop集群以处理大规模数据存储和频繁读取需求的过程中,经常会遇到各种配置难题。本文总结了作者在实际部署中遇到的典型问题,并提供了详细的解决方案,帮助读者避免常见的配置陷阱。通过这些经验分享,希望读者能够更加顺利地完成Hadoop集群的搭建和配置。 ... [详细]
  • 本文详细介绍了HDFS的基础知识及其数据读写机制。首先,文章阐述了HDFS的架构,包括其核心组件及其角色和功能。特别地,对NameNode进行了深入解析,指出其主要负责在内存中存储元数据、目录结构以及文件块的映射关系,并通过持久化方案确保数据的可靠性和高可用性。此外,还探讨了DataNode的角色及其在数据存储和读取过程中的关键作用。 ... [详细]
  • 本文整理了Java中org.jboss.netty.buffer.ChannelBuffer.readUnsignedInt()方法的一些代码示例,展示了C ... [详细]
  • Storm集成Kakfa
    一、整合说明Storm官方对Kafka的整合分为两个版本,官方说明文档分别如下:StormKafkaIntegratio ... [详细]
author-avatar
吉樺雄_910
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有