大数据技术原理与应用学习笔记(九)

  • 本系列历史文章
  • 数据仓库Hive
    • 数据仓库概念
    • Hive简介
      • Hive系统架构
        • 用户接口模块
      • Hive HA基本原理——(高可用性)
    • Hive的工作原理
      • 由SQL转换为MapReduce的工作原理
    • Impala——开源大数据分析引擎
      • Impala简介
      • Impala架构
        • Impalad
        • State Store
        • CLI——执行查询的命令行工具
      • Impala执行过程
      • Hive与Impala的比较
    • Hive编程实践

本系列历史文章

大数据技术原理与应用学习笔记(一)
大数据技术原理与应用学习笔记(二)
大数据技术原理与应用学习笔记(三)
大数据技术原理与应用学习笔记(四)
大数据技术原理与应用学习笔记(五)
大数据技术原理与应用学习笔记(六)
大数据技术原理与应用学习笔记(七)
大数据技术原理与应用学习笔记(八)

数据仓库Hive

数据仓库概念

数据仓库: 数据仓库是一个面向主题的集成的相对稳定的、反映历史变化的数据集合,用来支撑管理决策。

数据仓库的体系结构包括:数据源、数据存储和管理、分析、挖掘引擎及应用。

传统数据仓库面临的挑战:

  • 无法满足快速增长的海量数据存储需求
  • 无法有效处理不同类型的数据
  • 计算和处理能力不足

Hive简介

Hive——构建在Hadoop之上的数据仓库工具。
Hive本身并不存储处理数据

  • 依赖于HDFS存储
  • 依赖于MapReduce处理

Hive采用HiveQL语言
Hive两方面特性:

  • 采用批处理方式处理海量数据
  • Hive提供了一系列对数据进行提取、转换、加载(ETL)的工具

Hive与其他组件的关系:

  • Pig可替代Hive用于数据仓库的ETL环节
  • Hive主要用于数据仓库海量数据的批处理分析
  • HBase支持实时数据访问,与Hive互补

Hive与传统数据库的对比:
如下表:

对比项目 Hive 传统数据库
数据存储 HDFS 本地文件系统
数据插入 支持批量导入 支持单条和批量导入
数据更新 不支持 支持
索引 支持 支持
分区 支持 支持
执行引擎 MapReduce、Tez、Spark 使用自身引擎
执行延迟
扩展性 有限

Hive系统架构

用户接口模块

用户接口模块主要包括:

  1. 用户接口模块
  • CLI——命令行
  • HWI——Hive的Web接口
  • JDBC和ODBC——开放数据库连接接口
  • Thrift Server——基于Thrift架构开发的接口
  1. 驱动模块
    包含编译器、优化器、执行器。负责把HiveQL语句转换成MapReduce作业。
  2. 元数据存储模块
    独立的关系型数据库。

Hive HA基本原理——(高可用性)

Hive HA基本原理如图所示:

在Hive HA中,在Hadoop集群上构建的数据仓库是由多个Hive实例进行管理的,这些Hive实例被纳入一个资源池中,并由HAProxy提供一个统一的对外接口。客户端的查询请求首先访问HAProxy,由HAProxy对访问请求进行转发。HAProxy收到请求后,会轮询资源池里可用的Hive实例,执行逻辑可用性测试。如果某个Hive实例逻辑可用,就会把客户端的访问请求转发到该Hive实例,如果该Hive实例逻辑不可用,就把它放入黑名单,并继续从资源池取出下一个Hive实例进行逻辑可用性测试,如果重启成功,就再次放入资源池中。

Hive的工作原理

由SQL转换为MapReduce的工作原理

  • Input(SQL)转换为抽象语法树(AST)
  • AST转换成查询块(Query Block)
  • 将Query Block转换成逻辑查询计划
  • 重写逻辑查询计划,合并优化等,减少MapReduce的任务数量
  • 转换成MapReduce作业
  • 优化生成最终版的执行计划。
  • 执行并输出

Impala——开源大数据分析引擎

Impala简介

Impala是由Cloudera公司开发的新型查询系统。Impala的目的不在于替换现有的MapReduce工具,而是提供一个统一的平台用于实时查询。

  • 与Hive类似,Impala也可以直接与HDFS和HBase进行交互。
    Hive底层执行使用的是MapReduce,所以主要用于处理长时间运行的批处理任务,例如批量提取、转化、加载类型的任务。
  • Impala通过与商用并行关系数据库中类似的分布式查询引擎,可以直接从HDFS或者HBase中用SQL语句查询数据,从而大大降低了延迟,主要用于实时查询。
  • Impala和Hive采用相同的SQL语法、ODBC 驱动程序和用户接口。

Impala架构

Impala主要由3部分构成:Impalad、State Store、CLI

Impalad

  • Query Planner
  • Query Coordinator
  • Query Exec Engine

作用:

  • 协调Client提交的查询的执行
  • 给其他Impalad分配任务
  • 收集其他Impalad执行结果并汇总

State Store

创建一个State Stored进程,负责收集分布在集群中各个Impalad进程的资源信息用于查询调度。

CLI——执行查询的命令行工具

Notes:

  • Impala元数据直接存储在Hive中
  • 与HIve相同的元数据,相同的SQL,相同的ODBC驱动程序和用户接口
  • 目的:可以在Hadoop统一部署Hive/Impala使同时满足批处理和实时处理

Impala执行过程

执行过程可简略记为:

  • 注册和订阅
  • 提交查询
  • 获取元数据与数据地址
  • 分发查询任务
  • 汇聚结果
  • 返回结果

Hive与Impala的比较

不同点:

  • Hive适合长时间批处理查询分析,而Impala适合实时交互式SQL查询;
  • Hive依赖于MapReduce,而Impala把执行计划表现为完整的执行计划树;
  • Hive内存不够时,利用外存,而Impala在内存不够时,也不会用外存(适合小规模);

相同点:

  • Hive与Impala使用相同的存储数据池,支持存入HDFS、HBase
  • Hive与Impala使用相同的元数据
  • Hive与Impala中对SQL解释处理较为相似(都是通过词法分析生成执行计划)

在实际应用中,由于Hive和Impala的不同特性,可以先由Hive进行数据转换,在用Impala进行数据分析。

Hive编程实践

关于Hive的编程实践可参考厦大数据库博客:基于Hadoop的数据仓库Hive 学习指南

大数据技术原理与应用学习笔记(九)相关推荐

  1. 《大数据技术原理与应用》笔记

    一.大数据概述 大数据的特征(4V): 1.Volume,数据量大 2.Variety,数据类型多 大数据由结构化和非结构化数据组成: 10%的结构化数据,存储在数据库中: 90%的非结构化数据,与人 ...

  2. 关于大数据技术原理与应用的学习(6)

    学习目标: 大数据技术原理与应用 学习内容: 6云数据库 6.1概述 6.2产品 6.3UMP系统 6.4Amazon云数据库 6.5微软云数据库SQL Azure 学习时间: 2022/03/31 ...

  3. 关于大数据技术原理与应用的学习(1)

    学习目标: 大数据技术原理与应用 学习内容: 大数据概述 1.1大数据时代 1.2大数据的概念和影响 1.3大数据的应用 1.4大数据的关键技术 1.5大数据与云计算.物联网的关系 学习时间: 202 ...

  4. 关于大数据技术原理与应用的学习(4)

    学习目标: 大数据技术原理与应用 学习内容: 分布式数据库HBase 4.1HBase简介 4.2HBase数据模型 4.3HBase实现原理 4.4HBase运行机制 4.5HBase应用方案 4. ...

  5. 关于大数据技术原理与应用的学习(3)

    学习目标: 大数据技术原理与应用 学习内容: 分布式文件系统HDFS 3.1HDFS简介 3.2HDFS相关概念 3.3HTFS体系结构 3.4HTFS存储元原理 3.5HDFS数据读写 3.6HDF ...

  6. 关于大数据技术原理与应用的学习(5)

    学习目标: 大数据技术原理与应用 学习内容: 5.NoSQL数据库 例如: 5.1NoSQL数据库 5.2与关系数据库的比较 5.3四大类型 5.4理论基石 5.5从NoSQL到NewSQL 5.6文 ...

  7. 大数据第二阶段Python基础编程学习笔记(待完善)

    大数据第二阶段Python基础编程学习笔记(待完善) 第一章 Python基础语法 3.8 1-1Python概述 python基础部分: ●Python基础语法: 标识符,关键字,变量,判断循环.. ...

  8. [渝粤教育] 厦门大学 大数据技术原理与应用 参考 资料

    教育 -大数据技术原理与应用-章节资料考试资料-厦门大学[] 第1章 大数据概述 单元测验 1.[单选题]第三次信息化浪潮的标志是: A.个人电脑的普及 B.互联网的普及 C.云计算.大数据.物联网技 ...

  9. 大数据技术原理与应用课后题(林子雨)

    大数据技术原理与应用(林子雨) 第1章 大数据概述 1单选(2分) 第三次信息化浪潮的标志是: A.个人电脑的普及 B.云计算.大数据.物联网技术的普及 C.虚拟现实技术的普及 D.互联网的普及 正确 ...

  10. 大数据技术原理与应用 第一篇 大数据基础

    目录 第一章 大数据概述 一. 大数据时代 1.1 三次信息化浪潮 1.2 信息科技发展 1.3 数据产生方式的变革 1.4 大数据的影响 二. 大数据的概念 2.1 大数据的特征 2.2 大数据关键 ...

最新文章

  1. window.event.srcElement
  2. 同一局域网内_Pycharm访问服务器
  3. wpf项目源代码_C# WPF开源控件库:MahApps.Metro
  4. 表单令牌阻止数据重复提交
  5. asp.net站点时间格式与系统时间格式不一致。手动修改
  6. openlayers加载svg,如何在OpenLayers-3中将SVG图像用作地图标记?
  7. python怎么打开文件解释_python怎么打开文件的路径?
  8. DDL/DML/DCL/TCL基本概念
  9. 高校校园网络设计与实现
  10. Keil MDK5硬件仿真之基本介绍
  11. GPS经纬度坐标转UTM坐标(c++)
  12. WPF界面框架的设计
  13. Wellcome Sanger研究所选择Arima Genomics作为HiC技术合作伙伴; 公司宣布针对高覆盖HiC的抢先体验活动
  14. 对于拖延症的最好方法
  15. C# winform excel根据当前选中内容,自动插入/编辑批注
  16. 登陆服务器时显示安全登陆,怎么登陆服务器,都有哪些安全问题?
  17. 联盛德W806-KIT开发板试用评测系列之二:ADC 功能使用与测试
  18. 基于Java毕业设计志愿者信息管理系统源码+系统+mysql+lw文档+部署软件
  19. Excel文本处理函数
  20. 论项目管理与可行性分析的重要性

热门文章

  1. Adobe CS5 序列号及配置方法
  2. VB数据库中EOF和BOF的认识与用法
  3. visualroute 很棒的一款工具
  4. 通俗理解同步IO\异步IO
  5. Linux下通过ssh上传下载文件
  6. 简单版俄罗斯方块程序代码c语言,俄罗斯方块C语言程序代码.DOC
  7. Windows 7 64位系统下安装Cy+NS2经验(成功安装)
  8. Makefile入门教程
  9. Python数据分析第二周总结
  10. Allegro走等长线设置