大数据之HBase基础

  
      <李> HBase简介
    1.1。什么是HBase
    HBase是一个高可靠性,高性能,面向列,可伸缩的分布式存储系统,利用HBase技术可在廉价PC服务器上搭建起大规模结构化存储集群。   
  

HBase的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。

  

HBase是Google Bigtable的开源实现,但是也有很多不同之处。
比如:
Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop的HDFS作为其文件存储系统;
谷歌运行MAPREDUCE来处理Bigtable中的海量数据,HBase同样利用Hadoop MAPREDUCE来处理HBase中的海量数据;
Google Bigtable利用胖乎乎的作为协同服务,HBase利用饲养员作为对应。
<强>想了解大数据的学习路线,想学习大数据知识以及需要免费的学习资料可以加群:784789432。欢迎你的加入。每天下午三点开直播分享基础知识,晚上20:00都会开直播给大家分享大数据项目实战。

  

1.2。与传统数据库的对比
1,传统数据库遇到的问题:

  

1)数据量很大的时候无法存储

  

2)没有很好的备份机制

  

3)数据达到一定数量开始缓慢,很大的话基本无法支撑

  

2, HBase优势:

  

1)线性扩展,随着数据量增多可以通过节点扩展进行支撑

  

2)数据存储在hdfs上,备份机制健全

  

3)通过饲养员协调查找数据,访问速度块。

  

1.3。HBase集群中的角色
1,一个或者多个主节点,Hmaster

  

2,多个从节点,HregionServer

     <李> hbase数据模型
2.1。李hbase数据模型      

2.1.1。行键
与nosql数据库们一样,行关键是用来检索记录的主键。访问HBASE表中的行,只有三种方式:

  

1。通过单个行关键访问

  

2。通过行关键的范围(正则)

  

3。全表扫描

  

行关键行键(行键)可以是任意字符串(最大长度是64 kb,实际应用中长度一般为10 - 100字节),在HBASE内部,行关键保存为字节数组。存储时,数据按照行关键的字典序(字节顺序)排序存储。设计键时,要充分排序存储这个特性,将经常一起读取的行存储放到一起。(位置相关性)

  

2.1.2。列家族
列簇:HBASE表中的每个列,都归属于某个列族。列族是表的模式的一部分(而列不是),必须在使用表之前定义。列名都以列族作为前缀。例:如课程历史,课程:数学都属于课程这个列族。

  

2.1.3。细胞
由{行键,columnFamily,版本}唯一确定的单元.cell中的数据是没有类型的,全部是字节码形式存贮。

  

关键字:无类型,字节码

  

2.1.4。时间戳
HBASE中通过rowkey和列确定的为一个存贮单元称为细胞。每个细胞都保存着同一份数据的多个版本。版本通过时间戳来索引。时间戳的类型是64位整型。时间戳可以由HBASE(在数据写入时自动)赋值,此时时间戳是精确到毫秒的当前系统时间。时间戳也可以由客户显式赋值。如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。每个细胞中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。

  

为了避免数据存在过多版本造成的的管理(包括存贮和索引)负担,HBASE提供了两种数据版本回收方式。一是保存数据的最后n个版本,二是保存最近一段时间内的版本(比如最近七天)。用户可以针对每个列族进行设置。

     <李> hbase命令
3.1。命令的进退
1, hbase提供了一个shell的终端给用户交互李      

# $ HBASE_HOME/bin/hbase壳

  

2,如果退出执行戒命令

  

# $ HBASE_HOME/bin/hbase壳

  

……   

  

退出      

3.2。命令
名称

  

命令表达式

  

创建表   

创建的表名”、“列族名1 ','列族名2》,“列族名N”

  

查看所有表

  

列表   

描述表   

描述的表名”

  

判断表存在

  

存在的表名”

  

判断是否禁用启用表

  

is_enabled '表名的
is_disabled的表名”

  

添加记录

  

把'表名”,“rowKey”,“列族:列”、“值”

  

查看记录rowkey下的所有数据

  

得到的表名”、“rowKey”

  

查看表中的记录总数

  

统计的表名”

  

获取某个列族

大数据之HBase基础