HBase设计:看上去很美 HBase是模仿google bigtable的开源产品又是hadoop的衍生品hadoop作为离线计算系统已经得到业界的普遍认可并经过N多公司大规模使用的验证自然地认为Hbase也将随之获得成功。《HBase: The Definitive Guide》第8章讲述hbase的架构从架构上看其架构很完美LSM - 解决磁盘随机写问题(顺序写才是王道)HFile - 解决数据索引问题(只有索引才能高效读)WAL - 解决数据持久化(面对故障的持久化解决方案)zooKeeper - 解决核心数据的一致性和集群恢复Replication - 引入类似MySQL的数据复制方案解决可用性此外还有自动分拆Split、自动压缩(compaction,LSM的伴生技术)、自动负载均衡、自动region迁移。看上去如此美好完全无需人工干预貌似只要将Hbase搭建好一切问题Hbase都将应对自如。面对如此完美的系统不动心很难。但是如此完美的系统或许也意味着背后的复杂性是不容忽略的。hbase的代码量也不是一星半点的。假如系统工作不正常谁来解决这是至关重要的。性能与测试Hbase系统自身提供了性能测试工具./bin/hbase org.apache.hadoop.hbase.PerformanceEvaluation该工具提供了随机读写、多客户端读写等性能测试功能。根据工具测试的结果看hbase的性能不算差。对于hbase这样的系统长期稳定运行比什么都重要。然而这或许就不那么完美。测试版本hbase 0.94.1、 hadoop 1.0.2、 jdk-6u32-linux-x64.bin、snappy-1.0.5.tar.gz测试hbase搭建14台存储机器2台master、DataNode和regionserver放在一起。hbase env配置View Codehbase-size.xml关键配置(根据《HBase: The Definitive Guide》第11章优化)View Code测试一高并发读(4w/s) 少量写(允许分拆、负载均衡)症状1-2天后hbase挂掉(系统性能极差不到正常的10%)。其实并非全部挂掉而是某些regionserver挂了并在几个小时内引发其他regionserver挂掉。系统无法恢复单独启regionserver无法恢复正常。重启后正常。测试二高并发读(4w/s)症状1-2天后hbase挂掉(系统性能极差不到正常的10%)。后发现是由于zookeeper.session.timeout设置不正确导致(参见regionserver部分http://hbase.apache.org/book.html#trouble)。重启后正常。测试三高并发读(4w/s)症状1-2天后hbase挂掉(系统性能极差不到正常的10%)。从log未看出问题但regionserver宕机且datanode也宕机。重启后正常。测试四高并发读(4w/s)禁止分拆、禁止majorcompaction、禁止负载均衡(balance_switch命令)症状1-2天后hbase挂掉(系统性能极差不到正常的10%)。从log未看出问题但regionserver宕机且datanode也宕机。重启后正常。测试期间还发现过无法获取.MATE.表的内容(想知道regionserver的分布情况)、hbase无法正确停止、hbase无法正确启动(日志恢复失败文件错误最终手动删除日志重启)。其他缺陷HBase使用JAVA开发看上去很美的GC使用中代价可不小。Hbase为了保证数据强一致性每个key只能由一个regionserver提供服务。在下列情况下Hbase服务质量都将受损1) GC CMS -- CMS回收内存极其耗时当hbase运行1-2天后CMS可能耗时10分钟这期间该regionserver无法服务。CMS经常被触发这意味着hbase的服务经常会因为GC操作而部分暂停2) regionserver宕机 - 为了强一致性每个key只由一个regionserver提供服务故当regionserver宕机后相应的region即无法服务3) major compaction、split不可控 - 大量磁盘操作将极大影响服务。(levelDB也需要major compaction只是使用更加可控的方式做压缩比如一次只有一个压缩任务。是否影响服务待测试)4) 数据恢复 - 数据恢复期间设置WAL log的相关操作在数据恢复期间regionserver无法服务结论或许通过研究hbase的源码可让hbase稳定运行但从上述测试结果看1hbase还无法稳定长期运行2hbase系统很脆弱故障恢复能力差。基于此判断hbase还无法满足大规模线上系统的运维标准只能放弃。考虑到hbase重启基本可恢复正常故hbase还是可作为离线存储系统使用。

相关新闻

最新新闻

金仓KES向量数据库实战:一条SQL干掉ETL,机器人不再把停产货当现货卖

金仓KES向量数据库实战:一条SQL干掉ETL,机器人不再把停产货当现货卖

一、背景:一套跑了一年的"三件套" 1.1 先说项目我在一家制造企业做平台开发。去年接了个活儿,给内部客服和售后搭智能问答,说穿了就是 RAG。把几十年的产品手册、维修案例、工单记录喂给大模型,一线员工提问的时候&…

2026/8/25 13:09:39
15年码农被迫转型:接手3个团队、0交接文档,我是怎么从“地狱开局”活下来的?

15年码农被迫转型:接手3个团队、0交接文档,我是怎么从“地狱开局”活下来的?

15年码农被迫转型:接手3个团队、0交接文档,我是怎么从“地狱开局”活下来的?💡 写在前面 白天被会议轮番轰炸,晚上打开IDE填坑;邮件回不完,需求排不动,手下的人要么被抽走&#xff0…

2026/8/25 13:09:39
Unity AssetBundleArchiveFile 深度解析:资源存储与索引协作机制

Unity AssetBundleArchiveFile 深度解析:资源存储与索引协作机制

开场 上线前一晚,热更包下载完却加载报错:Unable to open archive file 或 Failed to decompress data for the AssetBundle。你打开 Profiler 看内存,发现某个 AB 标称 20MB,加载后内存里却多出了远超 20MB 的驻留——这往往和 AB 容器层的压缩方式与读取路径直接相关。 …

2026/8/25 13:09:39
Cloudflare Workers 是 个人开发者、副业项目的零成本起跑线?三个被低估的用法(附完整代码)

Cloudflare Workers 是 个人开发者、副业项目的零成本起跑线?三个被低估的用法(附完整代码)

Cloudflare Workers 是 个人开发者、副业项目的零成本起跑线?三个被低估的用法(附完整代码)很多人把 Cloudflare Workers 当成"转发一下请求"的小工具。但在 2026 年,它其实是个人开发者跑 AI 应用最香的免费基建&#…

2026/8/25 13:09:39
# 软考软件设计师题目总结 — 2026-08-06

# 软考软件设计师题目总结 — 2026-08-06

软考软件设计师题目总结 — 2026-08-06下半年备考倒计时:79天 | 考试时间:2026年10月24日-27日 | 第55期一、今日备考动态 1.1 2026下半年考情最新情报维度具体情况备考应对教材大纲新教材启用,新增AI/云原生/微服务/DevOps等内容旧版资料不可…

2026/8/25 13:09:39
零基础入门python21:Flask账本的数据模型——用户、分类和账目

零基础入门python21:Flask账本的数据模型——用户、分类和账目

零基础入门python21:Flask账本的数据模型——用户、分类和账目一、上一篇课后练习讲解 上一篇要求使用环境变量并验证测试配置。参考测试通过 create_app({TESTING: True, SQLALCHEMY_DATABASE_URI: sqlite:///:memory:}) 创建临时应用,再在应用上下文中…

2026/8/25 13:04:39