Hbase(小麦)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,182元/月
简介: hbase

HBase

HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建大规模结构化的存储集群。HBase的目标是存储并处理大型数据,具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。与MapReduce的离线批处理计算框架不同,HBase是一个可以随机访问的存储和检索数据平台,弥补了HDFS不能随机访问数据的缺陷,适合实时性要求不是非常高的业务场景。HBase存储的都是Byte数组,它不介意数据类型,允许动态、灵活的数据模型。

上图描述了Hadoop 2.0生态系统中的各层结构。其中HBase位于结构化存储层,HDFS为HBase提供了高可靠性的底层存储支持, MapReduce为HBase提供了高性能的批处理能力,Zookeeper为HBase提供了稳定服务和failover机制,Pig和Hive为HBase提供了进行数据统计处理的高层语言支持,Sqoop则为HBase提供了便捷的RDBMS数据导入功能,使业务数据从传统数据库向HBase迁移变的非常方便。

HBase是基于列存储、构建在HDFS上的分布式存储系统,其主要功能是存储海量结构化数据。HBase构建在HDFS之上,因此HBase也是通过增加廉价的PC机提高系统运行和存储的能力。HBase中存储的表有如下特点:

  • 大表:一个表可以有数十亿行,上百万列
  • 无模式:每行都有一个可排序主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列
  • 面向列:面向列(族)的存储和权限控制,列(族)独立检索
  • 稀疏:对于空(null)的列,并不占用存储空间,表可以设计的非常稀疏
  • 数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳
  • 数据类型单一:Hbase中的数据都是字符串,没有类型

基本架构

由上图可知,hbase包括Clinet、HMaster、HRegionServer、ZooKeeper组件:

  • Client

    Client主要通过ZooKeeper与Hbaser和HRegionServer通信,对于管理操作:client向master发起请求,对于数据读写操作:client向regionserver发起请求

  • ZooKeeper

    zk负责存储root表的地址,也负责存储当前服务的master地址,regsion server也会将自身的信息注册到zk中,以便master能够感知region server的状态,zk也会协调active master,也就是可以提供一个选举master leader,也会协调各个region server的容灾流程

  • HMaster

    master可以启动多个master,master主要负责table和region的管理工作,响应用户对表的CRUD操作,管理region server的负载均衡,调整region 的分布和分配,当region server停机后,负责对失效的regionn进行迁移操作

  • HRegionServer

    region server主要负责响应用户的IO请求,并把IO请求转换为读写HDFS的操作

使用场景

适用场景

  • 存在高并发读写
  • 表结构的列族经常需要调整
  • 存储结构化或半结构化数据
  • 高并发的key-value存储
  • key随机写入,有序存储
  • 针对每个key保存一个固定大小的集合 多版本

不适用场景

  • 由于hbase只能提供行锁,它对分布式事务支持不好
  • 对于查询操作中的join、group by 性能很差
  • 查询如果不使用row-key,性能会很差,因为此时会进行全表扫描,建立二级索引或多级索引需要同时维护一张索引表
  • 高并发的随机读支持有限
相关文章
|
Shell 分布式数据库 Apache
Hbase常用shell操作
Hbase常用shell操作
741 1
|
存储 NoSQL 分布式数据库
Hbase+ES和MongoDB存储大数据的选用
Hbase+ES和MongoDB存储大数据的选用
717 0
|
Java Shell 分布式数据库
HBase高级操作
HBase高级操作
492 0
|
11月前
|
人工智能 监控 数据可视化
低代码开发平台,快速搭建云MES系统
低代码平台是一种通过可视化操作减少手工编码的高效开发工具,适用于快速构建和交付应用软件。万界星空科技的AI低代码云MES系统具备快速开发、灵活可扩展、降低维护成本、智能分析与决策等优势,支持生产计划、质检、库存管理、数据大屏、自定义报表等功能,助力企业实现生产过程的数字化和智能化转型,提升运营效率和市场竞争力。
573 4
|
5月前
|
分布式计算 Ubuntu Hadoop
Ubuntu22.04下搭建Hadoop3.3.6+Hbase2.5.6+Phoenix5.1.3开发环境的指南
呈上,这些步骤如诗如画,但有效且动人。仿佛一个画家在画布上描绘出一幅完美的画面,这就是你的开发环境。接下来,尽情去创造吧,祝编程愉快!
313 19
|
7月前
|
SQL 分布式计算 IDE
如何在IDE中通过Spark操作Hive
通过以上方法和代码示例,你可以在IDE中成功通过Spark操作Hive,实现大规模数据处理和分析。确保理解每一步的实现细节,应用到实际项目中时能有效地处理各种复杂的数据场景。
396 28
|
存储 分布式数据库 数据库
Hbase学习二:Hbase数据特点和架构特点
Hbase学习二:Hbase数据特点和架构特点
319 0
|
SQL NoSQL 数据库
Flutter Hive NoSql 数据库使用指南
本文将会写一个 Hive CURD 的例子,详细介绍 Hive 这个轻量级的 Flutter 离线数据库的使用方法,包括 Hive 在 Flutter 开发中的重要性、Hive 与 SQLite 的比较等,帮助开发者快速上手 Hive 数据库。
364 6
Flutter Hive NoSql 数据库使用指南
|
11月前
|
缓存 监控 Shell
如何使用 HBase Shell 进行数据的实时监控和备份?
如何使用 HBase Shell 进行数据的实时监控和备份?
202 5