hbase 的逻辑存储结构、物理存储结构和增删改查

本文探讨了HBase与Hive的区别,包括HBase作为NoSQL数据库适用于实时查询,而Hive是Hadoop数据仓库用于批处理。深入解析了HDFS的架构、存储特点和Shell命令。同时详细阐述了HBase的逻辑结构、物理存储及增删改查操作。
摘要由CSDN通过智能技术生成

目录

一、hbase 和hive 

1.Hbase

2.Hive

3.hbase 和hive的关系:

4.HDFS分布式文件系统

1)HDFS架构

 2)HDFS存储特点

 3)HDFS的shell命令

二、hbase的逻辑结构和物理存储

1.逻辑结构

2.物理存储

3.Hbase各项特征汇总

4.Hbase支持的访问接口

5.Hbase的shell命令

三、hbase的增删改查

1.创建表:

2.修改表:

3.查看所有表:

4.增/改表数据:put

5.查表数据:

6.删表数据:


一、hbase 和hive 

1.Hbase

Hadoop database 的简称,也就是基于Hadoop数据库,哈希内存,是一种NoSQL数据库,主要适用于海量明细数据(十亿、百亿)的随机实时查询,如日志明细、交易清单、轨迹行为等;

2.Hive

Hive是Hadoop数据仓库,不是数据库,主要是让开发人员能够通过SQL来计算和处理HDFS上的结构化数据,底层逻辑是通过map-reduce包,将sql转化成map-reduce程序进行处理和计算,适用于离线的批量数据计算。

3.hbase 和hive的关系:

  1.  Hive用于批处理,而HBase用于事务处理。
  2.  Hive是查询引擎,而Hbase是 非结构化数据的数据存储。
  3. Hive是运行MapReduce作业的类似SQL的引擎,而HBase 是Hadoop上的NoSQL键/值数据库

4.HDFS分布式文件系统

HDFS是Hadoop两大核心组成部分之一,提供了大规模分布式文件存储能力,支持大流量数据读写

1)HDFS架构
  • 遵循主从(master/slave)架构,一个HDFS由一个名称节点(NameNode)和若干个数据节点(DataNode)组成
  • 名称节点:中心服务器,负责管理文件系统的命名空间及客户端对文件的访问
  • 数据节点:杜泽处理文件系统客户端的读写请求,在名称节点的统一调度下完成数据库创建、复制和删除操作
  • 客户端访问流程:把文件名发送给 名称节点,名称节点根据文件名找到对应的数据块,从数据块中找到实际存储的数据节点的位置,把位置发给客户端;客户端直接访问数据节点获取数据

 2)HDFS存储特点
  1. 冗余数据存储:HDFS采用多副本冗余存储,一个数据块的多个副本存在不同的数据节点,加快数据传输速度、易于检查数据错误、保障数据可靠性
  2. 数据存取策略:HDFS对数据存储,读取、复制进行经精细化的设计,提升系统整体读写性能
  3. 数据错误和恢复:无论名称节点还是数据节点出错,HDFS都可以检测到错误并自动恢复
 3)HDFS的shell命令

二、hbase的逻辑结构和物理存储

1.逻辑结构

  • hbase采用列存储,本质上是key-value存储系统,其中row key相当于key,列簇的集合相当于value
  • row key用来检索记录的主键,它必须存在一张表中且唯一
  • hbase一张表由一个或多个region组成:下图的一张表由三个region组成,按照row key的字典序排列在不同的region里
  • 列族:下表被划分为两个列族class_info(name,age,class列)和 contact_info(mobile,adress列)

2.物理存储

实际的物理存储是column family是列族,column qualifier 是列名,time stamp是自动生成的,也可以手动指定,type表示数据以插入方式写进去的,value是该列的直

3.Hbase各项特征汇总

HBASE 特征汇总
开发语言Java数据分区一致性哈希
数据模型key-value索引支持
系统架构

1.zookeeper进行maser选举

2.数据存储到hdfs实现容错能力

数据一致性强一致性
存储方式列簇存储数据编写

随机读写和删除

更新操作:插入一条新TIME STAMP

4.Hbase支持的访问接口

5.Hbase的shell命令

三、hbase的增删改查

1.创建表:

//创建客户表,新增两个列族,第一个是基本信息,第二是财产信息
create 'customer','baseinfo','property'

2.修改表:

修改列族baseinfo的VERSIONS的值为3
$ alter 'customer',{NAME=>'baseinfo',VERSIONS=>2}

3.查看所有表:

list

4.增/改表数据:put

//语法:put <table>,<rowkey>,<family:column>,<value>,<timestamp>
//新增或者覆盖数据 put '表名','键名','列名(不是列簇名)','值'
//指定的列名下单元格有值就覆盖..没有值就创建.所以HBase的添加数据和修改数据都是put语句..
//最后的时间戳可以不写..默认为系统时间,如果要写..切记不可使用引号括起来


给customer表,rowkey是1的baseinfo列族新增数据
$ put 'customer','1','baseinfo:name','zhengshangchao',1462241148
$ put 'customer','1','baseinfo:age','29'
$ put 'customer','1','baseinfo:phone','13006214788'
$ put 'customer','1','baseinfo:address','shanghai'


给customer表,rowkey是1的property列族新增数据
$ put 'customer','1','property:wechatpay','1000',1462241148
$ put 'customer','1','property:alipay','1000'
$ put 'customer','1','property:bankcard','20000'
$ put 'customer','1','property:cash','100'

5.查表数据:

//查看全表内容
$ scan 'customer'

//查customer表里的RowKey为1的数据
$ get 'customer','1'

//查看列族
$ get 'customer', '1', 'baseinfo'
$ get 'customer', '1', 'property'

//看下customer表两个列族支持的版本VERSIONS的值是多少,运行命令
$ describe 'customer' 

6.删表数据:

//删除某个单元值的值  会删除所有版本
//语法:delete <table>, <rowkey>,  <family:column> , <timestamp>,必须指定列名
//测试后发现后边跟时间戳也没有用,依然会删除所有版本
$ delete 'customer','1','baseinfo:phone'

//删除行或者整个列簇
//语法:deleteall <table>, <rowkey>,  <family:column> , <timestamp>,可以不指定列名,删除整行数据
$ deleteall 'customer','1'
$ deleteall 'customer'

//清空表数据
//语法: truncate <table>
//等同于 disable -> drop -> create
hbase shell> truncate 'customer'

//删除表:必须要先禁用,才能删除
$ disable 'customer'
$ drop 'customer'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值