基于海量数据的HBase写入性能测试与优化

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:xinyu0218
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:HBase解决了大规模数据的结构化存储和实时的随机读写访问,但HBase提供的API在大规模数据批量写入等方面存在着性能瓶颈,不能很好地满足应用需求。本文提出了基于MapReduce架构实现HBase的性能优化方案,并设计了分布式程序进行验证,实验表明在海量数据应用条件下采用MapReduce计算框架能够利用HBase集群的计算性能,相比传统的单线程和多线程数据写入方式具有更好的实用性和有效性,同时结合这三类数据写入方式的性能特征提出了以写入数据量为依据的选择策略。
  关键词:MapReduce,Hadoop,HBase,海量数据
  中图分类号:TP392 文献标识码:A 文章编号:1009-3044(2019)06-0009-05
  Testing and optimization of HBase writing performance based on massive data
  QING Xin1,, WEN Wei-jun1, JIN Xing1, JIANG Zhen1
  (75837 Troops, Guangzhou 510000, China)
  Abstract: HBase solves the structured storage of massive data and real-time random read and write access. But, There is a performance bottleneck of HBase API in large scale data batch write, and it cannot meet the demands of application. This paper realized performance optimization of HBase based on MapReduce architecture, and designs the distributed programs. The Experiments show that in the massive data application condition, MapReduce can take the advantage of the calculating capacity of HBase cluster, and more practical and effective than traditional single thread and multi-thread data writing method. Combined with The performance characteristics of the three types of data write mode, this paper proposed a selection policy based on data amount.
  Key words: MapReduce; Hadoop; HBase; massive data
  云計算[1][2]实际是以商业应用为背景结合了之前学术界所提到的如“网格计算”、“互联网计算”、“按需计算”等概念发展而来的一种分布式计算模式,也正是因为其以商业应用为依托,云计算在近几年提到了快速的发展。云计算因其实用价值在工业界和学术界得到了一致的认可。作为一种全新的应用模式,云计算已成为人们提供服务、存储数据、进行数据挖掘等应用和研究的主要方式。
  云数据库HBase[3][4][17]是Hadoop[5]的Apache顶层项目,它是BigTable[6]的开源实现。作者在实验室搭建了一个基于HBase的数据注册和发布的管理平台,在应用中发现HBase在海量数据的写入时,由于HBase提供的API接口是单线程操作,不能有效的利用HBase集群的计算资源,不能满足平台的性能要求。
  本文结合实际问题,为了能提高HBase数据管理系统的效率,特别是在海量数据条件下的写入性能,采用MapReduce[7]编程模型与HBase相结合的方法进行性能优化,并进行了读写性能的测试。实验结果表明,MapReduce计算模型充分利用HBase集群中各个节点的计算资源, HBase的数据写入性能得到了极大的提高。
  1 相关知识
  1.1 MapReduce编程模型
  MapReduce是Google提出的在分布式集群中并行处理少量数据的编程模型,把在大规模的数据集的操作分发给主节点管理下的集群中的各个资源节点来完成,极大地简化了分布式程序的结构和编写。MapReduce执行一个任务的过程可以分解为Job的分解和结果的汇总,这处理过程被MapReduce抽象为两个函数:map和reduce,map负责把任务分解成多个任务,reduce负责把分解后多任务处理的结果进行汇总,图1显示了MapReduce任务逻辑过程[8]。
  从图中可以看出整个计算模型的核心部分是Map()和Reduce(),这两个函数的具体功能和操作是由用户根据需求自己来设计实现,只要能按用户自定义的规则,将输入的对转换成另一个或一批对输出。
  在Map阶段,MapReduce框架首先将输入的数据分割成大小固定的数据块(Splits),随后将每个Split分解为一批键值对作为Map()的输入,经过处理计算得到中间结果,再按照key2进行排序,并把具有相同key值的value集中形成一个新列表,形成作为Reduce()的输入数据。
  在Reduce阶段,Reduce()以为输入数据,按照用户自定义的操作进行计算,得到最终的结果并输出。   可以看出MapReduce计算过程充分地利用了分布式集群资源,使整个集群的计算具有了更高的效率。HBase是目前比较流行的云数据管理平台,具有分布式特性,那么利用MapReduce来进行性能优化是一个有效的选择。
  1.2 HBase云数据库
  HBase是基于HDFS的开源数据库,它以Google的BigTable为原型,设计并实现了具有高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统,用于存储粗粒度的结构化数据。HBase以表的形式存储数据,每个表由行和列组成,每个列属于一个特定的列族(Column Family)。表中由行和列确定的存储单元称为一个元素(Cell),每个元素保存了同一份数据的多个版本,由时间戳(Time Stamp)来标识,在逻辑上HBase是一张超大规模的稀疏表,如表1所示。
  行键是数据行在表中的唯一标识,并作为检索记录的主键。在HBase中访问表中的行只有三种方式:通过单个行键访问、给定行键的范围访问和全表扫描。行键可以是任意字符串(最大长度64KB)[6],并按照字典序进行存储。
  HBase是按照列存储的稀疏行/列矩阵,在物理存储中就是把逻辑模型中的一个行进行分割,并按照列族存储,同时表中的空值不会被存储。每个表被建立的时候都只有一个Region(HBase存储的单元),随着表中的记录数不断增加直到数据量超过Region定义的阈值时,Region就会被分割形成两个新的Region,每个Region存储大表中某个行范围的数据。所以当数据记录不断增加后,整个表将会由多个Region组成,而Region作为HBase分布式存储的最小单位,将会被分配到集群中各个Region服务器上,以达到负载均衡的目的。每个Region由一个或多个Store组成,每个Store保存一个列族的所有数据。每个Store又是由一个memStore和零个或多个StoreFile组成,StoreFile则是以HFile的格式存储在HDFS上的,如图2所示。
  可以看到,HBase是以Region作为最小的单位实现负载均衡,多个Regions分配到集群中的各个资源节点从而使数据达到分布式存储的目的。并且在Region内部也是采用了分块存储的机制。那么,这种存储机制对于MapReduce的应用起到了很好的支撑作用,并且MapReduce能够识别每个Region的存储节点,从而把该Region的计算任务分配它存储的节点,达到了移到计算而不移动数据的目的,经证明这种方式能最大程度的利用集群性能和节约开销。
  2 HBase写入性能测试与优化
  HBase数据写入功能可以分为单数据写入和批量数据导入,其运用场景分别为数据注册和发布的管理平台中普通用户数据发布与注册、用户注册和数据修改等和传统RDBMS向云数据库的数据转移以及批量数据导入,本文对HBase这两种方式的性能进行了测试。
  2.1 集群结构
  首先在实验室搭建了HBase集群,并设计了针对性的应用,来对比使用MapReduce前后的性能差异。
  实验环境中共有6台服务器,搭建完全分布式HDFS与HBase环境,采用的Hadoop与HBase版本为hadoop0.20.2[9]与HBase0.92.0[10],其中一台节点做为NameNode和Master,另一台做为Master备份节点,剩余四台则做为DataNode和RegionServer节点,并且在其上运行Zookeeper服务,整个实验环境结构如图3所示。
  2.2 单线程数据写入性能
  2.2.1 单个数据写入
  单个数据写入实验的目的在于测试一条随机数据的写入性能,从而模拟用户在使用数据注册和发布管理平台时的数据写入操作,检测HBase性能是否满足平台设计要求,实验结果如图 4所示。
  经过测试分析单个数据写入时间在200ms左右,可以看出测试性能完全满足实际运用,保证了系统性能良好。对其过程进行跟踪分析,发现数据写入时间主要消耗在客户端与HBase服务器建立数据连接,而實际的一条数据写入时间为1至2毫秒。
  2.2.2 大数据的批量导入
  数据注册和发布的管理平台[15][16]除了对普通用户提供数据访问外,还要对外部程序或系统提供批量数据写入和同步功能,实验测试了HBase导入不同规模数据所用的时间,导入数据为根据数据表格式随机生成的数据,其规模从10000条到1000万条,这样能够很好地测试HBase在各种条件下批量数据导入所需要时间。
  生成数据为TXT文档,命名为MetaData 数据量。实验中记录用HBase提供的单线程API将各数据集写入HBase所用时间,结果如表2所示。
  实验结果表明,数据写入时间随着数据集增大线性增加,经过计算,数据的写入速度平均为600条/秒(单次数据写入只需建立一个HBase数据连接)。如表中所示,在海量数据写入时将需要大量时间,当导入1000万条数据时要16688秒(4小时38分钟)。
  2.2.3 结果分析
  在HBase数据写入性能实验中,本文就HBase提供两种数据写入方式的性能进行了详细测试。一是单个数据的写入性能,在HBase集群中重复数据写入操作并记录所需时间,结果表明HBase的单个数据写入性能非常稳定,大约为200毫秒,能满足分布式资源虚拟化整合平台的性能要求。二是批量数据写入性能,由于HBase提供的数据写入API是单线程的,不能很好地利用HBase的集群计算资源,在海量数据条件下其性能较差,不能要求系统对海量数据处理的要求。
  2.3 基于多线程的HBase写入性能优化
  采用多线程对数据批量导入性能进行优化,本文主要测试了数据量和线程数量这两个条件对性能的影响。   实验结果表明在实现分布式资源虚拟化整合平台的过程中,必须结合系统功能和性能需求,合理选择数据处理方法,这样才能使系统性能达到最优。
  4 总结
  本文对HBase数据写入性能进行详细测试,全面了解其性能特性。通过测试找到了HBase的不足,并根据HBase数据库存在的性能缺陷。提出了采用多线程和MapReduce计算框架的并行处理方法来提高其性能,并对实验结果进行总结分析,提出根据不同应用场景综合运用不同数据处理方法的策略。
  参考文献:
  [1]Armbrust M, Fox A, Griffith R, et al. A view of cloud computing[J]. Communications of the ACM, 2010, 53(4): 50-58.
  [2]陈全, 邓倩妮. 云计算及其关键技术[J]. 计算机应用, 2009, 29(9): 2562-2567.
  [3]George L. HBase: the definitive guide[M]. O’Reilly Media, Incorporated, 2011.
  [4]HBase [EB/OL], https://zh.wikipedia.org/wiki/HBase, 2013-04-10.
  [5]Hadoop [EB/OL], https://zh.wikipedia.org/wiki/HBase, 2013-04-10.
  [6]Chang F, Dean J, Ghemawat S, et al. Bigtable: A distributed storage system for structured data[J]. ACM Transactions on Computer Systems (TOCS), 2008, 26(2): 4.
  [7]Dean J, Ghemawat S. MapReduce: simplified data processing on large clusters[J]. Communications of the ACM, 2008, 51(1): 107-113.
  [8]李明, 胥光辉, 戢瑶. MapReduce 编程模型在网络I/O密集型程序中的应用研究[J]. 计算机应用研究, 2011, 28(9):3372-3374.
  [9]http://hadoop.apache.org/docs/r0.20.0/releasenotes.html, 2011-03-13
  [10]https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310753
其他文献
针对UPS应急供电电池组设备充放电控制精度低、不能提供多电池独立充放电控制、难以满足船只应急供电需求等问题,设计一种以触摸屏为主站,以S7.1200PLC为从站的高精度独立充放电
按照广东省关于加强专业镇创新发展工作的指导意见,通过走访农业专业镇的种养大户、专业合作社、农业企业,对兴宁市农业专业镇发展现状进行专题调研,分析研究了农业专业镇产业发
采用动态谱图分析摩擦噪声特性.结果表明,动态谱图能充分反映摩擦噪声的时变性、频谱结构和动态范围.实验证明,动态谱图对设备运行状态、转速等参数的变化十分敏感,因此可将
研究现有进化算法的优越性与存在不足的基础上,受生物免疫原理的启发,提出了一种新的算法--免疫进化算法.该新算法作为一种全局优化算法,以父代最优个体为基础来产生子代群体
摘要:随着教育事业的发展和变革,各种新型教学模式逐渐登上教育舞台,并成为教育事业改革和发展的主要趋势,特别是微课和翻转课堂等新型教学模式。在高校计算机网络课程教学过程中,实施微课和翻转课堂教学模式,不仅能够展现出不一样的教育方式,还能更好地培养学生良好的学习习惯。本文首先分析基于微课的翻转课堂在计算机网络课程教学中的优势,然后提出基于微课的翻转课堂模式下计算机网络课程教学重构措施。  关键词:微课
摘要:终身教育是伴随人的一生,随时代发展而变化。而“互联网 ” 时代的特点能够满足终身教育的社会化、信息化及共享的要求。本文以“互联网 时代下苏北城镇终身教育”为视角,通过借鉴国外成功终身教育体系经验,提出了“互联网 时代下苏北城镇终身教育体系”的构建改革的必要性和迫切性,并对其可行性、依据和特征进行详细的分析,探索出“互联网 时代下苏北城镇终身教育体系”发展之路。  关键词:互联网 ;苏北城镇;
目前,大部分学者采用人工神经网络和支持向量机等方法建立NO_x排放浓度模型。但是,这些建模方法只是建立了离线预测模型,不能实现NO_x排放浓度的在线建模。为此,提出采用在线
在常温与高温下,对1Cr18Ni9Ti不锈钢进行单轴应力控制下的棘轮循环试验,分析峰值应力、平均应力、低应力循环历史及温度对饱和棘轮应变的影响.基于峰值应力与饱和棘轮应变的