大数据基础之HBase入门介绍

雅泽6个月前技术文章149



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'


相关文章

Linux系统调优参数应用实践

Linux系统调优参数应用实践

1 基于内存方面的性能参数调优1.1 cache与buffer解读1.1.1 cache出现的原因与功能计算机硬件中CPU、内存、磁盘是最主要的三大部分,其中,CPU发展到今天,执行速度最快,而内存相...

基于commit命令创建docker镜像

基于commit命令创建docker镜像

创建docker容器```Plain Text sudo docker run -it centos:centos7 /bin/bash![https://teamo-md.oss-cn-shang...

stress压测工具

1、stress 概述stress是一个linux的压力测试工具,主要用来模拟系统负载较高时的场景,用于对系统的CPU、IO、内存、负载、磁盘等进行压力测试2、安装yum install -y epe...

Doris集群部署

一、部署Doris集群1.部署doris服务(1)下载Doris            登陆地址https://doris.apache.org/download            选择需要下载的...

gitlab的备份和还原

由于gitlab中存放的都是开发人员的工作成果,所以为了保证数据安全,我们会定期对数据进行备份,对gitlab进行备份将会创建一个包含所有库和附件的归档文件。对备份的恢复只能恢复到与备份时的gitla...

HAProxy

HAProxy

1、HAProxy简介  HAProxy 是一款基于 TCP(第四层)和 HTTP(第七层)应用的代理软件,它也可作为负载均衡器,而且完全免费。 借助 HAProxy,可以快速并且可靠地提供基于 TC...

发表评论    

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