【图解大数据技术】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中取了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/777515.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSS - 深入理解选择器的使用方式

CSS基本选择器 通配选择器元素选择器类选择器id 选择器 通配选择器 作用:可以选中所有HTML元素。语法: * {属性名;属性值; }举例: /* 选中所有元素 */ * {color: orange;font-size: 40px; }在清除样式方面有很大作用 元素选择器…

实现桌面动态壁纸(二)

目录 前言 一、关于 WorkerW 工作区窗口 二、关于窗口关系 2.1 窗口以及窗口隶属关系 2.2 桌面管理层窗口组分简析 2.3 厘清两个概念的区别 2.4 关于设置父窗口 三、编写代码以供在 Vista 上实现 3.1 方法二:子类化并自绘窗口背景 四、初步分析桌面管理层…

【音视频 | RTSP】RTSP协议详解 及 抓包例子解析(详细而不赘述)

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

免密ssh和自定义服务器名字【远程连接服务器】

免密ssh和自定义服务器名字【远程连接服务器】 免密ssh和自定义服务器名字【远程连接服务器】服务器添加本地公钥ssh-copy-id使用别名登录config 免密ssh和自定义服务器名字【远程连接服务器】 原理 实现免密登录需要 本地的公钥id_rsa.pub放在服务器上的 authorized_keys 文件…

NTP协议格式解析

1. NTP时间戳格式 SNTP使用在RFC 1305 及其以前的版本所描述标准NTP时间戳的格式。与因特网标准标准一致, NTP 数据被指定为整数或定点小数,位以big-endian风格从左边0位或者高位计数。除非不这样指定,全部数量都将设成unsigned的类型&#…

边缘概率密度、条件概率密度、边缘分布函数、联合分布函数关系

目录 二维随机变量及其分布离散型随机变量连续型随机变量边缘分布边缘概率密度举例边缘概率密度 条件概率密度边缘概率密度与条件概率密度的区别边缘概率密度条件概率密度举个具体例子 参考资料 二维随机变量及其分布 离散型随机变量 把所有的概率,都理解成不同质量…

【Rust入门】生成随机数

文章目录 前言随机数库rand添加rand库到我们的工程生成一个随机数示例代码 总结 前言 在编程中,生成随机数是一种常见的需求,无论是用于数据分析、游戏开发还是模拟实验。Rust提供了强大的库来帮助我们生成随机数。在这篇文章中,我们将通过一…

huggingface笔记:gpt2

0 使用的tips GPT-2是一个具有绝对位置嵌入的模型,因此通常建议在输入的右侧而不是左侧填充GPT-2是通过因果语言建模(CLM)目标进行训练的,因此在预测序列中的下一个标记方面非常强大 利用这一特性,GPT-2可以生成语法连…

并发编程中常见的锁

一、锁的分类 1.1 悲观锁和乐观锁 乐观锁: 定义: 假设在绝大多数情况下,对共享资源的访问是不会发生冲突的,所以不会对资源上锁。 实现方式:当线程要对资源进行更新时,它会先获取资源的版本号或者标识符,并在执行更新…

C++ 视觉开发 六.特征值匹配

以图片识别匹配的案例来分析特征值检测与匹配方法。 目录 一.感知哈希算法(Perceptual Hash Algorithm) 二.特征值检测步骤 1.减小尺寸 2.简化色彩 3.计算像素点均值 4.构造感知哈希位信息 5.构造一维感知哈希值 三.实现程序 1.感知哈希值计算函数 2.计算距离函数 3…

SCI二区TOP|麋鹿群优化算法: 一种新颖的受自然启发的元启发式算法

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年,SO Oladejo受到麋鹿群的繁殖过程启发,提出了麋鹿群优化算法(Elk herd optimizer, EHO)。 2.算法原理 2.1算法思想 EHO灵感来自麋鹿…

vue2 data内对象引用另一个data对象无法使用this的解决办法

背景:data内有一复杂对象,并且内部一属性经常修改,每次修改的话属性.属性会很长,所以希望引用另一简单对象,但data内this用不了。(集合数组是地址引用,基本数据类型这么操作没意义) 如: 解决办法…

字节码编程javassist之定义方法和返回值

写在前面 源码 。 本文看下如何使用javassist来定义方法和返回值。 1:源码 package com.dahuyou.javassist.generateFieldAndMethod;import javassist.*;import java.lang.reflect.Method;public class JustDoIt222 {public static void main(String[] args) thr…

数值分析笔记(五)线性方程组解法

三角分解法 A的杜利特分解公式如下: u 1 j a 1 j ( j 1 , 2 , ⋯ , n ) , l i 1 a i 1 / u 11 ( i 2 , 3 , ⋯ , n ) , u k j a k j − ∑ m 1 k − 1 l b m u m j ⇒ a k j ( j k , k 1 , ⋯ , n ) , l i k ( a i k − ∑ m 1 k − 1 l i n u m k ) /…

苹果电脑能玩赛博朋克2077吗 如何在mac上运行赛博朋克2077 crossover能玩什么游戏

各位喜欢赛博朋克风的一定不能错过《赛博朋克2077》。那么《赛博朋克2077》是一款什么样的游戏?《赛博朋克2077》在苹果电脑上可以运行吗?一起来看看介绍吧。 一、《赛博朋克2077》是一款什么样的游戏? 《赛博朋克2077》是一款由CD Projekt …

[激光原理与应用-98]:南京科耐激光-激光焊接-焊中检测-智能制程监测系统IPM介绍 - 2 - 什么是激光器焊接? 常见的激光焊接技术详解

目录 一、什么是激光焊接 1.1 概述 1.2 激光焊接的优点 二、激光焊接的应用 2.1 哪些场合必须使用激光焊接 1. 汽车制造业 2. 航空航天领域 3. 电子行业:消费类电子3C 4. 医疗器械制造 5. 新能源锂电池行业 6. 其他领域 三、激光焊接的分类 3.1 按焊接…

【SpringBoot】SpringBoot自动装配原理

在上一篇文章中,讲述了 SpringBoot核心启动流程源码解析 其中,主要是构造方法和run方法的处理,本篇接着准备上下文环境后续,讲述是如何将springboot是如何完成自动装配,主线其实就是 什么时候完成 对主类的加载&#…

Spring Boot基础篇

快速上手 SpringBoot是由Pivotal团队提高的全新框架,其设计目的是用来简化Spring应用的初始化搭建以及开发过程 入门案例 在Idea创建 创建时要选择Spring Initializr。 Server URL为要连接的网站,默认为官网start.spring.io(访问速度慢&…

Node.js 生成vue组件

在项目根目录下创建 create.js /*** 脚本生成vue组件* 主要是利用node自带的fs模块操作文件的写入* ===========================================* 准备步骤:* 1.输入作者名* 2.输入文件名* 3.输入菜单名* 4.输入文件地址* ============================================* 操…

CTS单测某个模块和测试项

1 &#xff0c;测试单个模块命令 run cts -m <模块名> 比如&#xff1a;run cts -m CtsUsbTests模块名可以从测试报告中看&#xff0c;如下&#xff1a; 2&#xff0c; 测试单个测试项 run cts -m <模块名> -t <test_name> 比如&#xff1a;run cts -m ru…