谈谈HBase

去年8月给我们平台封装了Hbase接口,一直想写一些关于hbase的,现在终于写了点。附思维导图一张

一、HBase基本概念

RowKey:是Byte array,是表中每条记录的“主键”,方便快速查找,Rowkey的设计非常重要。
Column Family:列族,拥有一个名称(string),包含一个或者多个相关
Column:属于某一个columnfamily,familyName:columnName,每条记录可动态添加
Version Number:类型为Long,默认值是系统时间戳,可由用户自定义
Value(Cell):Byte array

二、物理存储

  1. Table中所有行都按照row key的字典序排列;
  2. Table在行的方向上分割为多个Region;
  3. Region按大小分割的,每个表开始只有一个region,随着数据增多,region不断增大,当增大到一个阀值的时候region就会等分会两个新的region,之后会有越来越多的region;
  4. Region是Hbase中分布式存储和负载均衡的最小单元,不同Region分布到不同RegionServer上。
  5. Region虽然是分布式存储的最小单元,但并不是存储的最小单元。Region由一个或者多个Store组成,每个store保存一个columns family;每个Strore又由一个memStore和0至多个StoreFile组成,StoreFile包含HFile;memStore存储在内存中,StoreFile存储在HDFS上。

三、基本组件

Client

包含访问HBase的接口,并维护cache来加快对HBase的访问,比如region的位置信息

Master

  • 为Region server分配region
  • 负责Region server的负载均衡
  • 发现失效的Region server并重新分配其上的region
  • 管理用户对table的增删改查操作

Region Server

  • Regionserver维护region,处理对这些region的IO请求
  • Regionserver负责切分在运行过程中变得过大的region

Zookeeper

  • 通过选举,保证任何时候,集群中只有一个master,Master与RegionServers 启动时会向ZooKeeper注册
  • 存储所有Region的寻址入口
  • 实时监控Region server的上线和下线信息。并实时通知给Master
  • 存储HBase的schema和table元数据
  • 默认情况下,HBase 管理ZooKeeper 实例,比如:启动或者停止ZooKeeper
  • Zookeeper的引入使得Master不再是单点故障

四、HBase容错性

Master容错:

Zookeeper重新选择一个新的Master

  • 无Master过程中,数据读取仍照常进行;
  • 无master过程中,region切分、负载均衡等无法进行;

RegionServer容错:

定时向Zookeeper汇报心跳,如果一旦时间内未出现心跳,Master将该RegionServer上的Region重新分配到其他RegionServer上,失效服务器上“预写”日志由主服务器进行分割并派送给新的RegionServer

Zookeeper容错:

Zookeeper是一个可靠地服务,一般配置3或5个Zookeeper实例

五、写流程

  1. zookeeper中存储了meta表的region信息,从meta表获取相应region信息,然后找到meta表的数据
  2. 根据namespace、表名和rowkey根据meta表的数据找到写入数据对应的region信息
  3. 找到对应的regionserver
  4. 把数据分别写到HLog和MemStore上一份
  5. MemStore达到一个阈值后则把数据刷成一个StoreFile文件。若MemStore中的数据有丢失,则可以总HLog上恢复
  6. 当多个StoreFile文件达到一定的大小后,会触发Compact合并操作,合并为一个StoreFile,这里同时进行版本的合并和数据删除。
  7. 当Compact后,逐步形成越来越大的StoreFIle后,会触发Split操作,把当前的StoreFile分成两个,这里相当于把一个大的region分割成两个region。

六、读流程

  1. zookeeper中存储了meta表的region信息,所以先从zookeeper中找到meta表region的位置,然后读取meta表中的数据。meta中又存储了用户表的region信息。
  2. 根据namespace、表名和rowkey在meta表中找到对应的region信息
  3. 找到这个region对应的regionserver
  4. 查找对应的region
  5. 先从MemStore找数据,如果没有,再到StoreFile上读
时间: 2024-10-17 08:52:58

谈谈HBase的相关文章

HBase入门篇

目录: 1-HBase的安装 2-Java操作HBase例子 3-HBase简单的优化技巧 4–存储 5(集群) -压力分载与失效转发 6 -白话MySQL(RDBMS)与HBase之间 7 -安全&权限 1-HBase的安装 HBase是什么? HBase是Apache Hadoop中的一个子项目,Hbase依托于Hadoop的HDFS作为最基本存储基础单元,通过使用hadoop的DFS工具就可以看到这些这些数据 存储文件夹的结构,还可以通过Map/Reduce的框架(算法)对HBase进行操

HBase 超详细介绍

1-HBase的安装 HBase是什么? HBase是Apache Hadoop中的一个子项目,Hbase依托于Hadoop的HDFS作为最基本存储基础单元,通过使用hadoop的DFS工具就可以看到这些这些数据 存储文件夹的结构,还可以通过Map/Reduce的框架(算法)对HBase进行操作,如右侧的图所示: HBase在产品中还包含了Jetty,在HBase启动时采用嵌入式的方式来启动Jetty,因此可以通过web界面对HBase进行管理和查看当前运行的一些状态,非常轻巧. 为什么采用HB

hbase hmaster故障分析及解决方案:Timedout 300000ms waiting for namespace table to be assigned

最近生产环境hbase集群出现停掉集群之后hmaster无法启动现象,master日志报异常:Timedout 300000ms waiting for namespace table to be assigned,导致整个集群起不来. 2016-12-12 18:04:12,243 FATAL [adfnn2:16020.activeMasterManager] master.HMaster: Failed to become active master java.io.IOException

Hbase新手技术入门

HBase是什么? HBase是Apache Hadoop中的一个子项目,Hbase依托于Hadoop的HDFS作为最基本存储基础单元,通过使用hadoop的DFS工具就可以看到这些这些数据 存储文件夹的结构,还可以通过Map/Reduce的框架(算法)对HBase进行操作,如右侧的图所示: 为什么采用HBase? HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库.所谓非结构化数据存储就是说HBase是基于列的而不是基于行的模式,这样方面读写你的大数据内容. HBase

【转】HBase 超详细介绍

---恢复内容开始--- http://blog.csdn.net/frankiewang008/article/details/41965543 1-HBase的安装 HBase是什么? HBase是Apache Hadoop中的一个子项目,Hbase依托于Hadoop的HDFS作为最基本存储基础单元,通过使用hadoop的DFS工具就可以看到这些这些数据 存储文件夹的结构,还可以通过Map/Reduce的框架(算法)对HBase进行操作,如右侧的图所示: HBase在产品中还包含了Jetty

“挖掘机”升级路 一篇(03)--HBase集群安装中的收获

粗略算算,从上周五到这周二,折腾Hadoop已经三天了.这三天我是过得诚惶诚恐,作为一个学徒,老大虽然没有说啥,但是我恨不得立马完成这些基本的部署工作,感觉拖了好久好久.简单的总结一下,第一天折腾Hadoop单机和伪分布式的安装,第二天在折腾Hive的安装,以失败告终,第三天折腾HBase的集群安装,在主节点上安装成功. 也就来具体的谈谈今天的收获,今天的参考资料主要是这么两篇1.分布式实时日志系统(四) 环境搭建之centos 6.4下hbase 1.0.1 分布式集群搭建(我FQ看的,不知道

对HBase的一些个人看法

HBase是Google Big Table的一个开源实现,关于其基础和架构网上很多,这里就不一一说明,转一篇,这里主要谈谈我个人对Hbase的看法 1.查询:都知道HBase查询快,因为其实基于内存查询,Hbase在写入的时候,优先写入MemStore,这个MemStore就是内存了,查询的时候也就是从内存中返回,所以从这个方面Hbase可以理解为一个分布式缓存,跟平时的缓存没有差别,最简单的WEB系统在使用缓存时,也是在插入的时候先写入内存,在持久化到数据库.查询也是先从内存获取,获取失败再

第五章:大数据 の HBase 进阶

本课主题 HBase 读写数据的流程 HBase 性能优化和最住实践 HBase 管理和集群操作 HBase 备份和复制 引言 前一篇 HBase 基础 (HBase 基础) 简单介绍了NoSQL是什么和重点讨论 HBase 数据库的特点,在这一篇会进一步介绍 HBase 的其他特性和机制,比如读写数据的流程,在读写过程中 WAL,MemStore 的作用,还会谈谈一些数据缓存机制,明白在什么场景下需要用那一种缓存策略?如何对频繁使用的数据进行快速响应,从检索上提升查询效率和从内存层面上运用不同

谈谈互联网后端基础设施(转)

谈谈互联网后端基础设施 来自:http://chuansong.me/n/717637351233 对于一个互联网企业,后端服务是必不可少的一个组成部分.抛开业务应用来说,往下的基础服务设施做到哪些才能够保证业务的稳定可靠.易维护.高可用呢?纵观整个互联网技术体系再结合公司的目前状况,个人认为必不可少或者非常关键的后端基础技术/设施如下图所示: Api网关 业务应用和后端基础框架 缓存.数据库.搜索引擎.消息队列 文件存储 统一认证中心 单点登录系统 统一配置中心 服务治理框架 统一调度中心 统