Hbase实战--hbase安装与概念解析

Hbase简介

hbase官方文档:http://https://hbase.apache.org/
Apache HBase™是Hadoop数据库,这是一个分布式,可扩展的大数据存储。当您需要随机,实时读取/写入您的大数据时使用Apache HBase™。该项目的目标是托管非常大的表 - 数十亿行X百万列 - 在商品硬件集群上。HBase是一个开源的,分布式的,版本化的非关系数据库。

hbase特点

  1. HBASE与mysql、oralce、db2、sqlserver等关系型数据库不同,它是一个NoSQL数据库(非关系型数据库)

  2. Hbase的表模型与关系型数据库的表模型不同:
  3. Hbase的表没有固定的字段定义;
  4. Hbase的表中每行存储的都是一些key-value对
  5. Hbase的表中有列族的划分,用户可以指定将哪些kv插入哪个列族
  6. Hbase的表在物理存储上,是按照列族来分割的,不同列族的数据一定存储在不同的文件中
  7. Hbase的表中的每一行都固定有一个行键,而且每一行的行键在表中不能重复
  8. Hbase中的数据,包含行键,包含key,包含value,都是byte[ ]类型,hbase不负责为用户维护数据类型
  9. HBASE对事务(transaction)的支持很差
  10. Hbase的数据存储在hdfs中,热数据(查询比较频繁的数据)在内存中缓存

hbase安装与部署

HBASE是一个分布式系统
其中有一个管理角色: HMaster(一般2台,一台active,一台backup)
其他的数据节点角色: HRegionServer(很多台,看数据容量)

安装准备:

首先,要有一个HDFS集群,并正常运行; regionserver应该跟hdfs中的datanode在一起
其次,还需要一个zookeeper集群,并正常运行
然后,安装HBASE
角色分配如下:

Hdp01: namenode datanode regionserver hmaster zookeeper
Hdp02: datanode regionserver zookeeper
Hdp03: datanode regionserver zookeeper

集群时间同步:

yum install ntpdate -y
ntpdate 0.asia.pool.ntp.org

安装步骤:
安装zookeeper
安装hbase
注意:hbase集群的服务器时间同步要求非常严格,机器之间的时间差不能超过30s
设置linux系统时间的命令:date -s '2017-11-08 16:00:30’

hwclock -w
如果能访问网络,可用时间同步服务:
yum install ntpdate -y
ntpdate 0.asia.pool.ntp.org
解压hbase安装包
修改hbase-env.sh

export JAVA_HOME=/root/apps/jdk1.7.0_67
export HBASE_MANAGES_ZK=false
<configuration>
		<!-- 指定hbase在HDFS上存储的路径 -->
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://wangzhihua1:9000/hbase</value>
        </property>
		<!-- 指定hbase是分布式的 -->
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
		<!-- 指定zk的地址,多个用“,”分割 -->
        <property>
                <name>hbase.zookeeper.quorum</name>
                <value>hdp01:2181,hdp02:2181,hdp03:2181</value>
        </property>
	</configuration>

这里写图片描述
修改 regionservers

hdp01
hdp02
hdp03

启动hbase集群

注意:Habse自带高可用模式

bin/start-hbase.sh

启动完后,还可以在集群中找任意一台机器启动一个备用的master

bin/hbase-daemon.sh start master

新启的这个master会处于backup状态

安装完后,可以通过web请求访问master的状态信息
http://hdp27-01:16010/

启动hbase的命令行客户端

注意:必须在hbase集群开启式 才能启动hbase shell

bin/hbase shell
Hbase> list // 查看表
Hbase> status // 查看集群状态
Hbase> version // 查看集群版本

命令行操作

建表

create ‘t_user’,‘base_info’,‘extra_info’

插入数据

put ‘t_user’,‘rk001’,‘base_info:name’,‘zhangsan’
put ‘t_user’,‘rk001’,‘extra_info:married’,‘false’

查询数据

– 全表扫描

scan ‘t_user’

– 单行获取

get ‘t_user’,‘rk001’

修改数据 —— 就是put插入后覆盖删除数据
–> 删除一个kv

delete ‘t_user’,‘rk001’,‘base_info:name’

–> 删掉整行

deleteall ‘t_user’,‘rk001’

–> 清空整个表

truncate ‘t_user’

–> 删除整个表

disable ‘t_user’
drop ‘t_user’

HBASE表模型

              hbase的表模型跟mysql之类的关系型数据库的表模型差别巨大,hbase的表模型中有:行的概念;但没有字段的概念。行中存的都是key-value对,每行中的key-value对中的key可以是各种各样,每行中的key-value对的数量也可以是各种各样,Hbase中的列就是一组key相同的k-v对。

注意: 1: 一个put对象只能操作一行数据,2.Bytes.toBytes比getByte功能更强大 建议使用Bytes.toBytes1


这里写图片描述

举例:

以一个公司员工表为案例来讲解,此表中包含员工基本信息(员工姓名、年龄),员工详细信息(工资、角色),以及时间戳。整体表结构如下:

hbase表模型的要点

  1. 一个表,有表名
  2. 一个表可以分为多个列族(不同列族的数据会存储在不同文件中)
  3. 表中的每一行有一个“行键rowkey”,而且行键在表中不能重复
  4. 表中的每一对kv数据称作一个cell
  5. hbase可以对数据存储多个历史版本(历史版本数量可配置)
  6. 整张表由于数据量过大,会被横向切分成若干个region(用rowkey范围标识),不同region的数据也存储在不同文件中

  7. base会对插入的数据按顺序存储:其实:hbase中每一个keyvalue数据的存储是这样的:rowkey|columnFamily|key:value,hbase对存入的keyvalue数据自动排序,排序规则:按行键,再按列族名,再按key名 进行排序(字典顺序,逐字节比较)!

 

扫一扫加入大数据公众号和技术交流群,了解更多大数据技术,还有免费资料等你哦

扫一扫加入大数据公众号和技术交流群,了解更多大数据技术,还有免费资料等你哦

扫一扫加入大数据公众号和技术交流群,了解更多大数据技术,还有免费资料等你哦

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿华田512

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值