| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> HBase详解(一)——介绍,架构,数据模型 -> 正文阅读 |
|
[大数据]HBase详解(一)——介绍,架构,数据模型 |
HBase介绍HBase是Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库 LSMTree 利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为其分布式协同服务。 从技术上讲,HBase实际上更像是“数据存储”而不是“数据库”,因为它缺少RDBMS中的许多功能,例如字段型列,二级索引,触发器和高级查询语言等。 主要用来存储非结构化和半结构化的松散数据(列式存储的NoSQL 数据库) NoSQL 数据库: redis,mongoDB memcached,CouchDB hbase?Cassandra HBase的特点是:
HBase架构? ?目录表目录表hbase:meta作为HBase表存在,并从HBase shell的list命令中过滤掉,但实际上是一个表,就像任何其他表一样。 hbase:meta hbase:meta表(以前称为.META.),保有系统中所有region的列表。hbase:meta存储在zookeeper中。 表结构如下: key: region的key,结构为:[table],[region start key],[region id] values: info:regioninfo(当前region序列化的HRegionInfo实例) info:server(包含当前region的RegionServer的server:port) info:serverstartcode(包含当前region的RegionServer进程的开始时间) 当表正在拆分时,将创建另外两列,称为info:splitA和info:splitB。 这些列代表两个子region。 这些列的值也是序列化的HRegionInfo实例。区域分割后,将删除此行。 空键用于表示表开始和表结束。具有空开始键的region是表中的第一个region。如果某个region同时具有空开始和空结束键,则它是表中唯一的region。 启动顺序 首先,在zookeeper中查找hbase:meta的位置。其次,使用服务器和启动代码更新hbase:meta的值。 clienthbase:meta ??tablea,1-100,node2 hbase:meta ??tablea,101-200,node3 hbase:meta ??tablea,201-300,node5 hbase:meta ??tablea,301-400,node237 hbase:meta ??tablea,401-500,node24 hbase:meta ??tablea,501-600,node896 zookeeper->root region ???tablea,node3 ??tableb,node4 root region->meta region meta region-> regionserver(数据) 包含访问HBase的接口并维护cache来加快对HBase的访问。HBase客户端查找关注的行范围所在的regionserver。它通过查询hbase:meta表来完成此操作。在找到所需的region之后,客户端与提供该region的RegionServer通信,而不是通过Master,并发出读取或写入请求。此信息缓存在客户端中,以便后续请求无需经过查找过程。如果Master的负载均衡器重新平衡或者由于regionserver宕机,都会重新指定该region的regionserver。客户端将重新查询目录表以确定用户region的新位置。 通过Admin进行管理功能的实现。 Zookeepper保证任何时候,集群中只有一个活跃master 存贮所有Region的寻址入口。?root?region的地址 实时监控Region server的上线和下线信息。并实时通知Master 存储HBase的schema和table元数据 Master为Region server分配region 负责Region server的负载均衡 发现失效的Region server并重新分配其上的region 管理用户对table的增删改操作?不是数据的增删改 概括:管理region的分配 ??管理对表的操作 RegionServerRegion server维护region,处理对这些region的IO请求 Region server负责切分在运行过程中变得过大的region RegionHBase自动把表水平划分成多个区域(region),每个region会保存一个表里面某段连续的数据??(每条记录都有一个行键,按照行键字典序排列) 每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值的时候,region就会等分会两个新的region(裂变) 当table中的行不断增多,就会有越来越多的region。这样一张完整的表被保存在多个Regionserver 上。 Memstore 与 storefile一个region由多个store组成,一个store对应一个CF(列族) store包括位于内存中的memstore和位于磁盘的storefile。 写操作先写入memstore,当memstore中的数据达到某个阈值,hregionserver会启动flashcache进程写入storefile,每次写入形成单独的一个storefile。 当storefile文件的数量增长到一定阈值后,系统会进行合并(minor、major compaction),在合并过程中会进行版本合并和删除工作(majar),形成更大的storefile 当一个region所有storefile的大小和数量超过一定阈值后,会把当前的region分割为两个,并由hmaster分配到相应的regionserver服务器,实现负载均衡 客户端检索数据,先查找memstore,再blockcache(查询缓存),找不到再找storefile ? HRegion是HBase中分布式存储和负载均衡的最小单元。最小单元就表示不同的HRegion可以分布在不同的 HRegion server上。 HRegion由一个或者多个Store组成,每个store保存一个columns family。 每个Store又由一个memStore和0至多个StoreFile组成。如图:StoreFile以HFile格式保存在HDFS上。 ? hbase键值对数据库,面向列的 四个维度标志一个单元格(字段的值) row key,列族,列标志符,版本version(按照时间戳倒序排列) ? ? |
|
|
上一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 19:56:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |