大数据基础之HBase入门介绍

雅泽1年前技术文章466



hbase.png

一、HBase简介

  • HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。HBase利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协调工具。

  • 考:如何存储物流信息

运单号:625311858890

2018-01-07 10:09:25	上海			已发货
2018-01-07 18:27:32	上海航空部		已收件
2018-01-07 20:25:38	快件离开上海航空部	已发往北京
2018-01-09 08:27:14	北京回龙观		派件中
2018-01-09 12:37:37	北京回龙观		已签收

二、HBase三要素

  • 1、主键:Row Key (主键是用来检索记录的主键,访问hbase table中的行,只有三种方式:)

    • 通过单个row key访问

    • 通过row key的range

    • 全表扫描(scan)

  • 2、列族:Column Family

    • 列族在创建表的时候声明,一个列族可以包含多个列,列中的数据都是以二进制形式存在,没有数据类型。

  • 3、时间戳:timestamp

    • HBase中通过row和columns确定的为一个存贮单元称为cell。每个 cell都保存着同一份数据的多个版本。版本通过时间戳来索引

三、HBASE基础知识

1、物理存储

  • able 在行的方向上分割为多个HRegion,一个region由[startkey,endkey)表示,每个HRegion分散在不同的RegionServer中

2、架构体系

  • Client 包含访问hbase 的接口,client 维护着一些cache 来加快对hbase 的访问,比如regione 的位置信息

  • Zookeeper

    • 保证任何时候,集群中只有一个running master

    • 存贮所有Region 的寻址入口

    • 实时监控Region Server 的状态,将Region server 的上线和下线信息,实时通知给Master

    • 存储Hbase 的schema,包括有哪些table,每个table 有哪些column family。Master 可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行

    • 为Region server 分配region

    • 负责region server 的负载均衡

    • 发现失效的region server 并重新分配其上的region

3、HBase的逻辑梳理

    • HBase中有两张特殊的Table,-ROOT-(hbase:namespace)和.META.(hbase:meta)

    • -ROOT-(hbase:namespace) :记录了.META.(hbase:meta)表的Region信息,-ROOT-(hbase:namespace)只有一个region

    • .META.(hbase:meta) :记录了用户创建的表的Region信息,.META.(hbase:meta)可以有多个regoin

    • Zookeeper中记录了-ROOT-(hbase:namespace)表的location

    • Client访问用户数据之前需要首先访问zookeeper,然后访问-ROOT-(hbase:namespace)表,接着访问.META.(hbase:meta)表,最后才能找到用户数据的位置去访问

四、Region Server

  • 维护Master 分配给它的region,处理对这些region 的IO 请求

  • 负责切分在运行过程中变得过大的region

可以看出,client 访问hbase 上数据的过程并不需要master 参与,寻址访问先zookeeper再regionserver,数据读写访问regioneserver。HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。

五、系统架构

六、HBASE与相关软件

  • hadoop-2.2.0

  • hbase-0.96.2-hadoop2

  • JDK7

  • RHEL6.3

  • 前提条件:本机或集群环境下hadoop.1.1.2已经安装成功

七、HBase Shell

  • hbase提供了一个shell的终端给用户交互(#$HBASE_HOME/bin/hbase shell )

名称

命令表达式

创建表

create '表名称', '列族名称1','列族名称2','列族名称N'

添加记录

put '表名称', '行名称', '列名称:', '值'

查看记录

get '表名称', '行名称'

查看表中的记录总数

count '表名称'

删除记录

delete '表名' ,'行名称' , '列名称'

删除一张表

先要屏蔽该表,才能对该表进行删除,第一步 disable '表名称' 第二步 drop '表名称'

查看所有记录

scan "表名称"

查看某个表某个列中所有数据

scan "表名称" , {COLUMNS=>'列族名称:列名称'}

更新记录

就是重写一遍进行覆盖

八、HBASE Shell的DDL操作

  • 1、创建表

>create 'users','user_id','address','info'
  • 2、列出全部表

>list
  • 3、得到表的描述

>describe 'users'
  • 4、创建表

>create 'users_tmp','user_id','address','info'
  • 5、删除表

>disable 'users_tmp'
>drop 'users_tmp'

九、HBASE Shell的DML操作

  • 1、添加记录

put 'users','xiaoming','info:age','24';
put 'users','xiaoming','info:birthday','1987-06-17';
put 'users','xiaoming','info:company','alibaba';
put 'users','xiaoming','address:contry','china';
put 'users','xiaoming','address:province','zhejiang';
put 'users','xiaoming','address:city','hangzhou';
put 'users','zhangyifei','info:birthday','1987-4-17';
put 'users','zhangyifei','info:favorite','movie';
put 'users','zhangyifei','info:company','alibaba';
put 'users','zhangyifei','address:contry','china';
put 'users','zhangyifei','address:province','guangdong';
put 'users','zhangyifei','address:city','jieyang';
put 'users','zhangyifei','address:town','xianqiao';
  • 2、获取一条记录

    • 1.取得一个id的所有数据

    • 2.获取一个id,一个列族的所有数据

    • 3.获取一个id,一个列族中一个列的所有数据

>get 'users','xiaoming'
>get 'users','xiaoming','info'
>get 'users','xiaoming','info:age'
  • 3、更新记录

>put 'users','xiaoming','info:age' ,'29'
>get 'users','xiaoming','info:age'
>put 'users','xiaoming','info:age' ,'30'
>get 'users','xiaoming','info:age'
  • 4、获取单元格数据的版本数据

>get 'users','xiaoming',{COLUMN=>'info:age',VERSIONS=>1}
>get 'users','xiaoming',{COLUMN=>'info:age',VERSIONS=>2}
>get 'users','xiaoming',{COLUMN=>'info:age',VERSIONS=>3}
  • 5、获取单元格数据的某个版本数据

> get 'users','xiaoming',{COLUMN=>'info:age',TIMESTAMP=>1364874937056}
  • 6、全表扫描

>scan 'users'
  • 7、删除xiaoming值的'info:age'字段

>delete 'users','xiaoming','info:age'
  >get 'users','xiaoming'
  • 8、删除整行

>deleteall 'users','xiaoming'
  • 9、统计表的行数

>count 'users'
  • 10、清空表

>truncate 'users'


相关文章

spark指标性能分析

spark指标性能分析

1)      Spark的性能指标   任务启动后可以在yarn的原生页面看到对应的任务信息,点击ApplicationMast...

mysql 事务隔离级别

mysql 事务隔离级别

一、事务隔离级别介绍多个连接开启各自事务操作数据库中数据时,数据库系统要负责隔离操作,以保证各个连接在获取数据时的准确性。事务隔离级别      MySQL隔离级别定义了事务与事务之间的隔离程度  二...

oracle PUS.SPU.CPU.BP.RU.RUR概念简介

PUS.SPU.CPU.BP.RU.RUR概念介绍PSU(Patch Set Updates):Oracle 选取在每个季度用户下载数量最多,并且得到验证具有较低风险的补丁放入到每个季度的PSU中,修...

CDP实操--配置HBase的Ranger策略验证(三)

CDP实操--配置HBase的Ranger策略验证(三)

1.1HBase的Ranger策略验证确保HBase的配置页面里已经勾选了“Ranger Service”在terminal中,kerberos登录到hbase,用如下命令登录hbase shellc...

Kubernetes 认证授权

Kubernetes 认证授权

1、认证所有 Kubernetes 集群都有两类用户:由 Kubernetes 管理的服务账号和普通用户。任何客户端访问之前,经由 kubernetes 时,需经过:认证(token, ssl)、授权...

开源大数据集群部署(四)Freeipa部署(kerberos+ldap)

开源大数据集群部署(四)Freeipa部署(kerberos+ldap)

1、 FreeIPA介绍Kerberos协议只是一种协议标准的框架,而MIT Kerberos则是实现了该协议的认证服务,是Kerberos的物理载体。将它与Hadoop服务进行集成便能够很好地解决安...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。