HBase基本知识和应⽤场景
✿诞⽣背景:
hadoop局限性: Hadoop 只能执⾏批量处理,并且只以顺序⽅式访问数据。
✿hadoop实际应⽤之⼀:Hadoop+HBase(随机⾼效读取)建⽴NoSQL分布式数据库应⽤
⼀、HBase(HBase以表的形式存储数据,表有⾏和列组成。)
1,什么是HBase?
HBase是⼀个分布式的、⾯向列的开源数据库。本质是⼀个数据库(适⽤于分布式的数据库,它⾯向列)。
HBase 结构,⾸先是⼀张表结构,然后与⼀般表不同的是,⼀般表:同⼀个列名下的那些⼀个个的单元格的值类型是相同的,⽽ HBase表是同⼀个列名下的那些⼀个个的单元格的值类型是不同,且数量不同...(相⽐于传统表,同列名下的⼀个个单元格,hbase 的单元格内容,可以装不定长的数据(⼀些以键值对形式存储的数据,⼀些则直接也是单个值的形式))
✿传统表:单元格是⼀个坑⼀个萝⼘
✿ HBase表:单元格是⼀个坑⼀把花⽣(花⽣有双仁、单仁的哦)
(图:传统的表)
(图2:HBase 表)
列族⾥的数据通过列限定符或列来定位,
通过列限定符来定位例如:Sname:nickName,Sage:female等等;通过列来定位的例如:Sname:⼩红
2,HBase 中的表特点:
(1)⼤:⼀个表可以有上⼗亿⾏,上百万列
(2)⾯向列:列可以灵活指定,⾯向列(族)的存储和权限控制,列(簇)独⽴检索。
(3)稀疏:对于为空(null)的列,并不占⽤存储空间,因此,表可以设计的⾮常稀疏。
(4)⽆严格模式:每⾏都有⼀个可排序的主键和任意多的列,列可以根据需要动态的增加,同⼀张表中不同的⾏可以有截然不同的列
3.1,HTable⼀些基本概念1
☺在HBase中,HTable是其客户端和服务端通信的java api对象,主要提供对表的put/get/delete/scan等操作创建⼀个 hBase 对象:
Configuration conf = ate();
HTable hTable = new HTable(conf, "tableName");
② HTable 的增删改查,这⾥简单举⼏个例⼦
●获取指定⾏某些单元格对应的值:public Result get(final Get get) throws IOException
●获取表名:public byte [] getTableName()
●添加值:public void put(final Put put) throws IOException
●删除指定单元格/⾏:void delete(Delete delete) throws IOException
......
ps: HBase Java API 代码开发
常⽤的⼏个主要HBase API类和数据模型之间的对应关系:
表:HBase ⽤表来组织数据。
⾏:在表⾥,数据按⾏存储,⾏由⾏键唯⼀标识。⾏键没有数据类型,为字节数组byte[]。
列限定符:列族⾥的数据通过列限定符或列来定位,列限定符不必事先定义。
单元:存储在单元⾥的数据称为单元值,值是字节数组。单元由⾏键,列族或列限定符⼀起确定。
时间版本:单元值有时间版本,是⼀个long 类型。
3.2, HTable ⼀些基本概念2 【】
1、 ⾏键(RowKey ):① 通过单个 row key 访问② 通过 row key 的 range ③ 全表扫描
2、 列簇(Column Family ):
HBase 表中的每个列,都归属与某个列簇。列簇是表的 Schema 的⼀部分(⽽列不是)列名都以列簇作为前缀。例如:student :name ,student :age ,teacher :age 等等 (例⼦在⽂章最后的图1)
访问控制、磁盘和内存的使⽤统计等都是在列簇层⾯进⾏的。
列簇越多,在取⼀⾏数据时所要参与 IO 、搜寻的⽂件就越多,所以,如果没有必要,不要设置太多的列簇,官⽹推荐是⼩于等于 3(最好就
⼀个列簇)3、 时间戳(TimeStamp ):
■ 时间戳可以由 HBase (在数据写⼊时⾃动)赋值,此时时间戳是精确到毫秒的当前系统时间。时间戳也可以由客户显式赋值。
■ 每个单元格都保存着同⼀份数据的多个版本。版本通过时间戳来索引。■ 如果应⽤程序要避免数据版本冲突,就必须⾃⼰⽣成具有唯⼀性的时间戳。
■ 每个单元格中,不同版本的数据按照时间倒序排序,即最新的数据排在最前⾯。HBase 在查询的时候,默认返回最新版本/最近的数据。如果需要读取旧版本的数据,可以指定时间戳。
□ 为了避免数据存在过多版本造成的的管理(包括存储和索引)负担,HBase 提供了两种数据版本回收⽅式: 保存数据的最后 n 个版本
保存最近⼀段时间内的版本(设置数据的⽣命周期 TTL )。 ⽤户可以针对每个列簇进⾏设置。
4、 单元格(Cell ):
■ 由{RowKey, Column( =<Column Family> + <Qualifier>), Version} 唯⼀确定的单元。Cell 中的数据是没有类型的,全部是字节码形式存储。
⼆、HBase 的安装和应⽤
对应于Hadoop ,HBase 也有三种运⾏模式:单机模式、伪分布式模式、分布式模式。..........(安装过程遇到的bug ,请参考⽂章)《》
附录
图1:HBase 表结构
图2:列名以列簇作为前缀的例⼦
列族⾥的数据通过列限定符或列来定位,
通过列限定符来定位例如:Sname:nickName,Sage:female等等;通过列来定位的例如:Sname:⼩红
参考⽂章:
《Hbase总结(五)-hbase常识及habse适合什么场景》
《hBase之HTable踩坑》
《HBase基础知识》
《HBase 的Get(读),Put(写),Delete(删),Scan(扫描)和Increment(列值递增)》
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论