hbase的介绍和使用

一、hbase

  • hbase是一个实时分布式的高维数据库
  • 基于hdfs文件存储系统,通过MapReduce计算,通过zookeeper监控协调,元数据存储在zookeeper中
  • 主要用来存储结构化和非结构化的数据,查询的效率比较高,建立多个索引内部有序,按字典升序
  • 是一个主从架构,主节点Hmaster和从节点RegionServer都是jvm进程,里面的数据,例如RegionServer的storefile都是进程的对象、
  • region:HBase自动把表水平划分成多个区域(region),每个region会保存一个表里面某段连续的数据;每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值的时候,region就会等分会两个新的region(裂变)。当table中的行不断增多,就会有越来越多的region。这样一张完整的表被保存在多个Regionserver 上。
  • 同一个region的数据存储在同一节点上
  • Hmaster的作用
    • 1)管理hbase集群
    • 2)负责region分配
    • 3)负责发现regionServer
    • 4)负责regionServer的负载平衡
    • 5)负责将切分后的region分配给regionServer管理
  • regionServer的作用
    • 1)管理region
    • 2)负责处理region的读写请求
    • 3)负责切分过大的region
  • Region是HBase中分布式存储和负载均衡的最小单元。
  • HRegion由一个或者多个Store组成,每个Strore又由一个memStore和0至多个StoreFile组成。
  • HBase表中的每个列都归属于某个列族,每个“列族”都可以有多个列成员(column)

二、hbase的数据模型

在这里插入图片描述
将一个表开始的时候有一个region,region中的数据按rowkey值有序排列,没有startkey和endkey,region中又分为多个store,一个store代表一个列族,每个store中又分为memstore和filestore,memstore是指数据存放在内存中,一个memstore默认为128m,大小为时间存储尺寸,当时间达到一定值或者大小达到128m时会自动溢写到磁盘中,即storefile,也可以手动,flush ‘表名’ 触发溢写操作,storefile就是hbase中的hfile文件可在hbase查看,当region中的任意一个store超过10G的时候,region就会自动分成两个region,Hmaster负责将region分给regionServer,每个regionServer都对应一个Hlog,当有内存的数据memstore没有写入磁盘store时,regionServer挂了,Hlog中会记录这些数据,可以通过Hlog查看,Hlog也存放在hdfs上.


在这里插入图片描述
zookeeper
1.存储hbase的元数据
2.负责Hmaster的高可用

HMaster
1.管理regionServer
2.为regionServer分配region
3.负责regionServer的负责平衡
4.负责重新分配失效regionServer上的region给其他regionServer
5.负责处理对表的创建删除和修改的请求

HregionServer
一个HregionServer对应一个DataNode
一个HregionServer对用一个Hlog
1.负责处理客户端的读写请求
2.负责切分过大的region
3.负责管理region
三维有序
1.rowkey按字典升序
2.列名按字典手续
3.版本号按自然降序


三、hbase的操作指令

1)start-hbase.sh启动hbase集群

在这里插入图片描述

2)hbase shell 进入hbase命令行

在这里插入图片描述

3)创建一个表,指定一个列族,每个表中必须要有一个列族

创建一个test表,列族为info
在这里插入图片描述

4)list查看当前命名空间下的表

默认有一个table
在这里插入图片描述

5)向表中插入数据

  • 只能一条一条的插入
    test为要插入的表,001为自定义的rowkey,唯一标识一行数据,name为列,info为他所属的列族,值为zhangsan
    在这里插入图片描述

6)查询数据

指明表名和rowkey
在这里插入图片描述
获取列族中列的数据
在这里插入图片描述

7)describe ‘test’ 查看表结构

在这里插入图片描述

8)删除列族和增加列族

由于当前只有一个列族,不能删除,需要再增加一个

在这里插入图片描述
alter ‘test’,NAME => ‘info1’ NAME必须大写
在这里插入图片描述
在这里插入图片描述
删除列族alter ‘test’,‘delete’ => 'info1’
在这里插入图片描述

9)scan ‘test’ 扫描全表

在这里插入图片描述
指定扫描范围,包左不包右
在这里插入图片描述

10)统计记录数

count ‘test’
在这里插入图片描述

11)禁用和启用表,删除表

要删除表首先要禁用表,禁用的表不能使用

disable ‘test’ 禁用表
在这里插入图片描述
enable ‘test’ 启用表
在这里插入图片描述
exists ‘test’ 测试表是否存在
在这里插入图片描述
drop ‘test’ 删除表
在这里插入图片描述
必须先禁用后删除
在这里插入图片描述

java
java入门基础学习(一)
java入门基础学习(二)
java入门基础学习(三)
java入门基础学习(四)
java入门基础学习(五)
java入门基础学习(六)
java入门基础学习(七)
java入门基础学习(八)
java入门基础学习(九)
java入门基础学习(十)
java入门基础学习(十一)
java入门基础学习(十二)
java入门基础学习(十三)
java入门基础学习(十四)Maven Git
java总结,题目+笔记
java进阶之常见对象(一)
java进阶之常见对象(二)
java进阶之冒泡排序
java进阶之选择排序
java进阶之面向对象(封装)
java进阶之面向对象(代码块、继承)
java进阶之面向对象(多态、抽象、接口)
java进阶之匿名内部类、访问修饰符、包
java进阶之io流(字节流,字符流)
java应用一(反射的应用)
java应用二(配置文件、工具类)
java应用三(数据库索引、spring)
java应用四(连接池)
Linux
Linux基础一
Linux基础二
Linux基础三
Linux基础四
Linux基础五
Mysql
mysql一
mysql二
mysql三
mysql四
java连接数据库
redis
redis一(缓存,redis简介)
redis二(单节点安装,桌面插件)
redis三(指令的使用)
redis四(java与redis的连接,基本指令在java中的操作)
redis五(练习)
redis七(持久化)
redis九(集群安装)
Hadoop
hadoop学习一
hadoop学习二
hadoop学习三
hadoop学习四
hadoop学习五
hadoop学习六
hadoop学习七
hadoop学习八
hadoop异常处理
hadoop基础学习九
hadoop基础学习十
hadoop基础学习十一
hadoop基础学习十二
hadoop基础学习十三
hadoop基础学习十四
hadoop基础学习十五

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值