这是我参与「第四届青训营 」笔记创作活动的第17天
HDFS是一种开源的分布式文件系统,基于常见商用硬件构建海量大规模存储集群,提供极低的存储成本,极大的存储容量支持。 HDFS提供高可靠性的数据保障,通常采用三副本冗余存储数据到不同的机器来实现容灾备份能力。
而 HBase,则是基于HDFS 实现存储计算分离架构的分布式表格存储服务。
什么是HBase
HBase是一个开源的NoSQL 分布式数据库,是Apache软件基金会顶级项目之一。 参考Google BigTable的设计,对稀疏表提供更高的存储空间使用率和读写效率。 采用存储计算分离架构, -存储层基于HDFS存储数据,提供容错机制和高可靠性;-计算层提供灵活快速的水平扩展、负载均衡和故障恢复能力;
提供强一致语义,在CAP理论中属于CP系统:
- Consistency,Availability,Partition Tolerance
简单来说,HBase就是一个分布式的mongoDB,这俩的存储结构十分类似,支持大体量数据操作的特性也是类似
使用场景
优势特征:
- “近在线”的海量分布式KV/宽表存储,数据量级可达到PB级以上
- 写密集型、高吞吐应用,可接受一定程度的时延抖动
- 字典序主键索引、批量顺序扫描多行数据的场景
- Hadoop大数据生态友好兼容
- 半结构化数据模型,行列稀疏的数据分布,动态增减列名
- 敏捷平滑的水平扩展能力,快速响应数据体量、流量变化
应用场景:
- 电商订单数据:查询最新/待处理订单进度
- 搜索推荐引擎:存储原始数据、排序推荐结果
- 广告数据流:触达、点击、转化等事件流
- 用户交互数据:IM、Email、点赞、搜索时序
- 数据引擎:日志、监控(OpenTSDB)
- 图存储引擎:JanusGraph
- 大数据生态:高度融入Hadoop生态
架构设计
主要组件
- HMaster:元数据管理,集群调度、保活。
- RegionServer:提供数据读写服务,每个实例 负责若干个互不重叠的rowkey区间内的数据。
- ThriftServer:提供Thrift API读写的代理层。
依赖组件
- Zookeeper:分布式一致性共识协作管理,例如 HMaster选主、任务分发、元数据变更管理等。
- HDFS:分布式文件系统,HBase数据存储底座。
Hmaster
像Presto中的coordinator,Flink中的JobMaster等等,他们的架构中都存在一个唯一或者关键的调度者,在HBase中也是一样,也就是Hmaster
Hmaster的主要职责:
- 管理RegionServer 实例生命周期,保证服务可用性
- 协调RegionServer 数据故障恢复,保证数据正确性
- 集中管理集群元数据,执行负载均衡等维护集群稳定性
- 定期巡检元数据,调整数据分布,清理废弃数据等
- 处理用户主动发起的元数据操作如建表、删表等
RegionServer
RegionServer就是被调度的东西,你可以将它当作一个分布式的储存单元,它主要的工作就是对数据进行读写
RegionServer的主要职责:
- 提供部分rowkey 区间数据的读写服务
- 如果负责meta表,向客户端 SDK提供rowkey位置信息
- 认领HMaster发布的故障恢复任务,帮助加速数据恢复过程
- 处理HMaster下达的元数据操作,如region打开/关闭/分裂/合并操作等
其他
接下来就是zookeeper和thriftserver分别用于达成一致性和提供高效网络io,就不多说了,反正是外部组件。
\