我是靠谱客的博主 欣慰手套,最近开发中收集的这篇文章主要介绍hbase的RowKey设计,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

hbase的RowKey设计

HBASE的存在是解决了mysql的两个瓶颈问题

1.mysql的并发问题
2.数据量特别大的问题(最少要是千万条的数据)几百万的数据完全可以存储mysql中.

HBASE可以存储的数据

1.手机信息
2.电影信息的存储
3.用户标签信息的存储
4.车辆信息的存储
5.图片数据
6.视频数据

HBASE的RowKey设计

要考虑的问题:
我的数据究竟是读得多还是写的多还是修改的多,
查询维度,
并发的问题,
固定长度,不要太长.

实例分析

1.手机信息
178_1252_4783 1-3位是网络识别,4-7是地区编码(归属地),8-11用户号码(个人编码)
(1)如果我们自己查询我们可以切分成"1252_4178_783"样子这样归属地一直的就会在一起,查询速度超级快,

2.电影信息的存储

{"movie":"1192","rate":"5","timeStamp":"978300760","uid":"1"}1亿条类似的数据需要存在HBASE

考虑
既要满足快速按照电影查询数据,
又要满足快速按照用户查询数据

分析
数据不用考虑数据并发的问题,可以存在同一个region(区域)
创建一个二级索引
设置协处理器 ==>拦截器 建立一个客户端
首先按照 movie_time_uid设计RowKey然后再设计反向表,然后设计二级索引

在插入电影数据的时候,当遇到uid的时候,将uid写到rk写到索引表中去,

协处理器
相当于一个拦截器,具体到每个region都会执行,
Endpoint(终端)扩展集群的能力,是的客户端开方新的运算命令
Observers(观察者)允许集群在正常的集群操作的过称中,可以有不同的行为表现.

协处理器的加载方式有两种,静态加载,动态加载,
静态加载:

hbase.coprocessor.user.region.classes
org.apache.hadoop.hbase.coprocessor.AggregateImplementation

动态加载:
启用表 aggregation,只对特定的表生效。通过 HBase Shell 来实现。
disable 指定表。 hbase> disable ‘mytable’
添加 aggregation
hbase> alter ‘mytable’, METHOD => ‘table_att’,‘coprocessor’=>
‘|org.apache.Hadoop.hbase.coprocessor.AggregateImplementation||’
重启指定表 hbase> enable ‘mytable’

二级索引案例大概步骤

1.打一个Coprocessor(协处理器)内涵Endprint,Observer的jar包,
2.将jar包上传至hdfs
3.在HBASE shell 客户端执行4行命令:
(1).创建表A
(2).创建表A的反向表B
(3).禁用反向表B
(4).alter “B”,METHOD => “table_att”,“coprocessor”=>“协处理器jar包路径|协处理器全类名|协处理器加载顺序|参数”
4.检验二级索引是否建成

hbase(main):036>scan "A"
Row
column+cell
b
column=f1:from,timestamp=1485458854863,value=a
hbase(main):036>scan "B"
Row
column+cell
a
column=f1:from,timestamp=1485458854863,value=b

详情请关注网址
https://www.cnblogs.com/liuwei6/p/6837674.html

最后

以上就是欣慰手套为你收集整理的hbase的RowKey设计的全部内容,希望文章能够帮你解决hbase的RowKey设计所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部