HBASE 初级入门

来源:互联网 发布:2015年12月非农数据 编辑:程序博客网 时间:2024/06/03 22:25

目录

  • 目录
  • HBase概述
    • HBase简介
    • Hbase的特点
    • HBase的优势
    • HBase VS RDBMS
  • HBase术语及数据模型
    • HBase术语说明
    • Hbase数据模型简析
    • HBase逻辑模型
    • HBase物理模型
    • HBase物理存储
    • HBase存储细节
  • HBase伪分布式搭建
    • HBase与Java版本
    • HBase与Hadoop版本
    • HBase体系结构
    • 配置步骤
  • HBase HDFS目录分析
    • WAL
    • Region
    • HDFS目录
  • HBase Shell操作
    • HBase Shell基本操作
    • HBase 组命令
    • general 与namespace演示

1 HBase概述

HBase简介

HBase是一个构建在HDFS之上的、分布式的、面向列的开源数据库,由Google BigTable的开源实现,它主要用于存储海量数据,是Hadoop生态系统中的重要一员。

Hbase的特点

  • 大:一个表可以有数十亿行,上百万列
  • 面向列:面向列(族)的存储和权限访问,列(族)独立索引
  • 稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
  • 数据类型单一:HBase中的数据类型都是字符串(string)
  • 无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态增加,同一- 张表中不同的行可以有截然不同的列

HBase的优势

这里写图片描述

HBase VS RDBMS

这里写图片描述

2 HBase术语及数据模型

HBase术语说明

  • 主键(Row Key)
    • 用来检索记录的主键。
    • 主键为任意字符串,最大长度为64kb,按字典顺序存储,在HBase内部保存为字节数组
      访问HBase 表中的行,只有三种方式
    • 通过单个Row Key访问
    • 通过Row Key的range
    • 全表扫描
  • 列族(Column Family)
    • 列族在创建表的时候声明,一个列族可以包含多个列,列中的数据都是以二进制形式存在,没有数据类型。
    • 列族是一些列的集合。
    • 一个列族所有列成员是有着相同的前缀。比如,列courses:history 和 courses:math都是 列族 courses的成员.冒号(:)是列族的分隔符,用来区分前缀和列名
  • 时间戳与存储单元(Timestamp and Cell)
    • HBase中通过row和columns确定的为一个存贮单元称为cell。每个 cell都保存着同一份数据的多个版本。
    • 在写入数据时,时间戳可以由HBase自动赋值(当前系统时间精确到毫秒),也可以显示赋值。
    • 每个cell中,不同版本的数据按照时间的倒序排序。
      {row, column, version}元组就是一个HBase中的一个 cell。

Hbase数据模型简析

HBase逻辑模型

这里写图片描述

HBase物理模型

这里写图片描述

HBase物理存储

这里写图片描述

HBase存储细节

  • 每个列族存储在HDFS上的一个单独文件夹中。
  • Key和Version number会在每个列族中存储一份。
  • 空值不会保存。

3 HBase伪分布式搭建

  • 三种模式
    本地/为分布式/集群

HBase与Java版本

这里写图片描述

HBase与Hadoop版本

这里写图片描述

HBase体系结构

这里写图片描述

配置步骤

  • 下载0.98 解压
  • 修改配置
    • hbase-env.sh
      • export JAVA_HOME=/url/local/bigdata/jdk1.7.0_67
    • 修改hbase-site.xml
<configuration>  <property>    <name>hbase.rootdir</name>    <value>hdfs://10.67.89.240:9000/hbase</value>  </property>  <property>    <name>hbase.zookeeper.property.dataDir</name>    <value>/home/admin/opt/hadoop-2.6.0/data</value>  </property>  <property>    <name>hbase.cluster.distributed</name>    <value>true</value>  </property></configuration>
  • 修改regionservers
    192.168.1.11
  • 启动Hbase
    bin/hbase-daemon.sh start zookeeper
    bin/hbase-daemon.sh start master
    bin/hbase-daemon.sh start regionserver

4 HBase HDFS目录分析

这里写图片描述

WAL

  • WAL是RegionServer在处理数据插入和删除的过程中用来记录操作内容的一种日志,在0.94.x叫做.logs
  • 向HBase写入数据:
    • 存HLog文件,存储在HDFS上
    • 存Region:
      1)内存
      2)spill到磁盘、文件、hdfs文件
    • 公式:内存 * 0.4 / 60

Region

这里写图片描述
这里写图片描述
这里写图片描述

HDFS目录

  • /hbase/.tmp : 临时目录,当对表做创建和删除的时候,会将表move到该目录下,然后进行操作
  • / hbase/data : 核心目录,存储HBase表的数据
  • 默认情况下,目录下有两个目录:
    /hbase/data/default
    在用户创建表的时候,没有指定namespace时,表就创建在此目录下
    /hbase/data/hbase
    系统内部创建的表

5 HBase Shell操作

HBase Shell基本操作

  • HBase提供了一个shell的终端给用户交互
    这里写图片描述

HBase 组命令

  • general
  • visibility labels
  • Security
  • Quotas
  • Snapshots
  • dml
  • Tools
  • Replication
  • ddl
  • Namespace

general 与namespace演示

  • Group name: general
    Commands: status, table_help, version, whoami

  • Group name: namespace
    Commands: alter_namespace, create_namespace, describe_namespace, drop_namespace, list_namespace, list_namespace_tables

hbase(main):006:0> put 'user','rk0001','info:name','lisi'0 row(s) in 0.8480 secondshbase(main):007:0> put 'user','rk0002','info:name','wangwu'0 row(s) in 0.0370 secondshbase(main):008:0> put 'user','rk0003','info:age','20'0 row(s) in 0.0470 secondshbase(main):009:0> scan 'user'ROW                      COLUMN+CELL                                                          rk0001                  column=info:name, timestamp=1452764286683, value=lisi                rk0002                  column=info:name, timestamp=1452764340636, value=wangwu              rk0003                  column=info:age, timestamp=1452764391871, value=20                  3 row(s) in 0.3700 secondshbase(main):010:0> get 'user','rk0001'COLUMN                   CELL                                                                 info:name               timestamp=1452764286683, value=lisi                                 1 row(s) in 0.1030 secondshbase(main):011:0> deletedelete                delete_all_snapshot   delete_snapshot       deleteallhbase(main):011:0> deleteall 'user','rk0001'0 row(s) in 0.1680 secondshbase(main):012:0> scan 'user'ROW                      COLUMN+CELL                                                          rk0002                  column=info:name, timestamp=1452764340636, value=wangwu              rk0003                  column=info:age, timestamp=1452764391871, value=20                  2 row(s) in 0.0820 secondshbase(main):013:0> disable 'user'0 row(s) in 1.8580 secondshbase(main):014:0> drop 'user'0 row(s) in 0.9640 secondshbase(main):015:0> listTABLE                                                                                        0 row(s) in 0.0220 seconds=> []hbase(main):016:0> status1 servers, 0 dead, 2.0000 average loadhbase(main):017:0> whoamiadmin (auth:SIMPLE)    groups: admin, wheel
0 0
原创粉丝点击