大数据发展历程及技术选型(5)

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 大数据发展历程及技术选型(5)

image.png


根据活跃度(调用次数等)、覆盖度(通过血缘关系找出依赖数量),以及贡献度(依赖数据的重要等级)来确认数据的价值
同时会评估数据的成本指数(例如计算成本、存储成本等)
比如针对价值低,成本高的数据,可以考虑下线等


image.png


简介


HBase是一个分布式的、面向列的开源数据库
Bigtable:一个结构化数据的分布式存储系统
就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样
HBase在Hadoop之上提供了类似于Bigtable的能力
HBase是Apache的Hadoop项目的子项目
HBase不同于一般的关系数据库 是一个适合于非结构化数据存储的数据库
另一个不同的是HBase基于列的而不是基于行的模式


结构


HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统
利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群
HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统
Google运行MapReduce来处理Bigtable中的海量数据
HBase同样利用Hadoop MapReduce来处理HBase中的海量数据
Google Bigtable利用 Chubby作为协同服务
HBase利用Zookeeper作为对应
HBase位于结构化存储层
Hadoop HDFS为HBase提供了高可靠性的底层存储支持
Hadoop MapReduce为HBase提供了高性能的计算能力
Zookeeper为HBase提供了稳定服务和failover机制
Pig和Hive还为HBase提供了高层语言支持
使得在HBase上进行数据统计处理变的非常简单
Sqoop则为HBase提供了方便的RDBMS数据导入功能
使得传统数据库数据向HBase中迁移变的非常方便



image.png


访问接口


Native Java API,最常规和高效的访问方式,适合Hadoop MapReduce Job并行批处理HBase表数据
REST Gateway,支持REST 风格的Http API访问HBase, 解除了语言限制


HBase数据模型Table & Column Family


image.png


  • Row Key


行键,Table的主键,Table中的记录默认按照Row Key升序排序


  • Timestamp:时间戳


每次数据操作对应的时间戳,可以看作是数据的version number


  • Column Family:列簇


Table在水平方向有一个或者多个Column Family组成
一个Column Family中可以由任意多个Column组成
即Column Family支持动态扩展
无需预先定义Column的数量以及类型
所有Column均以二进制格式存储
用户需要自行进行类型转换


  • Table & Region


image.png


当Table随着记录数不断增加而变大后
会逐渐分裂成多份splits,成为regions
一个region由[startkey,endkey)表示
不同的region会被Master分配给相应的RegionServer进行管理


HBase中有两张特殊的Table,-ROOT-和.META.
.META.:记录了用户表的Region信息,.META.可以有多个region
-ROOT-:记录了.META.表的Region信息,-ROOT-只有一个region
Zookeeper中记录了-ROOT-表的location
Client访问用户数据之前需要首先访问zookeeper
然后访问-ROOT-表,接着访问.META.表
最后才能找到用户数据的位置去访问,中间需要多次网络操作
不过client端会做cache缓存


  • MapReduce on HBase


HBase Table和Region的关系 比较类似HDFS File和Block的关系
HBase提供了配套的TableInputFormat和TableOutputFormat API
可以方便的将HBase Table作为Hadoop MapReduce的Source和Sink
对于MapReduce Job应用开发人员来说,基本不需要关注HBase系统自身的细节



image.png


  • Client


HBase Client使用HBase的RPC机制与HMaster和HRegionServer进行通信
对于管理类操作,Client与HMaster进行RPC
对于数据读写类操作,Client与HRegionServer进行RPC


  • Zookeeper


Zookeeper Quorum中除了存储了-ROOT-表的地址和HMaster的地址
HRegionServer也会把自己以Ephemeral方式注册到Zookeeper中
使得HMaster可以随时感知到各个HRegionServer的健康状态
Zookeeper也避免了HMaster的单点问题


  • HMaster


HMaster没有单点问题
HBase中可以启动多个HMaster
通过Zookeeper的Master Election机制保证总有一个Master运行
HMaster在功能上主要负责Table和Region的管理工作
1. 管理用户对Table的增、删、改、查操作
2. 管理HRegionServer的负载均衡,调整Region分布
3. 在Region Split后,负责新Region的分配
4. 在HRegionServer停机后,负责失效HRegionServer 上的Regions迁移


  • HRegionServer


HRegionServer主要负责响应用户I/O请求
向HDFS文件系统中读写数据,是HBase中最核心的模块
HRegionServer内部管理了一系列HRegion对象
每个HRegion对应了Table中的一个Region
HRegion中由多个HStore组成
每个HStore对应了Table中的一个Column Family的存储
可以看出每个Column Family其实就是一个集中的存储单元
因此最好将具备共同IO特性的column放在一个Column Family中,这样最高效


  • HStore


HStore存储是HBase存储的核心了
其中由两部分组成,一部分是MemStore
一部分是StoreFiles
MemStore是Sorted Memory Buffer
用户写入的数据首先会放入MemStore
当MemStore满了以后会Flush成一个StoreFile(底层实现是HFile)


  • StoreFile


当StoreFile文件数量增长到一定阈值,会触发Compact合并操作
将多个StoreFiles合并成一个StoreFile
合并过程中会进行版本合并和数据删除
因此可以看出HBase其实只有增加数据
所有的更新和删除操作都是在后续的compact过程中进行的
这使得用户的写操作只要进入内存中就可以立即返回
保证了HBase I/O的高性能
当StoreFiles Compact后,会逐步形成越来越大的StoreFile
当单个StoreFile大小超过一定阈值后,会触发Split操作
同时把当前Region Split成2个Region
父Region会下线
新Split出的2个孩子Region会被HMaster分配到相应的HRegionServer上
使得原先1个Region的压力得以分流到2个Region上



image.png


  • HLog


在分布式系统环境中,无法避免系统出错或者宕机
因此一旦HRegionServer意外退出,MemStore中的内存数据将会丢失
这就需要引入HLog了
每个HRegionServer中都有一个HLog对象
HLog是一个实现Write Ahead Log的类
在每次用户操作写入MemStore的同时
也会写一份数据到HLog文件中
HLog文件定期会滚动出新的
并删除旧的文件(已持久化到StoreFile中的数据)
当HRegionServer意外终止后
HMaster会通过Zookeeper感知到
HMaster首先会处理遗留的 HLog文件
将其中不同Region的Log数据进行拆分
分别放到相应region的目录下
然后再将失效的region重新分配
领取 到这些region的HRegionServer在Load Region的过程中,会发现有历史HLog需要处理
因此会Replay HLog中的数据到MemStore中
然后flush到StoreFiles,完成数据恢复


存储格式


HBase中的所有数据文件都存储在Hadoop HDFS文件系统上,主要包括上述提出的两种文件类型


  • HFile


HBase中KeyValue数据的存储格式
HFile是Hadoop的二进制格式文件
实际上StoreFile就是对HFile做了轻量级包装
即StoreFile底层就是HFile
HBase中WAL(Write Ahead Log) 的存储格式
物理上是Hadoop的Sequence File
首先HFile文件是不定长的
长度固定的只有其中的两块:Trailer和FileInfo
Trailer中有指针指向其他数据块的起始点
File Info中记录了文件的一些Meta信息
例如:AVG_KEY_LEN, AVG_VALUE_LEN, LAST_KEY, COMPARATOR, MAX_SEQ_ID_KEY等
Data Index和Meta Index块记录了每个Data块和Meta块的起始点
Data Block是HBase I/O的基本单元,为了提高效率
HRegionServer中有基于LRU的Block Cache机制
每个Data块的大小可以在创建一个Table的时候通过参数指定
大号的Block有利于顺序Scan,小号Block利于随机查询
每个Data块除了开头的Magic以外就是一个个KeyValue对拼接而成
Magic内容就是一些随机数字,目的是防止数据损坏
HFile里面的每个KeyValue对就是一个简单的byte数组
但是这个byte数组里面包含了很多项,并且有固定的结构
里面的具体结构:
开始是两个固定长度的数值,分别表示Key的长度和Value的长度
紧接着是Key,开始是固定长度的数值
表示RowKey的长度,紧接着是RowKey
然后是固定长度的数值,表示Family的长度
然后是Family,接着是Qualifier
然后是两个固定长度的数值,
表示Time Stamp和Key Type(Put/Delete)
Value部分没有这么复杂的结构,就是纯粹的二进制数据了


  • HLogFile


HLog文件就是一个普通的Hadoop Sequence File
Sequence File 的Key是HLogKey对象
HLogKey中记录了写入数据的归属信息
除了table和region名字外,同时还包括 sequence number和timestamp,timestamp是“写入时间”,sequence number的起始值为0,或者是最近一次存入文件系统中sequence number。
HLog Sequece File的Value是HBase的KeyValue对象,即对应HFile中的KeyValue


参考文章


https://baijiahao.baidu.com/s?id=1665096379718834187&wfr=spider&for=pc
https://baike.baidu.com/item/HBase/7670213?fr=aladdin
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
分布式计算 安全 大数据
企查查支撑8000万+企业数据的大数据平台技术选型与实现
企查查终端所有企业工商信息均实时同步更新,汇集了目前国内市场中的80个产业链,8000个行业,6000个市场以及8000多万家企业数据。
7859 0
|
消息中间件 存储 SQL
大数据流处理平台的技术选型参考
大数据流处理平台的技术选型参考
大数据流处理平台的技术选型参考
|
大数据 数据管理 数据安全/隐私保护
大数据发展历程及技术选型(4)
大数据发展历程及技术选型(4)
149 0
大数据发展历程及技术选型(4)
|
大数据 数据处理 流计算
大数据发展历程及技术选型(3)
大数据发展历程及技术选型(3)
226 0
大数据发展历程及技术选型(3)
|
数据采集 存储 数据可视化
大数据发展历程及技术选型(2)
大数据发展历程及技术选型(2)
183 0
大数据发展历程及技术选型(2)
|
大数据 OLTP 云计算
大数据发展历程及技术选型(1)
大数据发展历程及技术选型(1)
280 0
大数据发展历程及技术选型(1)