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

2023-09-17 22:47:46

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


											低级的快乐来自放纵,高级的快乐来自克制。
更多推荐

MongoDB简介以及安装

文章目录1.MongoDB简介2.NoSQL简介3.MongoDB安装1.MongoDB简介MongoDB是一种NoSQL数据库,采用了文档数据库模型。它以BSON(BinaryJSON)格式存储数据,支持动态模式和灵活的查询语言。MongoDB具有以下特点:文档存储:MongoDB以文档(Document)的形式存储

传统生产者和消费者问题,Sychronized版和Lock版

1.生产者和消费者问题Synchronized版面试:单例模式、排序算法、生产者消费者、死锁packagecom.kuang.pc;/***线程之间的通信问题,生产者和消费者问题!等待唤醒,通知唤醒*线程交替执行AB操作同一个变量num=0*Anum+1;*Bnum-1;*/publicclassA{publicsta

MongoDB差异数据对比的快速指南

MongoDB是一种非关系型数据库,它以灵活的JSON-like文档的形式存储数据,这种特性使其在处理大量数据和实现快速开发时更具有优势。而由于其灵活的数据模型和强大的性能,MongoDB被广泛应用在各种业务场景中。随着业务的发展和数据的增长,如何准确快速地完成MongoDB数据对比成为了一个重要的问题。如何准确快速地

监控办公室电脑用什么软件?

监控办公室员工电脑的工作情况是一项非常重要的管理任务,它可以帮助企业管理者及时发现员工的问题、提高工作效率和保障企业安全。以下是一些具体的方法和步骤,供您参考:1、安装监控软件在监控员工电脑之前,您需要先安装一款专业的监控软件。目前市面上有很多种不同的监控软件,您可以根据自己的需求选择适合自己的软件。比如,如果您想要监

【Rust日报】2023-09-19 为 aho-corasick 添加 aarch64 的 SIMD 实现

为aho-corasick添加aarch64的SIMD实现此次PR主要目的是为Teddy(一个关键的数据结构)添加aarch64的SIMD实现。之前,Teddy使用了x86-64SIMD指令,特别是SSSE3和AVX2。这个PR将Teddy的主要实现重组为一个新的Vectortrait,并为x86-64以及aarch6

代码随想录算法训练营Day46 | 动态规划(8/17) 1.练习题 LeetCode 139.单词拆分 2.多重背包 3. 背包问题总结篇!

背包问题要结束了!首先是今天的练习题,然后是多重背包的知识点,最后对这几天背包问题做一个总结!1.练习题139.WordBreakGivenastringsandadictionaryofstringswordDict,returntrueifscanbesegmentedintoaspace-separatedseq

Linux之Socket函数(详细篇)

本篇是基于Linuxman手册的一些总结socket作用:createanendpointforcommunication函数结构```c#include<sys/types.h>/*SeeNOTES*/#include<sys/socket.h>intsocket(intdomain,inttype,intproto

代理IP与Socks5代理:跨界电商之安全防护与智能数据引擎

第一部分:跨界电商的兴起与网络安全挑战1.1跨界电商的崭露头角跨界电商已经成为全球贸易的新引擎,企业纷纷踏上了拓展国际市场的征程。1.2网络安全的不容忽视跨界电商的增长也伴随着网络安全威胁的增加。黑客攻击、数据泄露和欺诈行为等风险呈上升趋势,给企业带来了巨大挑战。第二部分:代理IP与网络安全2.1代理IP:网络安全的守

Qt5开发及实例V2.0-第十章Qt网络与通信

Qt5开发及实例V2.0-第十章Qt网络与通信第10章Qt5网络与通信10.1获取本机网络信息10.2基于UDP的网络广播程序10.2.1UDP协议工作原理10.2.2UDP编程模型10.2.3【实例】:UDP服务器编程10.2.4【实例】:UDP客户端编程10.3基于TCP的网络聊天室程序10.3.1TCP协议工作原

解决Agora声网音视频在后台没有声音的问题

前言:本文会介绍Android与iOS两个平台的处理方式一、Android高版本在应用退到后台时,系统为了省电会限制应用的后台活动,因此我们需要开启一个前台服务,在前台服务中发送常驻任务栏通知,以此来保证App退到后台时不会被限制活动.前台服务代码如下:packagecom.notify.test.service;im

多输入多输出 | MATLAB实现GA-BP遗传算法优化BP神经网络多输入多输出

多输入多输出|MATLAB实现GA-BP遗传算法优化BP神经网络多输入多输出目录多输入多输出|MATLAB实现GA-BP遗传算法优化BP神经网络多输入多输出预测效果基本介绍程序设计往期精彩参考资料预测效果基本介绍多输入多输出|MATLAB实现GA-BP遗传算法优化BP神经网络多输入多输出1.data为数据集,10个输入

热文推荐