【图解大数据技术】Hive、HBase
【图解大数据技术】Hive、HBase
- Hive
- 数据仓库
- Hive的执行流程
- Hive架构
- 数据导入Hive
- HBase
- HBase简介
- HBase架构
- HBase的列式存储
- HBase建表流程
- HBase数据写入流程
- HBase数据读取流程
Hive
Hive是基于Hadoop的一个数据仓库工具,Hive的数据存储在HDFS上,底层基于MapReduce进行数据计算。Hive将HDFS中结构化的数据文件映射成一张表,然后提供类SQL的查询功能,然后将SQL翻译成MapReduce并执行,可以解决海量结构化日志的统计查询。

数据仓库
数据仓库的作用是存储大量的历史数据,然后给各种BI报表、其他图形化界面或生成各种报告的系统提供数据分析统计的功能。

数据仓库的数据来源一般是各种业务系统的日志文件或者数据库的历史数据等,经过数据清洗后到导入到数据仓库。然后使用BI报表等各种非实时性的统计分析应用对数据仓库中的数据做统计分析。
数据仓库本质也是数据库,但是它和传统的关系型数据库还是有区别的。关系型数据库一般给业务系统对数据进行CRUD等OLTP操作,而数据仓库则更多的是给分析型应用进行OLAP操作。

而且关系型数据库一般不会存储大量的历史数据,而是存储近期某个时间范围内的业务数据;而数据仓库则会存储大量的历史数据。

Hive的执行流程

Hive内部封装了各种MapReduce模板,每个MapReduce都与一种SQL类型相对于。当客户端提交sql到hive执行时,hive会根据sql匹配出对应的MapReduce类型,然后执行MapReduce程序,获取返回结果,然后把返回结果返回给客户端。
Hive架构

大体架构和MySQL还是有几分相似。
- Client:客户端工具,比如CLI命令行工具,JDBC等。
- Metastore:存储Hive的元数据信息,比如表信息,表的列信息,还有表对应的数据在HDFS中的目录。
- 解析器:解析器解析sql为抽象语法树AST。
- 编译器:根据AST生成执行计划。
- 优化器:对执行计划进行优化。
- 执行器:根据执行计划生成相应的MapReduce并执行。
数据导入Hive

我们需要把数据导入到Hive中,使其在Hive中映射为表,才能通过Hive对数据进行统计分析。
导入的方式有好几种,可以是本地文件,HDFS文件,或者通过sqoop等类似的工具从其他数据源导入。

其中Sqoop是Hadoop和关系型数据库间的传输工具,比如可以把Mysql中的数据导入到Hive中。

HBase
HBase简介

HBase是一个用于存储海量非结构化或半结构化数据的列示存储数据库,支持高性能写入,准实时查询。
- HBase底层基于HDFS实现了PB级别的海量数据存储。
- 通过缓存和预写日志技术实现了高性能写入和低延迟查询。
- 通过Zookeeper的监控通知HMaster故障转移实现了高可靠性。
- 通HMaster接收RegionServer注册以及HMaster的RegionServer集群负载均衡能力实现高扩展性。
HBase架构
HBase的架构与组件间的关系如下图:

大体由Client、Zookeeper、HMaster、HRegionServer四个角色组成,加上HDFS就是五个。
Client会通过zk读取meta表Region所在的位置,然后请求对应该Region所在RegionServer获取元数据信息,然后通过元数据得知目标Region所在位置,再对目标Region所在RegionServer发起读写操作。
HRegionServer负责数据的存储和处理客户端的读写请求。HRegionServer中有多个HRegion,每个Region对应一个表的一个分片,Region中又有多个Store,每个Stroe对应表中一个列族。然后Stroe中有一个MemStore是Store的缓存,会缓存客户端读写的数据。StoreFile封装了HFile,HFile通过HDFS客户端工具把具有一定格式的文件数据写入到HDFS中。HLog是预写日志,当HRegionServer接收到客户端的写请求时,把数据存储到MemStore中,然后在HLog中记录日志,由于HLog是顺序写,速度很快。
HRegionServer启动时向HMaster注册,HMaster接收HRegionServer的注册并进行HRegionServer的数据存储的负载均衡;HMaster接收到Zookeeper发来的某个HRegionServer故障的通知后,负责HRegionServer的故障转移;HMaster接收到Client的建表请求后,写入元数据到meta表对应的Region,然后记录Region所在位置的HRegionServer到Zookeeper。
Zookeeper负责监控HMaster和HRegionServer,保证它们的高可用;当HRegionServer故障时会通知HMaster;Zookeeper还存储meta表Region的位置,Client可以通过Zookeeper得知meta表Region所在的HRegionServer。
HBase的列式存储

- RowKey:相当于是MySQL中的主键,表中的数据根据RowKey进行排序;我们可以通过RowKey查询指定的某一行或进行范围查询。
- ColumnFamily:列族,在建表的时候需要预先声明列族,一个列族对应一个物理文件。
- Column:列,列无需在建表的时候预先指定,可以随意增加;并且查询的时候可以指定列名进行查询。
timestamp:时间戳,同一个RowKey的不同版本的数据。
HBase建表流程

- Client通过rpc调用HMaster进行表创建。
- HMaster根据集群存储情况确定一个RegionServer存储新建表的数据,然后通知该RegionServer创建Region。
- HMaster把表的元数据信息写入meta表对应的Region中;同时如果该Region是新建的话,会在zk中更新meta表所在位置的信息。
HBase数据写入流程

- Client通过ZK得知meta表所在位置。
- Client访问meta表对应的Region,获取目标用户表的元数据,得知该表数据存储在哪个Region上。
- Client访问目标Region写入数据。
- 数据写入MemStore并记录HLog日志,当MemStore达到阈值后才会flush到StoreFile中,StoreFile通过HFile把数据写入到HDFS。
HBase数据读取流程

- Client通过ZK得知meta表所在位置。
- Client访问meta表对应的Region,获取目标用户表的元数据,得知该表数据存储在哪个Region上。
- Client访问目标Region读取数据,先尝试从MemStore中读取要查询的数据,如果没有再从BlockCache中读取(BlockCache存储了之前查询返回的数据),还是没有那就要通过HFile从HDFS中取了。
相关文章:
【图解大数据技术】Hive、HBase
【图解大数据技术】Hive、HBase Hive数据仓库Hive的执行流程Hive架构数据导入Hive HBaseHBase简介HBase架构HBase的列式存储HBase建表流程HBase数据写入流程HBase数据读取流程 Hive Hive是基于Hadoop的一个数据仓库工具,Hive的数据存储在HDFS上,底层基于…...
composables 目录下的文件(web前端)
composables 目录通常用于存放可组合的函数或逻辑,这些函数或逻辑可以在不同的组件中复用。具体来说,composables 目录下的文件通常包含以下内容: 组合式函数 (Composable Functions): 这些函数利用 Vue 3 的组合式 API࿰…...
使用Python绘制堆积柱形图
使用Python绘制堆积柱形图 堆积柱形图效果代码 堆积柱形图 堆积柱形图(Stacked Bar Chart)是一种数据可视化图表,用于显示不同类别的数值在某一变量上的累积情况。每一个柱状条显示多个子类别的数值,子类别的数值在柱状条上堆积在…...
DP:二维费用背包问题
文章目录 🎵二维费用背包问题🎶引言🎶问题定义🎶动态规划思想🎶状态定义和状态转移方程🎶初始条件和边界情况 🎵例题🎶1.一和零🎶2.盈利计划 🎵总结 …...
C语言标准库中的函数
由于C语言标准库中的函数非常多,我将按类别列出一些常见函数及其作用。请注意,这里不可能列出所有函数,但我会尽量覆盖主要的类别和函数。 ### 标准输入输出 - printf: 格式化输出到标准输出(通常是屏幕)。 - scanf: …...
Qt5.9.9 关于界面拖动导致QModbusRTU(QModbusTCP没有测试过)离线的问题
问题锁定 参考网友的思路: Qt5.9 Modbus request timeout 0x5异常解决 网友认为是Qt的bug, 我也认同;网友认为可以更新模块, 我也认同, 我也编译了Qt5.15.0的code并成功安装到Qt5.9.9中进行使用,界面拖…...
API的定义理解
前言 在程序员的日常工作中,“API”这个词在程序员的口中重复的次数,绝对是名列前茅的。 但是对刚开始工作的新人来说,API这个概念还是比较模糊。 确实,API这个概念是随着语义环境而不一样的,所以会让人迷惑。 下面…...
启航IT之旅:高考假期预习指南
标题:启航IT之旅:高考假期预习指南 随着高考的落幕,许多有志于IT领域的学子们即将踏上新的学习旅程。这个假期,是他们探索IT世界的黄金时期。本文将为准IT新生们提供一份全面的预习指南,帮助他们为未来的学习和职业生…...
HarmonyOS开发:循环渲染ForEach
需求: 创建多个列表组件,并实现点赞功能 语言: ArkTS 平台: DevEco Studio ForEach 接口描述 ForEach( arr: Array, itemGenerator: (item: Object, index: number) > void, keyGenerator?: (item: Object, index: number) &…...
构建工程化:多种不同的工程体系如何编写MakeFile
源码分析 核心MakeFile 这个 Makefile 是一个复杂的构建脚本,用于管理和构建一个大型项目。它包括多个目标、条件判断和递归调用 make 命令来处理多个子项目和子目录。让我们逐部分进行详细解析。 伪目标和变量定义 .PHONY: all clean install build test init.…...
聚焦从业人员疏散逃生避险意识能力提升,推动生产经营单位每年至少组织开展(疏散逃生演练,让全体从业人员熟知逃生通道、安全出口及应急处置要求,形成常态化机制。
聚焦从业人员疏散逃生避险意识能力提升,推动生产经营单位每年至少组织开展(疏散逃生演练,让全体从业人员熟知逃生通道、安全出口及应急处置要求,形成常态化机制。完整试题答案查看 A.三次B.两次C.一次 综合运用“四不两直”、明察暗访、 ()、…...
【手机取证】如何使用360加固助手给apk加固
文章关键词:手机取证、电子数据取证、数据恢复 一、前言 APP加固是对APP代码逻辑的一种保护。原理是将应用文件进行某种形式的转换,包括不限于隐藏,混淆,加密等操作,进一步保护软件的利益不受损坏,下面给…...
Vue的介绍
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
MySql数据库常用指令合集
MySql数据库常用指令合集 一、创建数据库db11.创建表 字段---表头 student_no,username,sex2.新增单条插入多条插入3.删除4.更新5.查询5.1.查询该表全部信息5.2.查询该表中username,并且要求名字为zhangsan性别女,还可以用(or) 6.…...
ArcGIS Pro SDK (七)编辑 13 注解
ArcGIS Pro SDK (七)编辑 13 注解 文章目录 ArcGIS Pro SDK (七)编辑 13 注解1 注释构建工具2 以编程方式启动编辑批注3 更新批注文本4 修改批注形状5 修改批注文本图形6 接地到网格 环境:Visual Studio 2022 .NET6 …...
模拟面试001-Java开发工程师+简历+问题+回答
模拟面试001-Java开发工程师简历问题回答 目录 模拟面试001-Java开发工程师简历问题回答面试简历面试官题问求职者回答1. 关于Java编程和技术栈2. 关于XX在线购物平台项目3. 关于XX企业资源规划系统项目4. 团队协作与项目管理5. 个人发展与职业规划 参考资料 面试简历 **个人信…...
微信小程序 ——入门介绍及简单的小程序编写
目录 一、小程序入门 1.1 什么是小程序 1.2 小程序的优点 1.3 小程序注册 1.4 安装开发工具 1.5 创建第一个小程序 二、小程序目录结构及入门案例 2.1 目录结构 2.2 入门案例 2.2.1 创建界面 2.2.2 设置标题 2.2.3 编写WXML文件 2.2.4 编写JS文件 2.2.5 编写WXSS…...
ubuntu20.04安装lio-sam
1、依赖功能包安装 sudo apt install ros-noetic-robot-state-publisher sudo apt-get install ros-noetic-robot-localization libmetis-dev 2、boost版本 boost版本查看:cat /usr/include/boost/version.hpp | grep "BOOST_LIB_VERSION" boost版本为1.…...
Kafka系列之Kafka知识超强总结
一、Kafka简介 Kafka是什么 Kafka是一种高吞吐量的分布式发布订阅消息系统(消息引擎系统),它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览, 搜索和其他用户的行动)是在现代网络上的许多社…...
第32讲:K8S集群与Cephfs文件系统集成
文章目录 1.在K8S环境下RBD与Cephfs的使用对比2.Cephfs环境介绍3.在Ceph集群中为K8S创建单独Cephfs文件系统和认证用户3.1.创建一个K8S使用的Cephfs文件系统3.2.将创建的Cephfs文件系统挂载到本地路径3.3.创建K8S连接Ceph集群使用的认证用户 4.K8S PV存储卷使用Cephfs文件系统4…...
App无辜躺枪?手把手教你搞定腾讯手机管家误报导致的应用商店下架
当合规应用遭遇误报下架:开发者系统性应对指南运动健康类应用被标记为金融诈骗软件?社交工具因"病毒风险"被各大商店紧急下架?这类看似荒谬的误报事件,正在成为中小开发团队的"无妄之灾"。某知名运动App开发团…...
AlphaFold 3终极指南:掌握Jackhmmer与HMMER提升蛋白质结构预测精度
AlphaFold 3终极指南:掌握Jackhmmer与HMMER提升蛋白质结构预测精度 【免费下载链接】alphafold3 AlphaFold 3 inference pipeline. 项目地址: https://gitcode.com/gh_mirrors/alp/alphafold3 你是否在蛋白质结构预测项目中遇到MSA生成效率低下的瓶颈&#x…...
自制BLE112串口编程器:基于Bootloader的免调试器烧录方案
1. 项目概述:为BLE112模块打造一款免调试器的RS232编程器在嵌入式开发,特别是早期的蓝牙低功耗(BLE)模块应用中,我们常常会遇到一个棘手的问题:官方开发工具链的依赖和限制。以Silicon Labs(当时…...
Python PIL 画矩形框
基础代码 from PIL import Image, ImageDraw# 打开图片 img Image.open(your_image.jpg)# 创建绘图对象 draw ImageDraw.Draw(img)# 矩形坐标 (x1, y1, x2, y2) coords (23, 21, 69, 76)# 画矩形框(红色,线宽2) draw.rectangle(coords, ou…...
学术写作创新突破!2026全流程AI论文工具精选指南
2026 年 AI 论文写作工具已进入全流程闭环 学术合规时代,千笔 AI(综合评分 99 分)中文学术场景标杆;Grammarly Academic与Elicit为英文论文写作首选;按需求匹配度 - 数据可信度 - 成本承受力三维模型选型,…...
如何进行TVA仿真引擎的“光照地狱”训练?
重磅预告:本专栏将独家连载系列丛书《智能体视觉技术与应用》部分精华内容,该书是世界首套系统阐述“因式智能体”视觉理论与实践的专著,特邀美国 TypeOne 公司首席科学家、斯坦福大学博士 Bohan 担任技术顾问。Bohan先生师从美国三院院士、“…...
Postgresql基础实践教程(八)
⭐️⭐️⭐️⭐️⭐️ 完整数据详见 练习数据免费 ⭐️⭐️⭐️⭐️⭐️ 六十九、查找会员ID 27的向上推荐链 问题 查找会员ID 27的向上推荐链:即推荐该会员的人,以及推荐那个人的人,依此类推。返回会员ID、名字和姓氏。按会员ID降序排列。…...
GEO优化可以覆盖哪些搜索平台
这是一个非常现实的问题。企业投放资源做GEO,当然希望覆盖面越广越好。那么GEO优化到底能覆盖哪些平台?覆盖到什么程度?不同平台的GEO逻辑有什么差异?GEO平台覆盖的三个层级第一层级:通用大模型AI平台(核心…...
告别KITTI!用TartanAir数据集在Unreal Engine+AirSim里复现那些让VSLAM算法“翻车”的雨天和黑夜
超越KITTI:用TartanAir数据集在虚拟极端环境中锤炼VSLAM算法当视觉SLAM算法在KITTI数据集上取得95%的准确率时,开发者们常常会松一口气——直到这些算法被部署到真实世界的雨夜街道上。突然之间,那些在阳光明媚的德国道路上表现优异的特征点检…...
为什么你的DeepSeek总漏检重构后代码?4步反混淆预处理法(附LLM辅助去装饰器Python脚本)
更多请点击: https://codechina.net 第一章:DeepSeek代码重复检测 DeepSeek-R1 模型在训练过程中引入了严格的代码去重机制,其核心目标是消除训练语料中语义等价或高度相似的代码片段,从而提升模型对真实编程模式的学习能力与泛化…...
