当前位置: 首页 > news >正文

【图解大数据技术】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建表流程

在这里插入图片描述

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

HBase数据写入流程

在这里插入图片描述

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

HBase数据读取流程

在这里插入图片描述

  1. Client通过ZK得知meta表所在位置。
  2. Client访问meta表对应的Region,获取目标用户表的元数据,得知该表数据存储在哪个Region上。
  3. 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&#xff0…...

使用Python绘制堆积柱形图

使用Python绘制堆积柱形图 堆积柱形图效果代码 堆积柱形图 堆积柱形图(Stacked Bar Chart)是一种数据可视化图表,用于显示不同类别的数值在某一变量上的累积情况。每一个柱状条显示多个子类别的数值,子类别的数值在柱状条上堆积在…...

DP:二维费用背包问题

文章目录 🎵二维费用背包问题🎶引言🎶问题定义🎶动态规划思想🎶状态定义和状态转移方程🎶初始条件和边界情况 🎵例题🎶1.一和零🎶2.盈利计划 🎵总结 &#x1…...

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…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage)&#xff1a…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...

Java编程之桥接模式

定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...