数据仓库Hive(林子雨课程慕课)

文章目录

      • 9.数据仓库Hive
        • 9.1 数据仓库的概念
        • 9.2 Hive简介
        • 9.3 SQL语句转换为MapReduce作业的基本原理
        • 9.4 Impla
          • 9.4.1 Impala简介
          • 9.4.2 Impala系统架构
          • 9.4.3 Impala查询执行过程
          • 9.4.4 Impala与Hive的比较
        • 9.5 Hive的安装和基本操作
          • 9.5.1 Hive安装
          • 9.5.2 Hive基本操作

9.数据仓库Hive

9.1 数据仓库的概念
  • 数据仓库的概念

    • 数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用户支持管理决策
  • 根本目的:基于数据仓库的分析结果->以支持企业内部的商业分析和决策->作出相关的经营决策

  • 数据仓库的体系结构:

    image-20231010211025379

  • 数据仓库和传统数据库区别

    • 仓库中的数据是相对稳定的,不会频繁发生变化,存储大量的历史数据

    • 数据仓库基本上保留了历史上所有数据,保留历史而传统观数据库只能保留某一时刻状态的信息

      image-20231010211239917

  • 传统数据仓库(基于关系型数据库)面临挑战

    • 无法满足快速增长的海量数据存储需求
    • 无法有效处理不同类型的数据:基于结构化存储,无法存储非结构化的数据
    • 计算和处理能力不足:纵向扩展能力有限,水平扩展能力不足
9.2 Hive简介
  • Hive特点

    • 传统的数据仓库既是数据存储产品也是数据分析产品
    • 传统的数据仓库能同时支持数据的存储和处理分析
    • Hive本身并不支持数据存储和处理
    • 其实只是提供了一种编程语言
  • 其架构于Hadoop之上,Hadoop有支持大规模数据存储的组件HDFS,以及支持大规模数据处理的组件MapReduce

    Hive借助于这两个组件,完成数据的存储和处理

    • 其依赖分布式文件系统HDFS存储睡
    • 依赖分布式并行计算系统MapReduce处理数据
    • 借鉴SQL语言设计了新的查询语言HiveQL
  • Hive总结

    • 它定义了简单的类似SQL的查询语言HiveQL
    • 并提供了HiveQL这种语句,来运行具体的MapReduce任务
    • 支持了类似SQL的接口,很容易进行移植
    • Hive是一个可以提供有效合理直观组织和使用数据的分析工具
  • Hive两个方面的特性

    • 采用批处理的方式处理海量数据

      image-20231011143923125

    • Hive提供了一系列对数据仓库进行提取、转换、加载(ETL)的工具

      image-20231011144027990

  • Hive与Hadoop生态的其他组件的关系

    image-20231011144116568

  • Pig和Hive的区别

    • Pig更适合做数据的实时分析,而不是海量数据的批处理,主要是做数据的抽取、转换、加载环节

      image-20231011144315446

  • Hive和传统数据库的区别

    • 其在很多方面与传统关系型数据库类似,但是其底层以来的是HDFS和MapReduce,所以在很多方面又有别于传统数据库

      image-20231011144603034

  • Hive在企业大数据分析平台中的应用

    • Mahout:Hadoop平台上的开源组件,很多机器学习的算法,在Mahout上都已经实现了

      image-20231011145023668

  • Hive在Fackbook公司的应用

    • Fackbook是Hive数据仓库的开发者

      image-20231011145218597

    • FaceBook部署了大量的Web服务器

      • Web服务器日志流通过订阅服务器(Scribe Servers)将日志流收集整理,存入Filers(网络日志服务器)

      • Filers将其保存在分布式文件系统之上

        image-20231011145443385

  • Hive系统架构

    image-20231011145534611

    • Hive对外访问接口

      image-20231011145641094

    • 驱动模块(Driver)

      image-20231011145714233

    • 元数据存储模块(Metastore)

      image-20231011145807251

    • Qubbole、Karmasphere、Hue也可以直接访问Hive

      image-20231011145849230

  • Hive HA(High Availability)基本原理

    • Hive很多时候会表现出不稳定

    • Hive HA:在集群中设置多个Hive实例,并统一放入资源池,外部所有访问通过HAProxy进行访问

      • 首先用户访问HA Proxy

      • 然后对Hive实例进行逻辑可用性测试,若不可用,则将其加入黑名单,继续测试下一个Hive实例是否可用

      • 每隔一定的周期,HA Proxy会重新对列入黑名单的实例进行统一处理

        image-20231011150426604

9.3 SQL语句转换为MapReduce作业的基本原理
  • SQL中的连接操作转换为MapReduce作业

    • Join的实现原理

      image-20231011150646054

    • 连接操作

      • 编写一个Map处理逻辑

      • Map处理逻辑输入关系数据库的表

      • 通过Map对它进行转换,生成一系列键值对

        image-20231011151031828

    • group by的实现原理

      image-20231011151258887

  • Hive如何将SQL语句转为MapReduce操作:当用户向Hive输入一段命令或者查询时,Hive需要和Hadoop交互工作来完成该操作

    • 驱动模块接受该命令或者查询编译器

    • 对该命令或查询进行解析编译

    • 由优化器对该命令或查询进行优化计算

    • 该命令或查询通过执行器进行执行

  • 具体分为七步骤

    • 由Hive驱动模块中的编译器对用户输入的SQL语句进行语法和词法解析,将SQL语句转化为抽象语法数的形式
    • 抽象语法数的结构仍很复杂,不方便直接翻译为MapReduce算法程序,因此,需要把抽象语法数转为查询块
    • 将查询块转化为逻辑查询计划,里面包含了许多逻辑操作符
    • 重写逻辑查询计划,进行优化合并多余操作,减少MapReduce任务数量
    • 将逻辑操作符转换成需要执行的具体MapReduce任务
    • 对生成的MapReduce任务进行优化生成最终的MapReduce任务执行计划(物理计划)
    • 由Hive驱动模块中的执行器对最终的MapReduce任务进行执行输出

    image-20231011152300285

    • 简单说明

      image-20231011152932323

9.4 Impla
9.4.1 Impala简介
  • Hive是建立在Hadoop平台之上,且其依赖底层的MapReduce和HDFS,所以它的延迟比较高

    image-20231011153813444

  • Impala底层也是构建在HDFS和HBase之上

    image-20231011153741875

9.4.2 Impala系统架构
  • Impala系统架构

    • Impala和Hive、HDFS、HBase都是统一部署在一个Hadoop平台上面

    image-20231011153933608

  • Impala的典型组件

    • Impalad:负责具体相关的查询任务

      其包含三个模块:

      image-20231011154424084

      • Impalad作用

        image-20231011154619457

    • State Store:负责元数据数据管理和状态管理

      • 每个查询提交,系统会为其创建一个StateStored进程

      • 作用

        image-20231011154832510

    • CLI:用户访问接口

      • 作用

        image-20231011154902725

      • Impala的元数据是直接存储在Hive中的,它是借助Hive来存储Impala的元数据
      • mpala采用与Hive相同的元数据、相同的SQL语法、相同的ODBC驱动程序和用户接口
      • 在—个Hadoop平台上可以统一部署Hive和Impala等分析工 实现在一个平台上面可以同时满足批处理和实时查询
9.4.3 Impala查询执行过程
  • 查询执行过程框图

    image-20231011155150238

    • 0.注册和订阅

      image-20231011155320940

    • 1.提交查询

      image-20231011155349613

    • 2.获取元数据和数据地址

      image-20231011155449416

    • 3.分发查询任务

      image-20231011155519229

    • 汇聚结果

      image-20231011155542533

    • 返回结果

      image-20231011155638255

9.4.4 Impala与Hive的比较
  • Hive和Impala的不同点

    image-20231011155750184

    • Hive适合于长时间的批处理查询分析,而Impala适合于实时交互式SQL查询

    • Hive依赖于MapReduce计算框架,Impala把执行计划表现为一棵完整的执行计划树,直接分发执行计划到各个Impalad执行查询

    • Hive在执行过程中,如果内存放不下所有数据则会使用外存,以保证查询能顺序执行完成;
      Impala在遇到内存放不下数据时,不会利用外存所以Impala目前处理查询时会受到一定的限制

  • Hive和Impala的相同点

    • Hive和Impala使用相同的存储数据池,都支持把数据存储于HDFS和HBase中
    • Hive与Impala使用相同的元数据
    • Hive与Impala中对SQL的解释处理比较相似,都是通过词法分析生成执行计划
  • 总结

    • Impala的目的不在于替换现有的MapReduce工具
    • 把Hive与Impala配合使用效果最佳
    • 可以先使用Hive进行数据转换处理,之后再使用Impala在Hive处理后的结果数据集上进行快速的数据分析
9.5 Hive的安装和基本操作
9.5.1 Hive安装
  • Hive安装

    见:Hive3.1.3安装和使用指南_厦大数据库实验室博客 (xmu.edu.cn)

9.5.2 Hive基本操作
  • Hive数据类型

    image-20231011162806188

    • Hive还提供了一些集合数据类型,包括Array、map、struct等
  • Create:创建数据库、表、视图

    • 创建数据库

      image-20231011162946275

    • 创建表

      image-20231011163046763

    • 创建视图

      image-20231011163117197

  • 查看数据库

    image-20231011163146748

  • 查看表和视图

    image-20231011163224853

  • load:向表中装载数据

    image-20231011163307456

    image-20231011163337546

  • Insert:向表中插入数据或从表中导出数据

    image-20231011163445685

  • WordCount算法在MapReduce中的编程实现和在Hive中编程实现的主要不同点

    image-20231011164107767

    image-20231011164125112

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【【萌新的SOC学习之SD卡读写TXT文本实验】】

萌新的SOC学习之SD卡读写TXT文本实验 SD卡 Secure Digital Card SD卡的引脚定义 我们会用的数据脚就这几个 对于我们FPGA 其实更会倾向于选择 SPI的功能 而TF卡相对于SD卡的区别在于 SD卡只有一个电源地 这里相对于原本的SPI多了一个CD引脚 CD信号是相当于一个卡检测…

某医疗机构:建立S-SDLC安全开发流程,保障医疗前沿科技应用高质量发展

某医疗机构是头部资本集团旗下专注大健康领域战略性投资与运营的实业公司,市场规模超300亿。该医疗机构已完成数字赋能,形成了标准化、专业化、数字化的疾病和健康管理体系,将进一步规划战略方向,为人工智能纳米技术、高温超导、生…

虹科科技 | 探索CAN通信世界:PCAN-Explorer 6软件的功能与应用

CAN(Controller Area Network)总线是一种广泛应用于汽车和工业领域的通信协议,用于实时数据传输和设备之间的通信。而虹科的PCAN-Explorer 6软件是一款功能强大的CAN总线分析工具,为开发人员提供了丰富的功能和灵活性。本文将重点…

PBA.客户需求分析 需求管理

一、客户需求分析 1 需求的三个层次: Requirement/Wants/Pains 大部分人认为,产品满足不了客户需要,是因为客户告知的需求是错误的,这听起来有一些道理,却没有任何意义。不同角色对于需求的理解是不一样的。在客户的需求和厂家的…

风电光伏混合储能功率小波包分解、平抑前后波动性分析、容量配置、频谱分析、并网功率波动分析(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

UE4和C++ 开发-UE4怎么删除C++类

1 关闭visual stdio,关闭UE4引擎。 2 打开你的项目文件夹。找到你要删除的.h,.cpp文件删除。 3、删除Binaries文件夹。 4 右击.uproiect文件,点击Generate Visual Studio project files. 5 双击.uproiect文件,忽略警告打开就看到已经删除了想要删除的C类…

Python【控制台输出案例】

要求&#xff1a;在控制台上上输入如下案例 *********** *********** *********** 代码1如下&#xff1a; layer int(input("请输入你要打印的行数&#xff1a;")) index 1 while index < layer:print("*"*10)index 1 ps:为了确保index 1语句在循…

安全的Sui Move是Web3大规模采用之路的基石

没有信任&#xff0c;就没有Web3的大规模采用。还有其他重要障碍阻碍了首个十亿用户的到来&#xff0c;包括令人困惑的用户体验、复杂的身份验证模式以及不确定的监管体系&#xff0c;但所有障碍中&#xff0c;要数大多数人对区块链技术持怀疑和不信任态度最严重。 对于许多人…

【动态规划】123. 买卖股票的最佳时机 III、188. 买卖股票的最佳时机 IV

提示&#xff1a;努力生活&#xff0c;开心、快乐的一天 文章目录 123. 买卖股票的最佳时机 III&#x1f4a1;解题思路&#x1f914;遇到的问题&#x1f4bb;代码实现&#x1f3af;题目总结 188. 买卖股票的最佳时机 IV&#x1f4a1;解题思路&#x1f914;遇到的问题&#x1f4…

docker搭建rocketmq集群

单机搭建 1 拉取rocketMq镜像 docker pull rocketmqinc/rocketmq:4.3.2 2 创建挂在目录 mkdir -p /mydata/rocketmq/data/namesrv/logs /mydata/rocketmq/data/namesrv/store mkdir -p /mydata/rocketmq/data/broker/logs /mydata/rocketmq/data/broker/store mkd…

flink1.15 savepoint 超时报错 java.util.concurrent.TimeoutException

savepoint命令 flink savepoint e04813d4e7480c526912eb4d32bba510 hdfs://flink/flink/migration/savepoint56650 -Dyarn.application.id=application_1683808492336_1222报错内容 org.apache.flink.util.FlinkException: Triggering a savepoint for the job e04813d4e7480…

Java开发-参数校验@NotEmpty、@NotBlank、@NotNull

大家好&#xff0c;我是小资。今天给大家说下参数校验。 标题中说的这三个注解所在的包路径为import javax.validation.constraints.*; 千万不要导错包哦&#xff0c;因为他们在好多包里都存在。开发只需引入Spring-web依赖就可以使用了。轻轻松松干掉多余的if-else。 下面我…

Springboot 订餐管理系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 订餐管理系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有 完整的源代码和数据库&…

基于图像识别的迁移学习之一

案例分析 加载数据部分同上一个案例&#xff0c;只需把数据输入到预训练的VGG-16或者ResNet50中。VGG-16的网络结构为右侧图绿色栏所示&#xff0c;其中block1中有2个包含64个卷积核的卷积层&#xff0c;block2包含2个128个卷积核的卷积层&#xff0c;block3有3个包含256个卷积…

ESP32网络开发实例-从LittleFS加载Web页面文件

从LittleFS加载Web页面文件 文章目录 从LittleFS加载Web页面文件1、应用介绍2、软件准备3、硬件准备4、Web页面代码与LittleFS文件系统上传4.1 Web页面代码实现4.2 Web页面代码上传5、Web服务器代码实现在文中,将展示如何构建一个 Web 服务器,为存储在 ESP32 的LittleFS文件系…

LeetCode142:环形链表II

给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数…

Linux知识点 -- 高级IO(一)

Linux知识点 – 高级IO&#xff08;一&#xff09; 文章目录 Linux知识点 -- 高级IO&#xff08;一&#xff09;一、5种IO模型1.IO再理解2.阻塞IO3.非阻塞轮询式IO4.信号驱动IO5.IO多路转接6.异步IO7.同步通信vs异步通信8.阻塞vs非阻塞 二、非阻塞IO1.设置非阻塞的方法2.非阻塞…

44.ES

一、ES。 &#xff08;1&#xff09;es概念。 &#xff08;1.1&#xff09;什么是es。 &#xff08;1.2&#xff09;es的发展。 es是基于lucene写的。 &#xff08;1.3&#xff09;总结。 es是基于lucene写的。 &#xff08;2&#xff09;倒排索引。 &#xff08;3&#xf…

一行代码优化 pdfjs 加载大文件的pdf 速度

目录 介绍问题分析解决结束 介绍 先简单介绍下pdfjs 怎么 去加载pdf文件 import * as PDFJS from pdfjs-dist/legacy/build/pdf PDFJS.GlobalWorkerOptions.workerSrc require(pdfjs-dist/legacy/build/pdf.worker.entry.js)// blobUrl container指 dom 承载pdf 的容器 expo…

stm32学习笔记:中断的应用:对射式红外传感器计次旋转编码器计次

相关API介绍 EXT配置API(stm32f10x exti.h&#xff09; NVIC 配置API (misc.h) 初始化的中断的步骤 第一步&#xff1a;配置RCC时钟&#xff0c;把涉及外设的时钟都打开 第二步&#xff1a;配置GPIO&#xff0c;设置为输入模式 第三步&#xff1a;配置AFIO&#xff0…