HBase作为存储方案
HBase存储特点
* Client
1. 包含访问HBase的接口,并维护cache来加快对HBase的访问,比如region的位置信息。
* Zookeeper:
1. 选举集群中的Master,Master与RegionServers 启动时会向ZooKeeper注册。
2. 存储所有Region的寻址入口。
3. 实时监控Region server状态并实时通知Master。
4. 存储HBase的schema和table元数据。
5. 使Master不存在单点故障。
* Master
1. 在Region Split后,为Region server分配region。
2. 管理HRegionServer的负载均衡,调整Region分布。
3. 发现失效的Region server后重新分配其上的region,并负责Regions迁移。。
4. 管理用户对table的增删改查操作。
* Region Server
1. Regionserver维护region,处理对这些region的IO请求,向HDFS文件系统读写数据。
2. Regionserver负责切分在运行过程中变得过大的region。
* Region
1. table按照行分割成若干Region,每个Region对应table中的一个Region。
2. Region由多个HStore组成。
* HLog
1. 类似mysql的binlog,数据会先写到WAL上,然后再放到内存中,数据恢复。
2. 已经持久化到StoreFile的HLog会定期被删除。
* HStore
1. HBase的存储核心,由MemStore和StoreFile组成。
2. 每个HStore对应Table的一个列族的存储。
* MemStore
1. 数据不直接写磁盘而是先写到MemStore,当满了才会Flush到StoreFile中。
2. 底层由HFile实现。
3. 数据只需写入到此内存即可返回,快速的插入操作。
* StoreFile
1. StoreFile文件数到一定阀值会触发Compact合并操作,多个StoreFile变成一个StoreFile。
2. 所有数据操作都是添加操作,保证I/O,而对于数据更新/删除都是在后续compact过程中完成。
底层存储
HBase支持很多文件系统的存储。
1. 操作系统原生文件系统。
2. HDFS文件系统。
3. 其他文件系统。
HDFS可靠性高及其同属同个生态,选择HDFS作为存储。
HBase 如何寻址
寻址过程大致为client -> -ROOT- -> .META. -> RS ->region -> rowkey。
- client通过zookeeper的root-region-server节点获取哪个Server管理-ROOT-表,包含该机器的IP地址和端口。
- 接着访问-ROOT-表,该表只有一个Region且不会split,每行记录了.META.表的一个region信息,以及这个region的startkey和endkey,查找到.META.表包含要查的rowkey记录的Region的ip和端口。
- 接着访问该ip和端口的.META.表,根据rowkey找到用户表数据存放对应的Region的机器信息,根据rowkey查找对应的regionserver和region。最后到对应的region找到value。
- 根据查到的用户表信息到对应机器上查找数据。
客户端会缓存查询过的rowkey的地址。
client访问hbase上数据的过程并不需要master参与(寻址访问zookeeper和region server,数据读写访问region server),master仅仅维护table和region的元数据信息,负载很低。
HBase 的性能、如何扩展
HBase的插入性能很好,查询还不错,腾讯给出的数据是经过调优在百亿数据级别80%以上数据能在20ms查到。
详细的一些数据后面在写代码阶段会给出。
当数据峰值接近系统设计容量时,可以简单的通过增加服务器的方式来扩大容量。某种程度上来说,这个动态扩容过程无需停机,HBase系统可以照常运行并提供读写服务,完全实现动态无缝无宕机扩容。
balance模式下,会自动将数据迁移到新机器上,适合中小集群,迁移过程大量消耗机器资源。
非balance模式下,新写入文件写到新机器上。
运维
- 官方的命令行或二次开发,rest接口。官方有原生监控平台。
- BigInsights。
最后的说明
hbase优势在于接近线性的任意水平扩展,不必在单机上与redis性能太较真,看自己场景选择。
HBase作为存储方案的更多相关文章
- Redis百亿级Key存储方案(转)
1 需求背景 该应用场景为DMP缓存存储需求,DMP需要管理非常多的第三方id数据,其中包括各媒体cookie与自身cookie(以下统称supperid)的mapping关系,还包括了supperi ...
- Redis百亿级Key存储方案
1 需求背景 该应用场景为DMP缓存存储需求,DMP需要管理非常多的第三方id数据,其中包括各媒体cookie与自身cookie(以下统称supperid)的mapping关系,还包括了supperi ...
- HBase 数据迁移方案介绍
一.前言 HBase数据迁移是很常见的操作,目前业界主要的迁移方式主要分为以下几类: 图1.HBase数据迁移方案 从上面图中可看出,目前的方案主要有四类,Hadoop层有一类,HBase层有三类.下 ...
- Hadoop小文件存储方案
原文地址:https://www.cnblogs.com/ballwql/p/8944025.html HDFS总体架构 在介绍文件存储方案之前,我觉得有必要先介绍下关于HDFS存储架构方面的一些知识 ...
- HBase 数据迁移方案介绍 (转载)
原文地址:https://www.cnblogs.com/ballwql/p/hbase_data_transfer.html 一.前言 HBase数据迁移是很常见的操作,目前业界主要的迁移方式主要分 ...
- BigData NoSQL —— ApsaraDB HBase数据存储与分析平台概览
一.引言 时间到了2019年,数据库也发展到了一个新的拐点,有三个明显的趋势: 越来越多的数据库会做云原生(CloudNative),会不断利用新的硬件及云本身的优势打造CloudNative数据库, ...
- HBase 数据迁移方案介绍(转载)
原文链接:https://www.cnblogs.com/ballwql/p/hbase_data_transfer.html 一.前言 HBase数据迁移是很常见的操作,目前业界主要的迁移方式主要分 ...
- MongoDb gridfs-ngnix文件存储方案
在各类系统应用服务端开发中,我们经常会遇到文件存储的问题. 常见的磁盘文件系统,DBMS传统文件流存储.今天我们看一下基于NoSQL数据库MongoDb的存储方案.笔者环境 以CentOS ...
- HTML5的五种客户端离线存储方案
最近折腾HTML5游戏需要离线存储功能,便把目前可用的几种HTML5存储方式研究了下,基于HT for Web写了个综合的实例,分别利用了Cookie.WebStorage.IndexedDB以及Fi ...
随机推荐
- python2.7练习小例子(二)
2):题目:企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%:2 ...
- 实验:利用ASMLib创建ASM磁盘
环境:RHEL 6.5 + Oracle 11.2.0.4 RAC(2 nodes) 目的:在实验环境使用ASMLib配置共享ASM磁盘,虽然我们已经不建议使用ASMLib进行绑盘,但是无奈有客户是这 ...
- Python从入门到实践 学习笔记(二)元祖686gffs
列表是可以修改的,而不可变的列表被称为元组 . 定义 * 用圆括号来标识.定义元组后,使用索引来访问其元素,就像访问列表元素一样 修改变量 * 不能修改元组的元素,但可以给存储元组的变量赋值 修改元素 ...
- js页面刷新跳转的几种方式及区别
跳转常用方法: window.location.href="index.php"; window.history.back(-1);//类似于按钮,参数是负几,就后退几次. win ...
- 文件上传,服务端压缩文件方法,重点是png与gif图片的压缩,保证了透明度与动画
/// <summary> /// 上传文件帮助类 /// </summary> public class ImageUploadHelper { #region SaveVi ...
- Linux 下的JDK环境的搭建
配置jdk环境遇到的问题: 在使用cp指令复制文件夹时,出现错误如下:~/programs/qt$ cp p20_gotocelldialog ./p22_gotocelldialogcp: 略过目录 ...
- redis的基本数据类型
一:redis是一个开源的,使用C语言编写,支持网络,可基于内存亦可持久化的日志型,key-value方式存储的nosql数据库.作为缓存服务器,速度效率都很快,和memcache相似 redis支持 ...
- 检测linux vps是xen openvz还是kvm的方法
很多时候不知道自己买的vps是那种虚拟化技术,怕给商家忽悠了,下面给大家介绍下怎么简单的判断自己vps的虚拟化技术. 1.通过系统上的相关目录或文件判断 ll /proc/ ps: /proc目录 ...
- Android的四大组件及应用安装安全问题(4)
Android的四大组件及组件间通信 如果想对四大组件有深入的了解,那永远不要停留在一些条条干干的SDK API的认识,需要了解他的通讯,他的复用,他的边界问题,这样才会对四大组件有透明的认识. 四大 ...
- MPAndroidChart图形联动
MPAndroidChart图形联动 本篇基于博客MPAndroidChart的K线图上添加均线,两个MPAndroidChart是有联动效果的 原理 获取正在滑动的Chart的触摸事件,将事件同步给 ...