网页设计班学费,百度seo推广,erp系统是什么系统,wordpress tinction来源 | 阿丸笔记封图| CSDN 下载于视觉中国前面#xff0c;我们已经打下了很多关于HBase的理论基础#xff0c;今天#xff0c;我们主要聊聊在实际开发使用HBase中#xff0c;需要关注的一些最佳实践经验。Schema设计七大原则1#xff09;每个region的大小应该控制在10G到… 来源 | 阿丸笔记封图| CSDN 下载于视觉中国前面我们已经打下了很多关于HBase的理论基础今天我们主要聊聊在实际开发使用HBase中需要关注的一些最佳实践经验。Schema设计七大原则1每个region的大小应该控制在10G到50G之间2一个表最好保持在 50到100个 region的规模3每个cell最大不应该超过10MB如果超过应该有些考虑业务拆分如果实在无法拆分那就只能使用mob4跟传统的关系型数据库不同一个HBase的表中列族最多不超过3个列族中的列可以动态添加的不要设计过多列族5列族名必须尽量短因为我们知道在存储的时候每个keyvalue都会包含列族名6如果一个表存在一个以上的列族那么必须要注意不同列族之间行数相差不要太大。例如列族A有10万行而列族B有1亿行那么rowkey就有1亿行而region是按照行键进行切分的因此列族A可能会被打散为很多很多小region这会导致在扫描列族A时会引发较多IO效率低下。7列族可以设置TTL时间HBase在超过设定时间后会自动删除数据。设置方法有两种# 建表时设置,TTL单位为秒此例中列簇f1的数据保留1天86400秒hbase(main):002:0create table, {NAME f1, TTL 86400}# 通过修改表设置hbase(main):002:0alter table, {NAME f1, TTL 86400}这里需要注意一旦超过设定时间后该数据就无法读取了但是真正的过期数据删除是发生在major compaction时。.RowKey设计三大策略HBase作为一个分布式存储数据库虽然扩容非常容易但是对于“热点”问题还是非常头疼的。所谓“热点”问题HotSpotting就是请求读或者写短时间内落在了集中的个别region上导致了该region所在机器的负载急剧上升超过了单点实例的承受能力从而引起性能下降或者不可用。要解决这个问题就需要设计RowKey时使得数据尽量往多个region上去写。举个例子假如region按照26个字母分成26个那么同时写入m开头的rowkey的记录都会同时写入同一个region比如m001,m002,m003,m004,m005。因此RowKey的设计非常关键。常见的设计策略有这么几种。1saltingsalting策略就是将生成随机数放在行键的开头作为前缀使得每个行键有随机的字典序。对上面的案例进行优化我们采用了salting策略插入前给每个rowkey生成一个随机的字母变成了am001,zm002,nm003,qm004,lm005这样就能同时往5个region里面写入了成功打散。副作用由于前缀生成是随机的因此如果想要按照字典序查询这些行则需要做更多的事情。从这个角度上看salting增加了写操作的吞吐量却也增大了读操作的开销。2HashingHashing策略也是一种特殊的salting是用一个单向的 hash 来取代随机指派前缀。这样能使一个给定rowkey的行在“salted”时有相同的前缀因此这样既可以分散RegionServer间的负载的同时也允许在读操作时能够预测这个前缀值是什么。确定性hash deterministic hash 可以让客户端重建完整的行键然后就可以像正常一样用Get方法查询确定的行。3reverse key第三种预防hotspotting的方法是反转一段固定长度或者可数的键让变化最多的某个位置放在rowkey的第一位副作用对于Get操作没有影响但是不利于Scan操作进行范围查询因为数据在原RowKey上的顺序已经被打乱。预分区在 HBase核心特性—region split 中我们知道已经提到过关于预分区。主要原因是当一张表被首次创建时只会分配一个region给这个表。因此在刚刚开始时所有读写请求都会落在这个region所在的region server上而不管你整个集群有多少个region server。不能充分地利用集群的分布式特性。因此预分区主要也是解决“热点”问题。最为常见的建表语句为create ‘tb’,{NAME ‘f1’,COMPRESSION ‘snappy’ }, { NUMREGIONS 50, SPLITALGO ‘HexStringSplit’ }NUMREGIONS 为 region的个数一般按照每个region 8-10GB左右来计算region数量如果集群规模非常大那么region数量可以适当取大一些SPLITALGO 为 rowkey分割的算法Hbase自带了三种pre-split的算法分别是 HexStringSplit、DecimalStringSplit 和 UniformSplit。各种Split算法适用场景HexStringSplit: rowkey是十六进制的字符串作为前缀的DecimalStringSplit: rowkey是10进制数字字符串作为前缀的UniformSplit: rowkey前缀完全随机读性能优化前面主要讲一些设计方面的优化点。那如果在HBase的使用过程中发现查询较慢那么就需要根据具体情况分析查询慢的原因并采取相应的策略。防疫、复工如何并行天云数据推出人工智能监测方案到底如何做到事前预防而不是事后诸葛亮本周四晚8点天云数据VP陈勇为各位揭晓答案扫描下方二维码免费报名今日福利评论区留言入选都可获得价值299元的「2020 AI开发者万人大会」在线直播门票一张。 快来动动手指写下你想说的话吧推荐阅读只要 8 个步骤学会这个 Docker 命令终极教程
2020 年为什么非要采用 DevOps 文化不可
近 10 年新秀编程语言大 PKPick 它
5 亿微博数据疑泄露Python 爬虫如何避免踩天坑
你的企业在什么情况下需要人工智能快来看看你需要具备哪些条件与能力
自称中本聪的他被法官怒怼你的证词毫无可信度
真香朕在看了