博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hbase架构简介
阅读量:2430 次
发布时间:2019-05-10

本文共 1436 字,大约阅读时间需要 4 分钟。

Hbase简介

HBase 是一个高可靠性、高性能、面向列簇、可伸缩的海量Nosql数据库,支持对数据的实时增删查改。同Hadoop一样,HBase同样构建在廉价PC Server集群上,仅需使用普通的硬件配置,就能够处理成千上万的行和列所组成的海量数据。

HBase 的原型是 Google 的 BigTable 论文,受到了该论文思想的启发,目前作为 Apache

的顶级项目来开发维护,用于支持结构化的数据存储。

特点:

  • 针对海量数据:Hbase 适合存储 PB 级别的海量数据,单表可以轻松达到数十亿行。

  • 面向列簇:Hbase 是根据列簇来存储数据。

  • 易扩展:HBase存储依赖HDFS,处理能力可以通过添加机器来扩展RegionServer的处理能力。

  • 支持高并发:HBase采用分区以及负载均衡的技术,可以实现很好的读写性能。

  • 不支持SQL:同几乎所有的Nosql一样,原生不支持SQL语句。

数据模型

HBase以表的形式存储数据,表由行和列组成。列划分为若干个列族,如下图所示:

在这里插入图片描述
Table(表):一个表可以有很多行。
Row(行):hbase中一行由一个Rowkey和很多列组成,所有的行的Rowkey是二进制有序的。
Column(列):列类似关系数据库表中的属性,列是可以随意定义的,一个行中的列不限名字、不限数量。
Column Family(列簇):一个列簇包含多个列,考虑到性能的原因,一个列簇里的所有数据会被统一存储。

Cell(单元格):一个列中可以存储多个版本的数据,而每个版本就称为一个单元格。

Timestamp(时间戳):一个列中可以有多个cell,那么怎么区别这些cell呢,这里就引入了时间戳,其实也可以理解为版本。

架构

在这里插入图片描述

HMaster

  • 负责维护集群的元数据信息,如表的创建,删除,属性修改等。
  • region的管理,如region的split,合并已经region的错误转移。
  • 维护整个集群的负载均衡。

HregionServer

  • HregionServer直接对接用户的读写请求,是真正的“干活”的节点。

Zookeeper

  • 存储集群的重要元数据。
  • HMaster高可用需要借助Zookeeper。
  • 监控RegionServer的状态,当RegionServer下线时通知给Master。

HRegion

  • Region是表的一部分数据。一个Region相当于关系数据库中表的一个分区。Region是对表的横向切割。

Store

  • 除了横向切割,Hbase也对表进行了纵向切割。每个列簇的数据会被同意存储,一个列簇就是一个Store。

MemStore

写入到每个Store的数据并不是会马上写入HDFS,首先数据会被存储在MemStore,每个Store都有一个MemStore。只有当MemStore达到阈值大小或者人工强制flush时数据才会落地到HDFS上。

StoreFile

每个MemStore落地到HDFS时,每次都会生成一个StoreFile。StoreFile就是一个HFile文件。HFile是HBase特有的文件存储格式。

HLog

  • Hlog就是WAL,WAL(write ahead log)意为预写日志。它是为了解决数据可靠性。数据到达HRegion的时候是先写入WAL,然后再写入Memstore。假如RegionServer此时宕掉了,由于WAL的数据是存储在HDFS 上的,所以数据并不会丢失。

转载地址:http://decmb.baihongyu.com/

你可能感兴趣的文章
LeetCode 81. 搜索旋转排序数组 II(头条)
查看>>
LC 42. 接雨水 + LC 11. 盛最多水的容器
查看>>
腾讯2017 秋招+暑期实习 笔试(编码;构造回文;字符移位;有趣的数字)
查看>>
LC 901. 股票价格跨度 LC 739. 每日温度
查看>>
【Redis深入】字典rehash图解
查看>>
java equals方法和hashCode方法
查看>>
Redis的底层数据结构(6种)
查看>>
Redis的五大数据类型实现原理
查看>>
maven依赖jar包时版本冲突的解决
查看>>
LC 446. 等差数列划分 II - 子序列
查看>>
LC 53. 最大子序和(DP)+ LC 152. 乘积最大子序列 + LC 238. 除自身以外数组的乘积
查看>>
198. 打家劫舍 DP
查看>>
628. 三个数的最大乘积
查看>>
正向代理和反向代理
查看>>
不同的类加载器加载的类不是同一个类
查看>>
Java 序列化和反序列化
查看>>
怎么让笔记本变路由器,亲身试验可用,不用下第三方软件
查看>>
DB2 SQL Error: SQLCODE=-668, SQLSTATE=57016 解决方案
查看>>
java.util.ConcurrentModificationException
查看>>
linux 通过crt直接上传和下载文件和文件
查看>>