HBase设计及应用:看上去很美
当前位置:以往代写 > 大数据教程 >HBase设计及应用:看上去很美
2019-06-14

HBase设计及应用:看上去很美

HBase设计及应用:看上去很美

恍惚恍惚又来到了文章的学习,想必大家又有很多问题吧!

缘起
随着Hadoop系列的兴起,基于HDFS的大规模KV存储系统Hbase也进入“大规模使用阶段”。网上的Hbase资料很多,学习成本正在下降。从公开的资料看,国外facebook、国内taobao均宣称在线上环境大规模使用hbase。一切都让人很兴奋。于是,在项目中引入Hbase做存储,最终却选择放弃。
HBase设计:看上去很美
HBase是模仿google bigtable的开源产品,又是hadoop的衍生品,hadoop作为离线计算系统已经得到业界的普遍认可,并经过N多公司大规模使用的验证,自然地认为Hbase也将随之获得成功。
《HBase: The Definitive Guide》第8章讲述hbase的架构,从架构上看,其架构很完美:
LSM – 解决磁盘随机写问题(顺序写才是王道);
HFile – 解决数据索引问题(只有索引才能高效读);oracle视频
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配置:
HBase设计及应用:看上去很美

  1. View Code   
  2.  
  3. ulimit -n 65536  
  4.  
  5. export HBASE_OPTS=”$HBASE_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode” 
  6.  
  7. export HBASE_REGIONSERVER_OPTS=”$HBASE_REGIONSERVER_OPTS -Xmx20g -Xms20g -Xmn512m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSIn  
  8. itiatingOccupancyFraction=60 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:$HBASE_HOME/logs/gc-$(hostname)-hbase.lo  
  9. g” 

hbase-size.xml关键配置(根据《HBase: The Definitive Guide》第11章优化):

经李克强总理签批,2015年9月,国务院印发《促进大数据发展行动纲要》(以下简称《纲要》),系统部署大数据发展工作。
《纲要》明确,推动大数据发展和应用,在未来5至10年打造精准治理、多方协作的社会治理新模式,建立运行平稳、安全高效的经济运行新机制,构建以人为本、惠及全民的民生服务新体系,开启大众创业、万众创新的创新驱动新格局,培育高端智能、新兴繁荣的产业发展新生态。
《纲要》部署三方面主要任务。一要加快政府数据开放共享,推动资源整合,提升治理能力。大力推动政府部门数据共享,稳步推动公共数据资源开放,统筹规划大数据基础设施建设,支持宏观调控科学化,推动政府治理精准化,推进商事服务便捷化,促进安全保障高效化,加快民生服务普惠化。二要推动产业创新发展,培育新兴业态,助力经济转型。发展大数据在工业、新兴产业、农业农村等行业领域应用,推动大数据发展与科研创新有机结合,推进基础研究和核心技术攻关,形成大数据产品体系,完善大数据产业链。三要强化安全保障,提高管理水平,促进健康发展。健全大数据安全保障体系,强化安全支撑。[11] 
2015年9月18日贵州省启动我国首个大数据综合试验区的建设工作,力争通过3至5年的努力,将贵州大数据综合试验区建设成为全国数据汇聚应用新高地、综合治理示范区、产业发展聚集区、创业创新首选地、政策创新先行区。
围绕这一目标,贵州省将重点构建“三大体系”,重点打造“七大平台”,实施“十大工程”。oracle教程
“三大体系”是指构建先行先试的政策法规体系、跨界融合的产业生态体系、防控一体的安全保障体系;“七大平台”则是指打造大数据示范平台、大数据集聚平台、大数据应用平台、大数据交易平台、大数据金融服务平台、大数据交流合作平台和大数据创业创新平台;“十大工程”即实施数据资源汇聚工程、政府数据共享开放工程、综合治理示范提升工程、大数据便民惠民工程、大数据三大业态培育工程、传统产业改造升级工程、信息基础设施提升工程、人才培养引进工程、大数据安全保障工程和大数据区域试点统筹发展工程。
此外,贵州省将计划通过综合试验区建设,探索大数据应用的创新模式,培育大数据交易新的做法,开展数据交易的市场试点,鼓励产业链上下游之间的数据交换,规范数据资源的交易行为,促进形成新的业态。
国家发展改革委有关专家表示,大数据综合试验区建设不是简单的建产业园、建数据中心、建云平台等,而是要充分依托已有的设施资源,把现有的利用好,把新建的规划好,避免造成空间资源的浪费和损失。探索大数据应用新的模式,围绕有数据、用数据、管数据,开展先行先试,更好地服务国家大数据发展战略。

  1. View Code   
  2.  
  3.          
  4.                 hbase.regionserver.handler.count 
  5.                 16 
  6.                 Count of RPC Listener instances spun up on RegionServers.  
  7.                 Same property is used by the Master for count of master handlers.  
  8.                 Default is 10.  
  9.                  
  10.          
  11.  
  12.          
  13.                 hbase.regionserver.global.memstore.upperLimit 
  14.                 0.35 
  15.                 Maximum size of all memstores in a region server before new  
  16.                 updates are blocked and flushes are forced. Defaults to 40% of heap  
  17.                  
  18.          
  19.          
  20.                 hbase.regionserver.global.memstore.lowerLimit 
  21.                 0.3 
  22.                 When memstores are being forced to flush to make room in  
  23.                 memory, keep flushing until we hit this mark. Defaults to 35% of heap.  
  24.                 This value equal to hbase.regionserver.global.memstore.upperLimit causes  
  25.                 the minimum possible flushing to occur when updates are blocked due to  
  26.                 memstore limiting.  
  27.                  
  28.          
  29.  
  30.          
  31.                 hfile.block.cache.size 
  32.                 0.35 
  33.                  
  34.                 Percentage of maximum heap (-Xmx setting) to allocate to block cache  
  35.                 used by HFile/StoreFile. Default of 0.25 means allocate 25%.  
  36.                 Set to 0 to disable but it's not recommended.  
  37.                  
  38.          
  39.  
  40.          
  41.                 zookeeper.session.timeout 
  42.                 600000 
  43.                 ZooKeeper session timeout.  
  44.                 HBase passes this to the zk quorum as suggested maximum time for a  
  45.                 session (This setting becomes zookeeper's 'maxSessionTimeout'). 
  46.                 “The client sends a requested timeout, the server responds with the  
  47.                 timeout that it can give the client. ” In milliseconds.  
  48.                  
  49.          
  50.  
  51.  
  52.     hbase.zookeeper.property.tickTime 
  53.     60000 
  54.  
  55.  
  56.  
  57.     hbase.regionserver.restart.on.zk.expire 
  58.     true 
  59.  
  60.  
  61.    
  62.     hbase.hregion.majorcompaction 
  63.     0 
  64.     The time (in miliseconds) between 'major' compactions of all  
  65.     HStoreFiles in a region.  Default: 1 day(86400000).  
  66.     Set to 0 to disable automated major compactions.  
  67.      
  68.    
  69.  
  70.    
  71.     hbase.hregion.max.filesize 
  72.     536870912000 
  73.      
  74.     Maximum HStoreFile size. If any one of a column families' HStoreFiles has  
  75.     grown to exceed this value, the hosting HRegion is split in two.  
  76.     Default: 1G(1073741824).  Set 500G, disable file split!  
  77.      
  78.    

#p#分页标题#e#

测试一:高并发读(4w+/s) + 少量写(允许分拆、负载均衡)oracle视频教程
症状: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无法服务!oracle数据库教程
结论
或许通过研究hbase的源码可让hbase稳定运行,但从上述测试结果看:1)hbase还无法稳定长期运行;2)hbase系统很脆弱,故障恢复能力差。基于此,判断hbase还无法满足大规模线上系统的运维标准,只能放弃。考虑到hbase重启基本可恢复正常,故hbase还是可作为离线存储系统使用。
替代方案
面对大规模数据,基于磁盘的存储系统是必不可少的。google虽然公开了bigtable的设计,但未开源,但google开源了levelDB KV存储系统库(http://code.google.com/p/leveldb/)。levelDB采用C++实现,1.7版本的代码量大概2W,实现了LSM(自动压缩)、LevelFile(基本同HFile),WAL,提供了简单的Put、Get、Delete、Write(批量写、事务功能)等接口。levelDB库实现了单机单库的磁盘存储方案,开发者可根据自己需要开发定制的存储系统(比如:数据Replication、自动调度、自动恢复、负载均衡等)。
更多视频课程文章的课程,可到课课家官网查看。我在等你哟!!!

    关键字:

在线提交作业