HBase Bug 知多少

hbase可视化:hbaseGUI的安装与使用 HbaseGUI可视化工具,通过Hbase-client直接操作Hbase。提供可视化查询、元数据管理和支持预分区建表三大功能。 阅读详情

HBase在阿里集团大规模使用已经有一年多时间了,随着online应用越来越多,对HBase的稳定性、实时性、可维护性要求越来越高。在业界HBase的发展也越来越快,每次技术论坛无疑都成为主角,但很多同学都还有疑惑:HBase真的靠谱么?在核心应用能大规模使用么?下面我就从测试的角度,分析下我们发现的bug,通过这些问题来了解HBase的发展现状和淘宝在稳定性上所做的一些工作。



HBase在阿里

目前阿里集团重点维护了2个版本:0.90和0.94。其中0.90为稳定版,适用于数据量并不太大(TB级),不是太关心coprocessor等新特性,对稳定性要求很高的应用。0.94为新特性版本,拥有更高的性能和社区最新新特性,适合数据量巨大(PB级),需要尝试新特性的应用。通过0.94的维护,我们也为社区最新代码提供了很多patch,推动社区发展。

HBase Bug 知多少

到目前为止,我们共发现bug 328个,其中Blocker 34个,Critical 41个,Major 205个, Minor 48个。提交官方社区patch 58个,其中其中Blocker 1个,Critical 9个,Major 44个, Minor 4个。从数字上看bug的确很多,但并不是说HBase不稳定,通过这么多bug的fix,我们解决了非常多极端小概率场景、异常场景的问题,预防了很多bug的上线,丰富了工具、日志、监控、运维工具等等,使得HBase稳定性提高到了新的高度。

HBase 哪里最不靠谱

HBase的开发、测试、运维人员以及用户,恐怕最关心的就是HBase到底靠不靠谱,哪里问题最多。好吧,我将发现300多个bug分了14类,通过下面的图表,可以清楚的看到风险最大的模块,这些模块同样也是我们投入工作最多的内容。

1、region assign:region分配相关,由于是分布式事务,在异常情况下出现bug的概率很高,也是发现bug最多的部分,常见故障为region二次分配、长时间不分配、ROOT META表分配异常、master多个处理线程冲突等。可以导致region无法服务或者数据丢失。

2、compact:compact部分总体上看是相当稳定的,由于实现较简单并没有太多bug,淘宝在compact方面加入和很多策略(多线程、错峰)来适应线上系统的需求。

3、split:bug重灾区,原因也是由于他是个一个复杂的事务,并且需要回滚。在0.90中我们还无法完全弃用split,因此这些bug必须得到修复而不能通过运维来避免,目前已经相当稳定。

4、flush:实现较为简单,在控制部分有些bug。

5、correctness:读写行为的正确性,是HBase最为核心的部分,目前官方0.90和0.94版本都有部分正确性问题的bug,尤其是0.90版本中读写原子性上还有问题,但是出现概率很低,场景也较为极端,一般应用很少会遇到。在后续版本也考虑进行彻底的fix。社区现在还没有打算在0.90上彻底修复。

6、wal:日志是HBase的核心功能之一。常见bug存在于分割日志和恢复日志两部分,导致数据恢复不正确及数据丢失。另外在线上日志分割速度也是故障影响时间的决定因素,在这方面也投入了不少精力进行测试和优化,目前已经有了非常理想的效果。

7、ddl:HBase中常用ddl操作是create table、disable、enable、alter。在进行这些ddl操作时如果系统发生异常很可能无法得到正确的处理,目前社区也没有修复完毕。

8、abort:HBase中有很多异常发生都会导致server abort,尽量缩减和避免这些场景发生也是保证系统稳定的一大手段。因此做了不少修改避免了不应该发生的abort行为,并且修复了abort行为发生后的一些bug。

9、zk:0.90版本中针对zk发生异常的处理很弱,基本可认为无抵抗力,在0.94社区已经做了较多改进。但是从我们测试情况来看,过度依赖zk还是会被zk的一些自身问题牵绊,导致系统不稳定。

10、client:总体上说client还好,使用0.90.6以后版本和0.94.2都能保证较高的稳定性。0.94前期版本含有较多致命bug,还需要慎重使用。

11、replication:HBase自带的replication部分不是很满足淘宝线上应用的需求,我们对这部分做了较多重构,目前还在准备上线中。

12、gc:gc的bug主要来自不适合的gc配置引起的fullgc或者gc频繁。出现fullgc后系统会有一些不稳定的地方,在代码上做了一些保障来防止发生fullgc对系统的致命影响。

13、testcase:接触HBase单元测试的同学肯定会发现其实官方提供的case很多并不稳定,我们做了一些排查和修正,避免了不合理的偶然失败出现。

14、tools&other:主要是一些运维工具和脚本、监控、日志等。为了加强HBase的可运维性,淘宝做了很多建设性的事情,比如建立了完善的监控体系,而且正在建立一套trace工具来跟踪一些可疑请求以及分析线上系统性能。

从线上看Bug

对于HBase这种存储系统来说,对外接口相对单一,但是内部实现较为复杂。这种特性决定了我们发现bug的多数都是小概率问题,因为容易出现的问题在用户使用时都已发现,往往也较容易修复。不少同学会认为,这些并不是大问题,几乎可以忽略。可是经验告诉我们恰恰相反,在线上应用并不多的时候,一些极端场景就已出现过,因为我们的请求每天均以亿计,而且线上一旦出现故障就是非常复杂的场景,甚至可能超过测试系统的预估。稳定性并不是一天做出来的,不放弃任何一个小问题才能保证真正的稳定,希望与各位同仁共同努力。


原文地址:http://www.taobaotesting.com/blogs/2156

[面试]SoC验证工程师面试常见问题(三) SoC 验证工程师面试中,SystemVerilog、UVM 和 SystemC 的代码题目通常涵盖面向对象编程、约束随机化、UVM 组件设计、内存建模等主题。通过练习上述示例题目和理解关键点,你可以更好地应对现场编码环节。如果有具体的面试方向(如特定协议验证)或公司偏好,可以提供更多信息,我会进一步定制题目和答案。祝你面试顺利! 阅读详情

相关推荐

在统信UOS Server 20上踩坑记:手把手教你搞定openGauss 5.0.0企业版安装(附常见报错解决方案)

本文详细记录了在统信UOS Server 20上安装openGauss 5.0企业版的实战经验,包括环境准备、依赖库问题、目录权限、内存参数调优等常见问题的解决方案。通过伪装系统标识、建立软链接、调整内存参数等方法,成功克服国产操作系统与企业级数据库的兼容性挑战,为开发者提供了一份深度排雷指南。

weixin_28698059的博客 263

解决Hbase的几个常见bug

1. 在Eclipse中使用hbase和hadoop时遇到以下bug:

Arthur-Chen的专栏 2776

Cesium生态盘点:超图、火星3D等15个二次开发框架对比

本文深入解析Cesium生态中的15个二次开发框架,包括超图、火星3D等主流选择,帮助开发者根据项目需求进行精准选型。从性能表现、功能完备性、开发友好度等维度进行对比,特别适合需要处理地理空间数据和构建三维可视化的JavaScript开发者。

weixin_28197941的博客 497

Hbase运行不稳定,通过修改系统配置(THP)解决Hbase运行过程中时常出现宕机的问题

问题 ​前段时间由于项目需要将spark计算后的大量数据插入到HBbase数据库中,但在项目进行过程中发现整个Hadoop集群很不稳定,集群状态中CPU使用率很高,运行一段时间后HBase运行不稳定或者Hbase集群挂掉。 说明 ​数据库的性能表现与很多因素相关,比如数据库本身的参数配置、客户端API的使用、表和字段的设计,及操作系统、JVM等。THP是为了提升性...

bear 958

从静态到动态:如何用Deformable 3DGS和4DGS实现高效动态场景建模

本文深入探讨了Deformable 3DGS和4DGS在动态场景建模中的技术突破,详细解析了这两种方法如何高效处理动态内容。Deformable 3DGS通过引入时间维度的变形场扩展传统3DGS,而4DGS则采用四维时空体素分解方法,两者均显著提升了动态场景建模的效率和质量,适用于虚拟现实、增强现实等应用场景。

weixin_29063035的博客 433

告别玄学调参:手把手教你用20元件模型搞定GaN HEMT高频仿真(附S参数提取避坑指南)

本文详细介绍了如何使用20元件模型优化GaN HEMT高频仿真,解决传统16元件模型在10GHz以上频段的误差问题。通过S参数提取避坑指南和实战案例,帮助工程师精准建模分布式电极效应和寄生反馈路径,提升射频电路设计效率。

weixin_42523693的博客 441

HBase不稳定因素分析

Hbase不稳定因素分析 配置问题 内存配置不正确 目前hbase内存主要如下几个配置项: 1)HBASE_HEAPSIZE HBase RegionServer是内存贪婪性的,按照经验判断至少8~16G内存,但也不宜过大,更多内存应该分配给HBASE_OFFHEAPSIZE 2)HBASE_OFFHEAPSIZE Hbase offheap内存为非堆内存,主要在hbase缓存数据时使用,需

博学而笃志,切问而近思 5323

ABB RobotStudio 和 S7-PLCSIM Advanced V5.0 搭建虚拟通信环境,实现 PLC 对机器人布尔量、数字量和模拟量的控制。

本教程详细介绍了如何利用ABB RobotStudio和S7-PLCSIM Advanced V5.0搭建虚拟通信环境,实现PLC对机器人的布尔量、数字量和模拟量控制。主要内容包括:在TIA Portal V20中配置PLC项目并编写通信程序;通过S7-PLCSIM Advanced创建虚拟PLC运行环境;在RobotStudio中设置机器人PROFINET通信;以及建立虚拟网络连接并进行功能测试。该方案适用于工业自动化虚拟调试,可显著降低现场调试风险。操作需注意软件版本兼容性、网络配置及信号映射准确性,最

CHUXUEZHE8210的博客 2515

Hbase很不稳定,输入hb无法联想出hbase,好像环境变量没生效是的。

在/etc/profile中添加Hbase环境变量,source /etc/profile还是没生效   jps一下,发现hmaster和HRegionServer节点又掉了,这东西怎么这么不稳定。 重启了一下又好了   但是 echo $HBASE_HOME,还是没有任何反应。 所以个人感觉是因为没有装在/usr/local目录下,之前mysql没装在这个目录下也出了问题。 ...

u011495642的博客 463

投稿前利用GPT-5.5给论文做一次深度校对,投稿命中率翻倍!

3)一致性:请对比摘要的结论与正文(如果我也提供了正文),确保完全一致。请严格检查结果部分,确保客观性:1)纯粹性检查:标出所有包含“为什么”(解释)或“这意味着什么”(暗示)的主观语句,这些应移至讨论部分。请你帮我评估讨论部分的深度:1)解释与对比:检查每一项主要结果是否都解释了原因,并引用了前人研究进行对比(一致或相悖)。我见过太多人把校对理解为检查错别字了,实际上,校对要看的远不止这个,像逻辑是否连贯、术语是否前后一致、图表有没有被正确引用等等的这些细节,往往决定了文章是秒被拒,还是能顺利进入外审。

智能AI让学术科研更容易 412

YOLOv8剪枝 lamp剪枝测试精度仅掉0.7个点,速度提高11.8fps!

该摘要介绍了LAMP剪枝方法的创新点和理论分析,重点突出了其最小化L2失真和分层自适应剪枝的特性。LAMP通过引入ξ变量在最坏情况下优化剪枝失真,并简化了计算过程。文章还提供了代码移植的具体步骤,包括创建compress.py文件和相关配置说明。

FJN110的博客 1113

HBase优化实战

背景 Datastream一直以来在使用HBase分流日志,每天的数据量很大,日均大概在80亿条,10TB的数据。对于像Datastream这种数据量巨大、对写入要求非常高,并且没有复杂查询需求的日志系统来说,选用HBase作为其数据存储平台,无疑是一个非常不错的选择。 HBase是一个相对较复杂的分布式系统,并发写入的性能非常高。然而,分布式系统从结构上来讲,也相对较复杂,模块繁多,

花花公子 1819

30天入门 SAP BTP 开发系列之八:动手在 SAP BTP 上开发第一个 ABAP 透明表

ABAP Cloud 环境下创建透明表的方法与数据迁移实践 本文介绍了在 SAP BTP ABAP 环境中创建透明表并迁移数据的完整流程。与传统的 SE11 事务码不同,ABAP Cloud 需通过 ABAP Development Tool 创建数据库表,使用代码定义表结构。作者详细演示了如何: 在开发包中创建名为 Z优快云_TRAVEL 的透明表 使用 ABAP 代码定义表字段和约束 通过 ABAP 类实现数据从标准表/DMO/TRAVEL 到新建表的迁移 验证数据迁移结果 文中还提供了相关技术概念的

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1785

HBase的编程实践(实验3_熟悉常用的HBase操作)

要求当参数column为某一列族名称时,如果底下有若干个列限定符,则要列出每个列限定符代表的列的数据;* ② 删除指定列的数据(此列主要说的是列限定修饰符):delete.addColumn(colFamily.getBytes(), col.getBytes());"-----------------------删除成功-----------------------------\n""----------------------删除前,表的原本信息如下---------------------"

Coder-coco的博客 1637

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Hadoop之Hbase安装和配置

Hadoop之Hbase安装和配置

leoatliang的博客 4万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

HIVE/HBase集成的一个bug

昨夜下班之前,发现了HIVE/HBaesjicheng

带墨镜的番茄哥的专栏 762

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Hbase取数据问题Bug

问题描述: hbase表中有数据,而使用hbase的Client取数据的条数小于hbase实际的条数。并且在客户端是没有报错信息。 Bug1: 使用的是协处理器进行取数据的,说下协处理器的作用,在客户端对所取的数据进行处理后,再返回给客户端。这样可以减少数据的传输,提高查询速度。 客户端没有报错,找了下服务器端,报错信息如下: 2019-03-01 14:46:04,924 ERRO...

weixin_30765505的博客 252

HBase Bulkload bug修复及patch提交

第一部分:问题排查。 在店铺搜索相关需求的开发自测过程中,碰到了一个问题:bulkload数据的过程时间过长,运行了很久都没有结束,于是查看日志,发现bulkload的程序在不停的重试,信息如下(当天信息未保存,这是刚重现时截的)。 这些信息看起来没啥问题,bulkload在往表test_shopinfo里load各个hfile,失败了,但是错误是可恢复的,将会重试,接着又看到

沉底的石头 2355

Atlas集成外部组件—集成Hive、HBase、Kafka

目录 1、集成Hive 1.1 历史元数据处理 2、集成HBase 2.1历史元数据导入 3、集成Kafka 3.1Bug规避 3.1.1 发现bug 3.1.2 规避bug 3.1.2 集成原理与局限性 3.1.3 历史元数据导入 3.1.4 准时导入kafka元数据 安装好Atlas只是第一步,接下来我们得采集相关大数据组件的元数据,所以得跟大数据组组件做集成。如果是手工安装的Apache版本的Atlas,我们还需要单独做Atlas跟其他组件的集成配置才能管理他们的元数据,比如

Java框架、并发编程、分布式、微服务、Redis、HarmonyOS、中间件等技术 3892

HBase 安装之后版本的验证的bug:(错误的替换、找不到或无法加载主类、SLF4J)安装 和 配置 HBase

HBase 安装之后版本的验证的bug:(错误的替换、找不到或无法加载主类、SLF4J)安装 和 配置 HBase

伟庭的博客 4515

一篇文章完成Hbase入门

HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。

lydms的博客 1万+

关于maven创建hbase工程的找不到方法的bug+hbase的pom文件

使用maven创建hbase工程,报错显示找不到方法,目前根据自己的问题有以下几种原因: 类没有正确的导入(问题可能性不大,因为maven是自动导入的) jar包的导入,但是由于依赖的版本过低,包中没有某个方法,尤其是跨组件创建项目,如hbase的组件要使用hadoop的jar包,容易出问题 解决方法 对于2,使用c+s+t定位到那个类,看看有没有某个方法,如果没有,则在pom管理器上查看是哪个...

A-LEI的博客 823

MySQL与Hive/HBase数据转移

文章目录MySQL与Hive之间数据转移1、MySQL的dept表导入Hivebug 1bug 22、查看Hive表数据3、清空MySQL的dept表4、Hive表数据导出到MySQL5、查询dept表MySQL与HBase之间数据转移1、创建HBase表2、MySQL的dept表导入Hbasebug33、查看HBase的dept记录 MySQL与Hive之间数据转移 1、MySQL的dept表导入Hive bug 1 这里有个警告,可以不用理他,如果要消除,修改sqoop安装目录bin文件夹下的confi

Above the cloud 1207
上一篇: repcached安装配置及复制实验
下一篇: 11gR2新特性:Heavy swapping observed on system in last 5 mins
常飞梦
常飞梦 领域专家: 数据库技术领域 领域专家: 数据库技术领域
博客等级 码龄21年 403粉丝 314原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值