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

文章目录

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

9.数据仓库Hive

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

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

  • 数据仓库的体系结构:

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

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

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

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

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

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

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

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

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

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

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

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

  • Pig和Hive的区别

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

  • Hive和传统数据库的区别

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

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

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

  • Hive在Fackbook公司的应用

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

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

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

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

  • Hive系统架构

    • Hive对外访问接口

    • 驱动模块(Driver)

    • 元数据存储模块(Metastore)

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

  • Hive HA(High Availability)基本原理

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

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

      • 首先用户访问HA Proxy

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

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

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

    • Join的实现原理

    • 连接操作

      • 编写一个Map处理逻辑

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

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

    • group by的实现原理

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

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

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

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

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

  • 具体分为七步骤

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

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

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

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

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

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

      其包含三个模块:

      • Impalad作用

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

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

      • 作用

    • CLI:用户访问接口

      • 作用

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

    • 0.注册和订阅

    • 1.提交查询

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

    • 3.分发查询任务

    • 汇聚结果

    • 返回结果

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

    • 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数据类型

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

    • 创建数据库

    • 创建表

    • 创建视图

  • 查看数据库

  • 查看表和视图

  • load:向表中装载数据

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

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

相关推荐
SelectDB技术团队8 小时前
顺丰科技:从 Presto 到 Doris 湖仓构架升级,提速 3 倍,降本 48%
大数据·数据库·数据仓库·信息可视化·数据分析·doris·实时分析
静听山水12 小时前
Hive JOIN 优化策略详解
hive
Microsoft Word14 小时前
数据仓库Hive
数据仓库·hive·hadoop
IvanCodes14 小时前
四、Hive DDL表定义、数据类型、SerDe 与分隔符核心
大数据·hive·hadoop
IvanCodes17 小时前
三、Hadoop1.X及其组件的深度剖析
大数据·hadoop·分布式
IvanCodes17 小时前
三、Hive DDL数据库操作
大数据·数据库·hive·hadoop
嘟嘟嘟嘟嘟嘟嘟.18 小时前
ETL介绍
hadoop
IT成长日记1 天前
【Hive入门】Hive数据导入与导出:批量操作与HDFS数据迁移完全指南
hive·hadoop·hdfs·数据导入与导出·load data
洋芋爱吃芋头1 天前
hadoop中的序列化和反序列化(3)
大数据·hadoop·python
心碎土豆块1 天前
hadoop的运行模式
大数据·hadoop·分布式