hbase 并发读取能承载多少并发

站长推荐 /6
about云|新出视频,openstack零基础入门,解决你ping不通外网难题
云计算hadoop视频大全(新增 yarn、flume|storm、hadoop一套视频
视频资料大优惠
大数据零基础由入门到实战
阶段1:hadoop零基础入门基础篇
阶段2:hadoop2入门
阶段3:大数据非hadoop系列课程
阶段4:项目实战篇
阶段5:大数据高级系列应用课程
阶段6:工作实用系列教程
等待验证会员请验证邮箱
新手获取积分方法
Powered by扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
Hbase运维碎碎念
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口一种HBase的表region切分和rowkey设计方案 - HBase专题 - 小象学院 - 中国最专业的Hadoop,Spark大数据在线教育平台——权威课程:Hadoop培训,Spark培训,HBase培训,Hive培训,Mahout培训等 - Powered By EduSoho
发表于 01-28
814 次查看
HBase的region随着大小的不断变大会触发一个阈值,默认为256M,一旦触发那么他就会自动的分裂开来,随着region变多hbase管理起来也越发困难,也会明显下降。当然更多的region使得高并发成为可能。一种较好的实践方案就是一方面预切分HBase的region,确定region的个数,保证并发性能,另一方面设置较高的region size分裂阈值,保证region数量不变。
预切分方法:
./bin/hbase org.apache.hadoop.hbase.util.RegionSplitter -c 500 test -f t1:t2:t3
上面的命令行工具给以为你切分一个500region的test表,分别包含了三个列族:t1,t2,t3。
然后在hbase-site.xml设置hbase.hregion.max.filesize为(=0=100G),设置为100G,这样很长一段时间内不会出现region分裂。建议一个节点分到1000region,可以满足并发,而且不至于让master压力过大。
rowkey设计方案:
需要指出的是这种预切分方法用了一种默认md5stringsplit来分配region的startkey,endkey。这种得到的是一个8位的右移一位的md5的字符串。实际上就是md5前八位然后右移。这样在设计rowkey的时候就要千万注意了!因为这样分配出来的region是fffffff。所以为了让rowkey能够均匀落入到这个范围需要md5(id)&&1 + id。提示一下:如果你使用的md5(id)+id的方法设计了rowkey,入库时如果量很大则会导致hot region。rs就会频繁的挂掉了,因为大部分数据都落入最后一个region了。
rowkey生成的具体的java代码如下:
private String makeRowKey(String id){ String md5_content = null; try { MessageDigest messageDigest = MessageDigest.getInstance("MD5"); messageDigest.reset(); messageDigest.update(id.getBytes()); byte[] bytes = messageDigest.digest(); md5_content = new String(Hex.encodeHex(bytes)); } catch (NoSuchAlgorithmException e1) { e1.printStackTrace(); } //turn right md5 String right_md5_id = Integer.toHexString(Integer.parseInt(md5_content.substring(0,7),16)&&1); while(right_md5_id.length()&7){ right_md5_id = "0" + right_md5_ } return right_md5_id + "::" + }
这样做的好处就是在写入数据时可以使rowkey均匀的写入,当然读取的时候还需要拿着id变成md5再去读取,批量读取与时间戳前置方法相比肯定没有任何优势了。不过随机读取也会使rs的负载均衡。
上面的这种设计适合绝大多数场景。可以作为一个良好的实践。
你还没有登录,请先或!
(大小不能超过2MB,文件类型支持png ,jpg ,gif ,doc ,xls ,txt ,rar ,zip .)}

我要回帖

更多关于 hbase高并发 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信