Hbase原理与实践-1
Hbase数据模型
从逻辑视图来看,Hbase的数据是用表形式进行组织的,而且和关系型数据库中的表一样,由列和行构成,从物理视图来看,hbase中的数据是一个Map,由键值(k,v)组成,不过与普通Map不同,Hbase是一个稀疏的、分布式、多维排序的Map.
Hbase的逻辑视图
- table: 表,一个表包含多行数据
- row:行,一行数据包含一个唯一标识rowkey、多个column以及对应的值。在Hbase中,一张表中所有row都按照rowkey的字典由小到大排序。
- column:列,与关系型数据库中列不同,Hbase中的column由column family (列族)以及qualifier(列名) 两部分组成,两者中间使用:相连。列族在创建表时候需要指定,用户不能随意增减。但是列可以变更
- timestamp: 时间戳,每个cell在写入hbase时候都会默认分配一个时间戳作为该cell的版本,当然,用户也可以在写入的时候自带时间戳。hbase支持多版本特性,即同一个rowkey、column下可以有多个value存在,这些value使用timestamp作为版本号,版本越大表示数据越新。
- cell 单元格,由五元组(row,column,yimestamp,type,value)组成的结构,其中type表示Put/Delete这样的操作类型,timestamp代表这个cell的版本。这个结构在数据库中实际是以KV结构存储,其中(row,column,timestamp,type)是K,value对应V
物理模型
与大多数数据库系统不同,Hbase中的数据是按照列族存储的,即将数据按照列族分别存储在不同的目录中。
存储方式
行式存储
行式存储系统会将一行数据存储在一起,一行数据写完之后再接着写下一行,最典型的如MySQL这类关系型数据库。获取一行数据比较高效
列式存储
列存储理论上会将一列数据存储在一起,不同列的数据分别集中存储,最典型的如Kudu、Parquet on hdfs等。列式存储对于获取一行的请求不高效,但是对于获取某些列数据请求非常高效。另外因为同一列数据通常都具有相同的数据类型,因此列式存储具有天然的高压缩特性
列族式存储
从概念上来说,列族存储介于行和列之间
HBASE体系架构
- Hbase客户端:提供了Shell命令行接口,原生Java api编程接口、MapReduce编程接口。等
- zookeeper 主要协调管理分布式应用程序。在Hbase系统中,zookeeper扮演着非常重要的角色。比如:实现master高可用,管理核心元数据,参与regionServer耽机恢复;实现分布式表锁
- Master master主要负责hbase的管理工作,处理用户的管理请求,包括建表、修改表、权限操作,切分表,合并数据分片以及compaction等。管理集群中的regionserver,包括regionserver中的region负载均衡。
- regionserver 主要用来响应用户的IO请求,是Hbase中最核心模块,WAL,BlockCacheRegion等
- HDFS 底层存储。
Hbase系统特点
优点
- 容量巨大:Hbase单表可支持千亿行、百万列数据规模,数据容量可以达到TB甚至PB级别。传统的关系型数据规模,单表超过亿行会出现读写性能急剧下降
- 良好的扩展性:HBase集群可以非常方便的实现集群容量扩展,主要包括数据存储节点扩展以及读写服务节点扩展。通过增加hdfs的datanode节点或者hregionServer节点。
- 稀疏性:Hbase支持大量稀疏存储,即允许大量列植为空,并不占用任何存储空间。
- 高性能:适用于oltp场景,数据读写操作性能强劲
- 多版本:hbase支持多版本
- 支持过期:Hbase支持ttl过期特性,用户只需要设置过期时间,超过TTL的数据就会被自动清理,不需要用户手动写
- Hadoop原生支持
缺点
- Hbase本身不支持很复杂的聚合元算,不适合olap场景
- hbase本身没有实现二级索引
- hbase原生不支持全局跨行事务,只支持单行事务模型。
Hbase原理与实践-1相关推荐
- 《HBase原理与实践》阅读笔记
学习笔记(1-3章) 全书概述 1.HBase概述 1.1.Hbase发展历史 1.2.Hbase数据模型 1.3.Hbase体系结构 1.4.Hbase系统特性 2.Hbase基础数据结构与算法 2 ...
- Hbase原理与实践(学习笔记一:基本概念):
相关笔记: <Hbase原理与实践>读书笔记--1.HBase概述_凯哥多帅哦的博客-CSDN博客_hbase的实现原理1.1 HBase前世今生Google当年风靡一时的"三篇 ...
- hbase原理与实践_HBase 性能调优第一弹:内存篇
这是使用 HBase 最不可避免的一个话题,就是 HBase 的性能调优,而且通常建立在我们对 HBase 内部运行机制比较了解的基础上进行的,因此无论怎么说,调优这块都是一个相对复杂的事情.这一篇我 ...
- hbase原理与实践_JAVA连接HBase客户端及HBase写入数据和读取数据原理解析
JAVA连接HBase客户端 接着上篇文章进行代码的实践,从JAVA 客户端对 HBase的客户端进行一系列操作 工具类:HbaseUtil 静态代码块一次性创建连接对象 并赋值 返回连接对象 Con ...
- 《Hbase原理与实践》读书笔记——1.HBase概述
1.1 HBase前世今生 Google当年风靡一时的"三篇论文":GFS -> HDFS , Mapreduce -> hadoop mapreduce , bigT ...
- hbase 命令_HBase原理与实践 | 生产环境上线前真的优化过吗?
笔者今天给大家讲一下 HBase 生产环境中的实践,包括资源隔离.参数配置.性能优化等方面,部分内容参考<HBase原理与实践>(非常建议大家好好读一读,一定会大有收获),以及笔者的实战经 ...
- vivo 调用链 Agent 原理及实践
一.项目背景 2017年,vivo互联网研发团队认为调用链系统对实际业务具有较大的价值,于是开始了研发工作.3年的时间,调用链系统整体框架不断演进--本文将介绍vivo调用链系统 Agent 技术原理 ...
- 《从Paxos到zookeeper分布式一致性原理与实践》笔记
<从Paxos到zookeeper分布式一致性原理与实践>笔记 文章目录 <从Paxos到zookeeper分布式一致性原理与实践>笔记 一.概念 二.一致性协调 2.1 2P ...
- 《从Paxos到zookeeper分布式一致性原理与实践》
<从Paxos到zookeeper分布式一致性原理与实践> 一.概念 ACID: Automaticy.consistency.isolation. Durability CAP: con ...
最新文章
- html5表单实例元素,HTML5新表单元素的图文实例-
- Oracle 变量绑定与变量窥视合集系列二
- 人工智能学习框架TensorFlow渐近分析
- Nuxt爬坑系列之vuex
- JAVA——改变观感
- spring项目属性注入和bean管理xml 注入一般属性和集合属性
- C语言stdio相关的几个函数
- 转载:简单介绍Python中的try和finally和with方法
- Verilog HDL中阻塞语句和非阻塞语句的区别
- Unity2018新功能抢鲜 | 粒子系统改进
- python制作u盘病毒_十行代码--用Python写一个USB病毒!
- 批量处理文件,正则表达式处理文件
- 数据挖掘在电信欺诈侦测中的应用
- 使用smartping监控服务器的网络可用性
- html内嵌式的语言,html嵌入窗口
- dw css定位,Dreamweaver中层的定位
- 设计模式 “之“ 责任链模式
- 最近很多人问我:saiku下载不下来
- 动态申请权限---通讯录 及获取通讯录列表
- 将一台笔记本电脑作为另一台笔记本电脑的扩展显示器
热门文章
- 智能家居 蓝牙语音开关系统
- 配置网件公司的三层交换机的方法,以及两台linux pc之间用交换机连接,可以ping通
- bigkool 2018 android,Game danh bai doi thuong - Tu Quy At Club 2018电脑版
- dataframe选取特定行和列
- 哈工大C语言大作业-学生成绩管理系统
- 计算机网络阻塞和死锁,高并发和死锁
- 抓包神器 Wireshark,帮你快速定位线上网络故障(3)
- 初识贝塞尔(bezier)曲线
- Google blockly简介(三)puzzle游戏的制作
- 2.Windchill -- 系统简单介绍