• 数据仓库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安装
    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

  • 相关阅读:
    涉及 GitHub、GitLab,研究人员发现 70 个 Web 缓存中毒漏洞;微软:许多攻击者仍对 Log4j 漏洞加以利用;VS 2022 新版发布 | 开源日报
    Cesium加载地图服务
    【从零开始学微服务】02.初识微服务
    小知识:SQL Monitor Report的使用
    Concurrent
    左旋氧氟沙星/载纳米雄黄磁性/As2O3磁性Fe3O4/三氧化二砷白蛋白纳米球
    常用的数字格式代码
    基于stm32单片机的按键智能电子密码锁
    零基础入门Vue之画龙点睛——再探监测数据
    Json-server 模拟后端接口
  • 原文地址:https://blog.csdn.net/weixin_44911248/article/details/133786057