- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HBase性能优化方法总结本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法。1. 表的设计1.1 Pre-Creating Regions默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region足够大了才进行切分。一种可以加快批量写入速度的方法是通过预先创建一些空的regions,这样当数据写入HBase时,会按照region分区情况,在集群内做数据的负载均衡。有关预分区,详情参见:Table Creation: Pre-Creating Regions,下面是一个例子:[html]?view plain?copypublic?static?boolean?createTable(HBaseAdmin?admin,?HTableDescriptor?table,?byte[][]?splits)??throws?IOException?{???try?{???admin.createTable(table,?splits);???return?true;???}?catch?(TableExistsException?e)?{???(table??+?table.getNameAsString()?+??already?exists);???//?the?table?already?exists...???return?false;???}??}???public?static?byte[][]?getHexSplits(String?startKey,?String?endKey,?int?numRegions)?{???byte[][]?splits?=?new?byte[numRegions-1][];???BigInteger?lowestKey?=?new?BigInteger(startKey,?16);???BigInteger?highestKey?=?new?BigInteger(endKey,?16);???BigInteger?range?=?highestKey.subtract(lowestKey);???BigInteger?regionIncrement?=?range.divide(BigInteger.valueOf(numRegions));???lowestKey?=?lowestKey.add(regionIncrement);???for(int?i=0;?i??numRegions-1;i++)?{???BigInteger?key?=?lowestKey.add(regionIncrement.multiply(BigInteger.valueOf(i)));???byte[]?b?=?String.format(%016x,?key).getBytes();???splits[i]?=?b;???}???return?splits;??}??1.2 Row KeyHBase中row key用来检索表中的记录,支持以下三种方式:通过单个row key访问:即按照某个row key键值进行get操作;通过row key的range进行scan:即通过设置startRowKey和endRowKey,在这个范围内进行扫描;全表扫描:即直接扫描整张表中所有行记录。在HBase中,row key可以是任意字符串,最大长度64KB,实际应用中一般为10~100bytes,存为byte[]字节数组,一般设计成定长的。row key是按照字典序存储,因此,设计row key时,要充分利用这个排序特点,将经常一起读取的数据存储到一块,将最近可能会被访问的数据放在一块。举个例子:如果最近写入HBase表中的数据是最可能被访问的,可以考虑将时间戳作为row key的一部分,由于是字典序排序,所以可以使用Long.MAX_VALUE – timestamp作为row key,这样能保证新写入的数据在读取时可以被快速命中。1.3 Column Family不要在一张表里定义太多的column family。目前Hbase并不能很好的处理超过2~3个column family的表。因为某个column family在flush的时候,它邻近的column family也会因关联效应被触发flush,最终导致系统产生更多的I/O。感兴趣的同学可以对自己的HBase集群进行实际测试,从得到的测试结果数据验证一下。1.4 In Memory创建表的时候,可以通过HColumnDescriptor.setInMemory(true)将表放到RegionServer的缓存中,保证在读取的时候被
您可能关注的文档
- 《认识自我-展现自我》课程教学设计.doc
- 《劝学》优秀教学课件-参赛版.pptx
- 《紫藤萝瀑布》和《一棵小桃树》.pptx
- 《醉翁亭记》优秀教学课件.ppt
- 0丰城电厂事故报告教学课件.pptx
- 3#楼-模板施工方案设计.doc
- 3#楼悬挑架施工方案设计.docx
- 9月30日烈士纪念日教学课件.ppt
- 4.1工业区位选择(共65张教学课件).ppt
- 70篇短文突破中考词汇--打印版.doc
- 五年级数学上册5简易方程2解简易方程第8课时实际问题与方程3教学设计新人教版.doc
- 2024_2025学年新教材高中生物第2章细胞的结构和生命活动第3节第1课时细胞质膜具有选择透过性教案苏教版必修1.doc
- 江苏专用2025版高考地理一轮复习第十二章人类与地理环境的协调发展1人类与地理环境的协调练习含解析新人教版.doc
- 2024_2025学年高中化学第一章物质结构元素周期律第三节化学键练习含解析新人教版必修2.docx
- 2024_2025学年高中政治专题二君主立宪制和民主共和制:以英国和法国为例综合训练含解析新人教版选修3.docx
- 2024_2025学年高中生物课时分层作业18捕获光能的色素和结构含解析新人教版必修1.doc
- 2024_2025学年高中政治专题一古典政治经济学巨匠的理论遗产第3框李嘉图的理论贡献学案新人教版选修2.doc
- 2024_2025学年新教材高中生物第6章细胞的生命历程3细胞的衰老和死亡学案2新人教版必修1.doc
- 2024_2025学年新教材高中生物第6章生物的进化1生物有共同祖先的证据学案新人教版必修2.doc
- 司机保证书15篇 .pdf
文档评论(0)