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

Apache Hive概述,模拟实现Hive功能,Hive基础架构

1、Apache Hive 概述

1.1、分布式SQL计算

对数据进行统计分析,SQL是目前最为方便的编程工具。

大数据体系中充斥着非常多的统计分析场景
所以,使用SQL去处理数据,在大数据中也是有极大的需求的。
在这里插入图片描述

MapReduce支持程序开发(Java、Python等)
但不支持SQL开发
在这里插入图片描述

1.2、分布式SQL计算 - Hive

Apache Hive是一款分布式SQL计算的工具, 其主要功能是:

  • 将SQL语句 翻译成MapReduce程序运行
  • 基于Hive为用户提供了分布式SQL计算的能力
    写的是SQL、执行的是MapReduce。

在这里插入图片描述

1.3、为什么使用Hive

使用Hadoop MapReduce直接处理数据所面临的问题

  • 人员学习成本太高 需要掌握java、Python等编程语言。
  • MapReduce实现复杂查询逻辑开发难度太大 。

使用Hive处理数据的好处

  • 操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)。
  • 底层执行MapReduce,可以完成分布式海量数据的SQL处理。

2、模拟实现Hive功能

如果让您设计Hive这款软件,要求能够实现

  • 用户只编写sql语句
  • Hive自动将sql转换MapReduce程序并提交运行
  • 处理位于HDFS上的结构化数据。

如何实现?

2.1、元数据管理

假设有如下结构化文本数据存储在HDFS中。
在这里插入图片描述

假设要执行: SELECT city, COUNT(*) FROM t_user GROUP BY city;

对这个SQL翻译成MapReduce程序,会出现哪些困难?

针对SQL:SELECT city, COUNT(*) FROM t_user GROUP BY city;若翻译成MapReduce程序,有如下问题:

  • 数据文件在哪里?
  • 使用什么符号作为列的分隔符?
  • 哪些列可以作为city使用?
  • city列是什么类型的数据?

在这里插入图片描述
在这里插入图片描述

所以,我们可以总结出来第一个点, 即构建分布式SQL计算, 需要拥有:元数据管理功能,即:

  • 数据位置
  • 数据结构
  • 等对数据进行描述

2.2、解析器

解决了元数据管理后,我们还有一个至关重要的步骤, 即完成SQL到MapReduce转换的功能。
在这里插入图片描述

我们称呼它为:SQL解析器,期待它能做到:

  • SQL分析。
  • SQL到MapReduce程序的转换。
  • 提交MapReduce程序运行并收集执行结果。

2.3、基础架构

所以,当解析器也拥有了之后,我们就完成了一款基于MapReduce的,分布式SQL执行引擎的基础构建。

即,核心组件需要有:

  • 元数据管理,帮助记录各类元数据。
  • SQL解析器,完成SQL到MapReduce程序的转换。
    在这里插入图片描述

当拥有这2个组件, 基本上分布式SQL计算的能力就实现了。

2.4、ive架构

Apache Hive其2大主要组件就是:SQL解析器以及元数据存储, 如下图。
在这里插入图片描述

3、Hive基础架构

3.1、Hive架构图

在这里插入图片描述

3.2、Hive组件

3.2.1、元数据存储

通常是存储在关系数据库如 mysql/derby中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

– Hive提供了 Metastore 服务进程提供元数据管理功能
在这里插入图片描述

3.2.2、Driver驱动程序,包括语法解析器、计划编译器、优化器、执行器

完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有执行引擎调用执行。

这部分内容不是具体的服务进程,而是封装在Hive所依赖的Jar文件即Java代码中。
在这里插入图片描述

3.2.3、用户接口

包括 CLI、JDBC/ODBC、WebGUI。其中,CLI(command line interface)为shell命令行;Hive中的Thrift服务器允许外部客户端通过网络与Hive进行交互,类似于JDBC或ODBC协议。WebGUI是通过浏览器访问Hive。

– Hive提供了 Hive Shell、 ThriftServer等服务进程向用户提供操作接口。
在这里插入图片描述

结束!!!!!!!
hy:38


											低级的快乐来自放纵,高级的快乐来自克制。

相关文章:

Apache Hive概述,模拟实现Hive功能,Hive基础架构

1、Apache Hive 概述 1.1、分布式SQL计算 对数据进行统计分析,SQL是目前最为方便的编程工具。 大数据体系中充斥着非常多的统计分析场景 所以,使用SQL去处理数据,在大数据中也是有极大的需求的。 MapReduce支持程序开发(Java…...

postgresql|数据库|centos7下基于postgresql-12的主从复制的pgpool-4.4的部署和使用

前言: postgresql数据库只用自身的一些配置是无法做到最优的优化的,需要通过一些外置插件(中间件)来提高服务器的整体性能,通俗的说就是数据库仅仅依靠自身是无法达到性能最优的,很多时候需要更改数据库的…...

python之pyQt5实例:PyQtGraph的应用

1、显示逻辑 "MainWindow": "这是主窗口,所有的其他组件都会被添加到这个窗口上。", "centralwidget": "这是主窗口的中心部件,它包含了其他的部件。","pushButton": "这是一个按钮&#xff0c…...

Java——键盘输入的几种常见方式

Java——键盘输入的几种常见方式 文章目录: Java——键盘输入的几种常见方式一、IO流二、Scanner类三 、BufferedReader写入 一、IO流 在Java的输入中,是以输入流的形式进入程序,因此无法直接指定输入的类型,仅能读取键盘上的内容…...

Shell脚本中文英文多语言国际化和命令行批处理(bash sh cmd bat)中定义函数的简单写法

文章目录 命令行脚本参考 - bat命令行脚本参考 - bash值得学习的知识点1. 识别终端使用的语言2. 函数的编写3. 获取用户的输入4. bat文件老是乱码怎么办 有时候为了方便别人使用,我们会选择去编写各种各样的命令行脚本:给Windows用户编写.bat cmd批处理脚…...

stringBuffer.append(analyze);使用这个拼接时候如何在字符串参数字符串参数整数参数字符串数组参数内容之间添加空格

stringBuffer.append(analyze);使用这个拼接时候如何在字符串参数字符串参数整数参数字符串数组参数内容之间添加空格? 在添加参数到 StringBuffer 时,你可以在每次添加参数之后都添加一个空格,如下所示: StringBuffer stringBu…...

点云从入门到精通技术详解100篇-大范围田间场景 3D 点云语义分割研究(续)

目录 3.2 自制数据集展示 3.2.1 收集航拍图像 3.2.2 3D 点云重建 3.2.3 语义标签标注...

Mysql详解Explain索引优化最佳实践

目录 1 Explain工具介绍2 explain 两个变种3 explain中的列3.1 id列3.2 select_type列3.3 table列3.4. type列3.5 possible_keys列3.6 key列3.7 key_len列3.8 ref列3.9 rows列3.10 Extra列 4 索引最佳实践4.1.全值匹配4.2.最左前缀法则4.3.不在索引列上做任何操作(计…...

STM32H7 Azure RTOS

STM32H7 是意法半导体(STMicroelectronics)推出的一款高性能微控制器系列,基于 Arm Cortex-M7 内核。它具有丰富的外设和高性能计算能力,适用于各种应用领域。 Azure RTOS(原名 ThreadX)是一款实时操作系统…...

基于LUT查找表方法的图像gamma校正算法FPGA实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 将gamma2.2和gamma1/2.2的数据分别导入到matlab进行对比: 2.算法运行软件版本 matlab2022a 3.部分核心程序 timescale 1ns / 1ps //…...

Function模块

0 Preface/Foreword 1 数据结构 1.1 func_cb_t //task control block typedef struct {u8 sta; //cur working task numberu8 last; //lask task number #if BT_BACKSTAGE_ENu8 sta_break…...

Prometheus PromQL数据查询语言

PromQL 简介 PromQL(Prometheus Query Language)是 Prometheus 内置的数据查询语言。支持用户进行实时的数据查询及聚合操作。 Prometheus 基于指标名称(metrics name)以及附属的标签集(labelset)唯一定义一…...

如何将转换器应用于时序模型

一、说明 在机器学习的广阔环境中,变压器作为建筑奇迹屹立不倒,以其复杂的设计和捕获复杂关系的能力重塑了我们处理和理解大量数据的方式。 自 2017 年创建第一台变压器以来,变压器类型呈爆炸式增长,包括强大的生成 AI 模型&#…...

数据结构:队列

文章目录 队列一,概述二,添加数据三,删除数据 队列 一,概述 队列是一种特殊的数据结构,它遵循先进先出(FIFO)的原则。在队列中,元素被添加到末尾,并从头部移除。队列只…...

AUTOSAR汽车电子嵌入式编程精讲300篇-基于AUTOSAR架构的AT控制系统研究与实现

目录 前言 国内外研究现状 国外研究现状 国内研究现状 2 AUTOSAR规范及开发流程...

计网第五章(运输层)(四)(TCP的流量控制)

一、基本概念 流量控制就是指让发送方的发送速率不要太快,使得接收方来得及接收。可以使用滑动窗口机制在TCP连接上实现对发送方的流量控制。 注意:之前在讨论可靠传输时,讨论过选择重传协议和回退N帧协议都是基于滑动窗口的机制上进行实现…...

【华为OD机试python】查找众数及中位数【2023 B卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 众数是指一组数据中出现次数最多的那个数,众数可以是多个。 中位数是指把一组数据从小到大排序后,如果这组数据的总数是奇数, 那最中间的那个数就是中位数; 如果这组数据总数是偶数,那…...

阿里云无影云电脑详细介绍:价格、使用和功能优势说明

什么是阿里云无影云电脑?无影云电脑(原云桌面)是一种快速构建、高效管理桌面办公环境,无影云电脑可用于远程办公、多分支机构、安全OA、短期使用、专业制图等使用场景,阿里云百科分享无影云桌面的详细介绍、租用价格、…...

【实践篇】MySQL执行计划详解

文章目录 本文知识大纲速览1. 前言2. 基本介绍1. 什么是执行计划2. 如何查看执行计划3. 执行计划的组成部分 3. 执行计划的关键元素1. id2. select_type3. table:4. type:5. possible_keys:6. key:7. key_len8. ref:9. rows:10. Extra 4. 底层原理5. 执行计划示例解读本文知识图…...

二维凸包(Graham) 模板 + 详解

(闲话) 上了大学后没怎么搞oi,从土木跑路到通信了(提桶开润大成功!),但是一年上两年的课(补的),保研也寄掉了( 说起来自从博客被大学同学发现并…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...