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还是可作为离线存储系统使用。

相关新闻

最新新闻

STM32L432KC与MC74HC165A实现低功耗多路信号采集

STM32L432KC与MC74HC165A实现低功耗多路信号采集

1. 项目背景与核心价值在嵌入式系统开发中,我们经常需要处理大量输入信号,特别是在工业控制、智能家居和自动化设备等场景。传统方案需要为每个输入信号分配独立的GPIO引脚,这不仅占用宝贵的微控制器资源,还会增加电路复杂度和成本…

2026/7/4 0:24:08
MDUT数据库工具终极指南:从入门到精通的全栈开发实战

MDUT数据库工具终极指南:从入门到精通的全栈开发实战

MDUT数据库工具终极指南:从入门到精通的全栈开发实战 【免费下载链接】MDUT MDUT - Multiple Database Utilization Tools 项目地址: https://gitcode.com/gh_mirrors/md/MDUT 想要在数据库安全测试领域快速上手一款功能强大的跨平台工具吗?MDUT&…

2026/7/4 0:24:08
终极指南:如何让老旧Mac免费运行macOS Catalina系统

终极指南:如何让老旧Mac免费运行macOS Catalina系统

终极指南:如何让老旧Mac免费运行macOS Catalina系统 【免费下载链接】macos-catalina-patcher macOS Catalina Patcher (http://dosdude1.com/catalina) 项目地址: https://gitcode.com/gh_mirrors/ma/macos-catalina-patcher macOS Catalina Patcher是一款革…

2026/7/4 0:24:08
如何快速掌握FigmaCN:5个实用技巧实现高效中文设计体验

如何快速掌握FigmaCN:5个实用技巧实现高效中文设计体验

如何快速掌握FigmaCN:5个实用技巧实现高效中文设计体验 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma的英文界面感到困扰吗?想要提升设计效率却受限…

2026/7/4 0:24:08
Xournal++完全指南:跨平台手写笔记与PDF批注的终极解决方案

Xournal++完全指南:跨平台手写笔记与PDF批注的终极解决方案

Xournal完全指南:跨平台手写笔记与PDF批注的终极解决方案 【免费下载链接】xournalpp Xournal is a handwriting notetaking software with PDF annotation support. Written in C with GTK3, supporting Linux (e.g. Ubuntu, Debian, Arch, SUSE), macOS and Windo…

2026/7/4 0:24:08
创新高效:轻松将图片转换为专业级3D模型的终极指南

创新高效:轻松将图片转换为专业级3D模型的终极指南

创新高效:轻松将图片转换为专业级3D模型的终极指南 【免费下载链接】ImageToSTL This tool allows you to easily convert any image into a 3D print-ready STL model. The surface of the model will display the image when illuminated from the left side. 项…

2026/7/4 0:19:08

周新闻

月新闻