文章目录
  1. HBase初识
  2. 1. 简介
  3. 2. 安装使用
    1. 2.1 启动/停止服务
    2. 2.2 基本示例
  4. 3. 数据模型

[TOC]

HBase初识

👉 官方最新文档
👉 笔记基于版本 1.2.6

1. 简介

HBase是一个基于Hadoop,分布式、可伸缩、存储大数据量(billions of rows X millions of columns)的数据库。它能提供大数据的随机、实时的读写。(灵感来自于谷歌的BigTable)

2. 安装使用

HBase提供Standalone模式、伪分布式模式、完全分布式模式的安装,具体安装参考文档的Quick Start

2.1 启动/停止服务

1
2
3
4
5
6
# 启动
$ ./start-hbase.sh
$ jps

# 停止服务
$ ./stop-hbase.sh

2.2 基本示例

  • 连接HBase
1
$ hbase shell
  • 使用 help 查看帮助

  • 建表

1
2
3
4
1.8.7-p357 :002 > create 'test', 'cf'
0 row(s) in 1.6060 seconds

=> Hbase::Table - test
  • 查看表列表
1
2
3
4
5
6
1.8.7-p357 :005 > list 'test'
TABLE
test
1 row(s) in 0.0020 seconds

=> ["test"]
  • 插入数据
1
2
3
4
5
6
7
8
1.8.7-p357 :006 > put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.3840 seconds

1.8.7-p357 :007 > put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0120 seconds

1.8.7-p357 :008 > put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0130 seconds
  • 查看数据
1
2
3
4
5
6
1.8.7-p357 :009 > scan 'test'
ROW COLUMN+CELL
row1 column=cf:a, timestamp=1529991722420, value=value1
row2 column=cf:b, timestamp=1529991725721, value=value2
row3 column=cf:c, timestamp=1529991729647, value=value3
3 row(s) in 0.0280 seconds

3. 数据模型

在HBase中,数据是存在Tables(表)中,表由Rows(行)Columns(列)组成。这个和传统的RDBMS类似。

  • Table

,包含若干

  • Row

,一个行包含一个Row Key(行健)和若干带有值的。RowKey是按照字母顺序进行排列的,所以设计行健是非常重要的,这样存储的目的是将相关的行存储在一起。

  • Column

,一个列含有Column Family(列族)Column Qualifier(列名标识),用冒号:分隔。

  • Column Family

列族,在物理存储上包含若干列和值。每个列族还有一堆属性,比如是否需要缓存值压缩数据的方式等等。每一行数据拥有一样的列族,即使这个列族没有存储任何数据。

物理上,所有列族的成员都被存储在了一起,数据的调节和存储都是列族级别的。

  • Column Qualifier

列名标识, 存储在列族之中,用来定位一个列中的数据。列族在建表的时候就需要指定,列标识是可以动态添加的。

  • Cell

数据单元, 一个Cell可以由列,列族,列标识进行定位,Cell中包含一个时间戳,时间戳用来标识数据的版本。

  • Timestamp

时间戳,时间戳会在写入数据的自动生成,标识着一个数据值的版本。当然,你也可以在写数据的时候自定义Timestamp的值。物理存储上,多个版本的值是按照时间戳是降序存放的,所以在取值的时候,取的是第一个查询到的。

具体物理上的存储,后续在做讨论。

文章目录
  1. HBase初识
  2. 1. 简介
  3. 2. 安装使用
    1. 2.1 启动/停止服务
    2. 2.2 基本示例
  4. 3. 数据模型