HBase(九)HBase表以及Rowkey的设计】的更多相关文章

一 命名空间 1 命名空间的结构 1) Table:表,所有的表都是命名空间的成员,即表必属于某个命名空间,如果没有指定, 则在 default 默认的命名空间中. 2) RegionServer group:一个命名空间包含了默认的 RegionServer Group. 3) Permission:权限,命名空间能够让我们来定义访问控制列表 ACL(Access Control List).例如,创建表,读取表,删除,更新等等操作. 4) Quota:限额,可以强制一个命名空间可包含的 re…
Hbase的表结构设计与关系型数据库有很多不同,主要是Hbase有Rowkey和列族.timestamp这几个全新的概念,如何设计表结构就非常的重要. 创建 Hbase就是通过 表 Rowkey 列族 timestamp确定一行数据. 这与关系型数据库完全不同: 属性 HBase RDBMS 数据类型 只有字符串 丰富的数据类型 数据操作 简单的增删改查 不支持join 各种函数和表连接 存储模式 基于列式存储 基于表格结构和行式存储 数据保护 更新后仍然保留旧版本 替换 可伸缩性 轻易的增加节…
目录 为什么要设计rowKey 三大原则 长度原则 散列原则 唯一原则 热点问题的解决 加盐 哈希 反转 时间戳反转 为什么要设计rowKey 首先要弄明白一点,Regions的分区就是根据数据的rowKey处理的,而如果设计rowKey不合理,就会导致所有数据到一个分区,或者并没有很好地发挥预分区带来的负载均衡作用,还是会发生数据倾斜. HBase中还有一个就是rowKey的热点问题,因为rowKey是根据字典顺序排序的,如果rowKey设计不合理,当大量的client访问hbase集群的一个…
热点问题 hbase 中的行是以 rowkey 的字典序排序的,这种设计优化了scan 操作,可以将相关的 行 以及会被一起读取的行 存取在临近位置,便于 scan . 然而,糟糕的 rowkey 设计是 热点 的源头. 热点发生在大量的客户端直接访问集群的一个或极少数节点.访问可以是读,写,或者其他操作.大量访问会使 热点region 所在的单个机器超出自身承受能力,引起性能下降甚至是 region 不可用.这也会影响同一个 regionserver 的其他 regions,由于主机无法服务其…
一.案例分析 常见避免数据热点问题的处理方式有:加盐.哈希.反转等方法结合预分区使用. 由于目前原数据第一字段为时间戳形式,第二字段为电话号码,直接存储容易引起热点问题,通过加随机列.组合时间戳.字段反转的方式来设计Rowkey,来实现既能高效查询又能避免热点问题. 二.代码部分 package beifeng.hadoop.hbase; import java.io.IOException; import java.text.SimpleDateFormat; import java.util…
一直以来对rowkey的设计都比较迷茫,<hbase权威指南>倒是给出了个还算靠谱的例子. 下面这个例子有点儿像帖子表结构,它的rowkey设计是这样的,可以简单的理解为,什么人在什么时间发了什么信息,信息包括什么附件,它是用户为主线的一个设计. <userId>-<date>-<messageId>-<attachmentId> 如果我们想查某个用户发的信息,我们可以设置scan的start rowkey 为该userId,end rowkey…
访问hbase table中的行,只有三种方式: 1 通过单个row key访问 2 通过row key的range 3 全表扫描 Hadoop Sequence File 文中可能涉及到的API: Hadoop/HDFS:http://hadoop.apache.org/common/docs/current/api/ HBase: http://hbase.apache.org/apidocs/index.html?overview-summary.html Begin! HBase的查询实…
hive-=mareduce 的  split  在 hbase就是  region了,,,,,,,访问region必须通过hregionserver 会造成regionser负担过大, 另外 region有可能很大,并发度不高. 1 需要大量随即读写的时候,hbdfs不支持随即读写哦. 2 大数据上高并法操作,比如每秒对pb级数据进行上千次操作. 3 读写访问非常简单,不存在一些join之类的复杂操作. 举例: 消息系统:聊天系统和邮件系统(非消息队列) 一个较小的临时数据集,经常变化 一个不…
一.HBase Shell创建表 1.HBASE shell命令 ## hbase(main):001:0> create_namespace 'ns1' //创建命名空间:ns1 hbase(main):002:0> list_namespace //查看命名空间 ## hbase(main):003:0> create 'ns1:t1', 'cf' //创建一个表t1,属于ns2命名空间,列族:cf hbase(main):005:0> create 'ns1:t2',{NAM…
hbase表定义指令详细解说篇 1. alter, alter_async, alter_status 2. create 3. describe (可以简写成'desc')  显示某张表的结构情况 hbase(main)::> help 'describe' Describe the named table. For example: hbase> describe 't1' hbase> describe 'ns1:t1' Alternatively, you can use the…