数据仓库分析工具Hive

news2024/11/7 18:12:29

数据仓库分析工具Hive

  • 概述
    • Hive简介
    • Hive与Hadoop生态系统中其他组件的关系
    • Hive与传统数据库的对比
  • Hive系统架构
    • 概述
    • Hive组成模块
    • Hive工作原理
      • SQL语句转换成MapReduce的基本原理
      • Hive中SQL查询转换成MapReduce作业的过程
    • 从外部访问Hive的典型方式
  • Hive的应用
    • Hive在报表中心的应用流程
    • Hive HA原理
  • Impala
    • Impala简介
    • Impala系统架构
    • Impala和Hive的对比
  • Hive编程实践
    • Hive的安装与配置
    • Hive的数据类型
    • Hive基本操作
    • Hive应用

概述

Hive简介

  • Hive是一个构建于Hadoop顶层数据仓库工具
  • 某种程度上可以看作是用户编程接口,本身不存储和处理数据
  • 依赖分布式文件系统HDFS存储数据
  • 依赖分布式并行计算模型MapReduce处理数据
  • 定义了简单的类SQL 查询语言——HiveQL
  • 用户可以通过编写的HiveQL语句运行MapReduce任务
  • 是一个可以提供有效、合理、直观组织和使用数据的模型

Hive的特点:

  • 采用批处理方式处理海量数据
    Hive需要把HiveQL语句转换成MapReduce任务进行运行;
    数据仓库存储的是静态数据,对静态数据的分析适合采用批处理方式,不需要快速响应给出结果,而且数据本身也不会频繁变化。

  • 提供适合数据仓库操作的工具
    Hive本身提供了一系列对数据进行提取转化加载的工具,可以存储、查询和分析存储在Hadoop中的大规模数据
    非常适合数据仓库应用程序维护海量数据、对数据进行挖掘、形成意见和报告等。

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

在这里插入图片描述

  • Hive依赖于HDFS 存储数据
    HDFS作为高可靠性的底层存储,用来存储海量数据
  • Hive依赖于MapReduce 处理数据
    MapReduce对这些海量数据进行处理,实现高性能计算,用HiveQL语句编写的处理逻辑最终均要转化为MapReduce任务来运行
  • Pig可以作为Hive的替代工具
    Pig是一种数据流语言和运行环境,适合用于Hadoop和MapReduce平台上查询半结构化数据集。常用于ETL过程的一部分,即将外部数据装载到Hadoop集群中,然后转换为用户期待的数据格式
  • HBase 提供数据的实时访问
    HBase一个面向列的、分布式的、可伸缩的数据库,它可以提供数据的实时访问功能,而Hive只能处理静态数据,主要是BI报表数据,所以HBase与Hive的功能是互补的,它实现了Hive不能提供功能

Hive与传统数据库的对比

Hive在很多方面和传统的关系数据库类似,但是它的底层依赖的是HDFS和MapReduce,所以在很多方面又有别于传统数据库。
Hive与传统数据库的区别主要体现在以下几个方面:
1)数据插入:在传统数据库中同时支持导入单条数据和批量数据,而Hive中仅支持批量导入数据,因为Hive主要用来支持大规模数据集上的数据仓库应用程序的运行,常见操作是全表扫描,所以单条插入功能对Hive并不实用
2)数据更新:更新是传统数据库中很重要的特性,Hive不支持数据更新。Hive是一个数据仓库工具,而数据仓库中存放的是静态数据,所以Hive不支持对数据进行更新。
3)索引:索引也是传统数据库中很重要的特性,Hive在hive 0.7版本后已经可以支持索引了。但Hive不像传统的关系型数据库那样有键的概念,它只提供有限的索引功能使用户可以在某些列上创建索引来加速一些查询操作,Hive中给一个表创建的索引数据被保存在另外的表中。
4)分区:传统的数据库提供分区功能来改善大型表以及具有各种访问模式的表的可伸缩性,可管理性和提高数据库效率。Hive也支持分区功能,Hive表组织成分区的形式,根据分区列的值对表进行粗略的划分,使用分区可以加快数据的查询速度。
5)执行延迟:因为Hive构建于HDFS与MapReduce上,所以对比传统数据库来说Hive的延迟比较高,传统的SQL语句的延迟少于一秒,而HiveQL语句的延迟会达到分钟级。
6)扩展性:传统关系数据库很难横向扩展,纵向扩展的空间也很有限。相反Hive的开发环境是基于集群的,所以具有较好的可扩展性

Hive系统架构

概述

在这里插入图片描述

Hive组成模块

  • 用户接口模块:包括CLI、HWI、JDBC、ODBC、Thrift Server等
    CLI是Hive自带的一个命令行界面
    HWI是Hive的一个简单网页界面
    JDBC、ODBC以及Thrift Server可以向用户提供进行编程访问的接口
  • 驱动模块:包括编译器、优化器、执行器等
    所有命令和查询都会进入到驱动模块,通过该模块对输入进行解析编译,对需求的计算进行优化,然后按照指定的步骤进行执行。
  • 元数据存储模块(Metastore):是一个独立的关系型数据库
    通常是与MySQL数据库连接后创建的一个MySQL实例,也可以是Hive自带的derby数据库实例。
    元数据存储模块中主要保存表模式和其他系统元数据,如表的名称、表的列及其属性、表的分区及其属性、表的属性、表中数据所在位置信息等。

Hive工作原理

SQL语句转换成MapReduce的基本原理

join转化为MapReduce任务的具体过程:

  • 在Map阶段,表user中记录(uid,name)映射为键值对(uid,<1,name>),表order中记录(uid, orderid)映射为键值对(uid,<2, orderid >)
    1,2是表user和order的标记位
    (1,Lily) ->(1,<1,Lily>), (1,101) ->(1,<2,101>)
  • 在Shuffle、Sort阶段, (uid,<1,name>)和(uid,<2, orderid >)按键uid的值进行哈希,然后传送给对应的Reduce机器执行,并在该机器上按表的标记位对这些键值对进行排序
    (1,<1,Lily>)、(1,<2,101>)和 (1,<2,102>)传送到同一台Reduce机器上,并按该顺序排序
    (2,<1,Tom>)和(2,<2,103>)传送到同一台Reduce机器上,并按该顺序排序
  • 在Reduce阶段,对同一台Reduce机器上的键值对,根据表标记位对来自不同表的数据进行笛卡尔积连接操作,以生成最终的连接结果。
    (1,<1,Lily>)∞(1,<2,101>) ->(Lily, 101)
    (1,<1,Lily>)∞ (1,<2,102>) ->(Lily, 102)
    (2,<1,Tom>) ∞(2,<2,103>) ->(Tom, 103)

在这里插入图片描述

group by转化为MapReduce任务的具体过程:

  • 在Map阶段,表score中记录(rank,level)映射为键值对(<rank,level> , count(rank,level))
    score表的第一片段中有两条记录(A,1),(A,1) ->(<A,1> ,2)
    score表的第二片段中有一条记录(A,1),(A,1) ->(<A,1> ,1)
  • 在Shuffle、Sort阶段, (<rank,level> ,count(rank,level))按键<rank,level>的值进行哈希,然后传送给对应的Reduce机器执行,并在该机器上按<rank,level>的值对这些键值对进行排序
    (<A,1>,2)和 (<A,1>,1)传送到同一台Reduce机器上,按到达顺序排序
    (<B,2>,1>)传送到另一台Reduce机器上
  • 在Reduce阶段,对Reduce机器上的这些键值对,把具有相同<rank,level>键的所有count(rank,level)值进行累加,生成最终结果。
    (<A,1>,2>)+ (<A,1>,1>) ->(A,1,3)
    (<B,2>,1) ->(B,2,1)

在这里插入图片描述

Hive中SQL查询转换成MapReduce作业的过程

在这里插入图片描述
第1步:用户通过命令行CLI或其他Hive访问工具,向Hive输入一段命令或查询
第2步:由Hive驱动模块中的编译器——Antlr语言识别工具,对用户输入的SQL语言进行词法和语法解析,将SQL语句转化为抽象语法树(AST Tree)的形式。
第3步:对该抽象语法树进行遍历,进一步转化成QueryBlock查询单元。QueryBlock是一条最基本的SQL语法组成单元,包括输入源、计算过程和输出三部分。
第4步:再对QueryBlock进行遍历,生成执行操作树(OperatorTree)。
第5步:通过Hive驱动模块中的逻辑优化器对OperatorTree进行优化。
第6步:对优化后的OperatorTree进行遍历,根据OperatorTree中的逻辑操作符生成需要执行的MapReduce任务
第7步:启动Hive驱动模块中的物理优化器,对生成MapReduce任务进行优化,生成最终的MapReduce任务执行计划
第8步:最后,由Hive驱动模块中的执行器,对最终的MapReduce任务进行执行。

注:

  • 当启动MapReduce程序时,Hive本身是不会生成MapReduce算法程序的。
  • Hive通过和JobTracker通信来初始化MapReduce任务,不必直接部署在JobTracker所在的管理节点上执行。

从外部访问Hive的典型方式

除了用CLI和HWI工具来访问Hive外,还可以采用以下几种典型外部访问工具:
1.Karmasphere是由Karmasphere公司发布的一个商业产品。
可以直接访问Hadoop里面结构化和非结构化的数据,可以运用SQL及其他语言,可以用于Ad Hoc查询和进一步的分析;
还为开发人员提供了一种图形化环境,可以在里面开发自定义算法,为应用程序和可重复的生产流程创建实用的数据集。
2.Hue是由Cloudera公司提供的一个开源项目
是运营和开发Hadoop应用的图形化用户界面;
Hue程序被整合到一个类似桌面的环境,以web程序的形式发布,对于单独的用户来说不需要额外的安装。
3.Qubole公司提供了**“Hive即服务”**的方式
托管在AWS平台,这样用户在分析存储在亚马逊S3云中的数据集时,就无需了解Hadoop系统管理;
提供的Hadoop服务能够根据用户的工作负载动态调整服务器资源配置,实现随需计算。

Hive的应用

构建于Hadoop上的数据仓库,除了依赖于Hadoop的基本组件HDFS和MapReduce外,还结合使用了Hive、Pig、HBase与Mahout

在这里插入图片描述

  • Hive和Pig主要应用在报表中心上,Hive主要用于报表分析,Pig主要用于报表中数据的转换工作
  • HBase主要用于在线业务,因为HDFS缺乏随机读写操作,而HBase正是为此开发的,支持实时访问数据
  • Mahout常用于BI(商务智能) ,Mahout提供一些可扩展的机器学习领域的经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序

Hive在报表中心的应用流程

  • 在Hadoop集群上构建的数据仓库由多个Hive进行管理
  • 由HAProxy提供一个接口,对Hive实例进行访问
  • 由Hive处理后得到的各种数据信息,或存放在MySQL数据库中,或直接以报表的形式展现
  • 不同人员会根据所需数据进行相应工作
    其中,HAProxy是Hive HA原理的具体实现。

Hive HA原理

  • 将若干个hive 实例纳入一个资源池,然后对外提供一个唯一的接口,进行proxy relay
  • 对于程序开发人员,就把它认为是一台超强“hive"。每次它接收到一个HIVE查询连接后,都会轮询资源池里可用的hive 资源

Impala

Impala简介

Impala是由Cloudera公司开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase上的PB级大数据
Impala最开始是参照 Dremel系统进行设计的,Impala的目的不在于替换现有的MapReduce工具,而是提供一个统一的平台用于实时查询
与Hive类似,Impala也可以直接与HDFS和HBase进行交互
Hive底层执行使用的是MapReduce,所以主要用于处理长时间运行的批处理任务,例如批量提取、转化、加载类型的任务。
Impala通过与商用并行关系数据库中类似的分布式查询引擎,可以直接从HDFS或者HBase中用SQL语句查询数据,从而大大降低了延迟,主要用于实时查询
Impala和Hive采用相同的SQL语法、ODBC 驱动程序和用户接口。

Impala系统架构

Impala主要由Impalad,State Store和CLI三部分组成。
1)Impalad是Impala的一个进程
负责协调客户端提交的查询的执行,给其他impalad分配任务以及收集其他impalad的执行结果进行汇总
执行其他impalad给其分配的任务,主要就是对本地HDFS和HBase里的部分数据进行操作
2)State Store会创建一个statestored进程
跟踪集群中的Impalad的健康状态及位置信息,用于查询的调度
创建多个线程来处理Impalad的注册订阅和与各类Impalad保持心跳连接
注:当State Store离线后,Impalad一旦发现State Store处于离线时,就会进入recovery模式,并进行反复注册;当State Store重新加入集群后,自动恢复正常,更新缓存数据。
3)CLI给用户提供查询使用的命令行工具
提供了Hue、JDBC及ODBC的使用接口
Impala采用与Hive相同的元数据、SQL语法、ODBC驱动程序和用户接口,这样做的主要原因是在使用同一公司Hadoop产品时,批处理和实时查询的平台是统一的

Impala和Hive的对比

Hive和Impala的不同点总结如下:

  • Hive适合于长时间的批处理查询分析,而Impala适合于实时交互式SQL查询。(适用场景)
  • Hive依赖于MapReduce计算框架,执行计划组合成管道型的MapReduce任务模式进行执行,Impala把执行计划表现为一棵完整的执行计划树,可以更自然地分发执行计划到各个Impalad执行查询。(原理)
  • Hive在执行过程中,如果内存放不下所有数据,则会使用外存,以保证查询能顺序执行完成,而Impala在遇到内存放不下数据时,不会利用外存,所以Impala目前处理查询时会受到一定的限制。(内存)

Hive与Impala的相同点总结如下:

  • Hive与Impala使用相同的存储数据池都支持把数据存储于HDFS和HBase中,其中HDFS支持存储TEXT、RCFILE、PARQUET、AVRO、ETC格式数据,HBase存储表中记录。
  • Hive与Impala使用相同的元数据
  • Hive与Impala中对SQL的解释处理比较相似,都是通过词法分析生成执行计划

Hive编程实践

Hive的安装与配置

1.Hive安装
安装Hive之前需要安装jdk1.6以上版本以及启动Hadoop。
2.Hive配置
Hive有三种运行模式,单机模式、伪分布式模式、分布式模式

Hive的数据类型

1.Hive的基本数据类型

在这里插入图片描述
2.Hive的集合数据类型

在这里插入图片描述

Hive基本操作

1.create:创建数据库、表、视图
2.drop:删除数据库、表、视图
3.alter:修改数据库、表、视图
4. show:查看数据库、表、视图
5. describe:描述数据库、表、视图
6. load:向表中装载数据
7. insert:向表中插入数据或从表中导出数据

Hive应用

在MapReduce的实现中,需要进行编译生成jar文件来执行算法,而在Hive中不需要。
HiveSQL语句的最终实现需要转化成MapReduce任务来执行,这都是由Hive框架自动完成的,用户不需要了解具体实现细节。

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

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

相关文章

jmeter性能测试实战--web程序

目录 前言&#xff1a; 项目背景 测试步骤 前言&#xff1a; JMeter是开源的Java性能测试工具&#xff0c;广泛应用于Web、移动应用程序等领域的性能测试中。在Web应用程序中&#xff0c;JMeter能够模拟多用户并发请求&#xff0c;验证系统在高负载情况下的性能&#xff0c…

【王道考研】王道数据结构与算法详细笔记(全)

目录 第一章 数据结构绪论 1.1 数据结构的基本概念 1.2 数据结构的三要素 1.2.1. 数据的逻辑结构 1.2.2. 数据的存储结构&#xff08;物理结构&#xff09; 1.2.3. 数据的运算 1.2.4. 数据类型和抽线数据类型 1.3 算法的基本概念 1.4 算法的时间复杂度 1.5 算法的空…

再一次安装anygrasp

1&#xff0c;anaconda 2&#xff0c;新建py3.6.2的环境 因为anygrasp 要求 pytorch 1.6 太老了&#xff0c;而且对应的cuda 都是cuda 11以下的版本 我是笔记本带3060&#xff0c;只能cuda11以上。 为了解决这个问题&#xff0c;感谢史驭舒大佬提供的思路 他复现用的环境是…

代码随想录刷题第48天|LeetCode198打家劫舍、LeetCode213打家劫舍II、LeetCode337打家劫舍III

1、LeetCode198打家劫舍 题目链接&#xff1a;198、打家劫舍 1、dp[i]&#xff1a;考虑下标i&#xff08;包括i&#xff09;以内的房屋&#xff0c;最多可以偷窃的金额为dp[i]。 2、递推公式&#xff1a; 如果偷第i房间&#xff0c;那么dp[i] dp[i - 2] nums[i] &#xf…

cvte 前端一面 凉经

cvte 前端一面 凉经 原文面试题地址&#xff1a;https://www.nowcoder.com/discuss/353159272857018368?sourceSSRsearch 1. vuex原理 和vuerouter的原理差不多 2. vuerouter的原理 ​ 首先在main.js中&#xff0c;import router from ‘./router’ 引入在router文件夹下面…

Unity:鼠标【上下左右滑动时】控制相机【左右张望】和【上下抬头】

相机旋转&#xff0c;看着是小事&#xff0c;但是却关系到用户的直观体验。旋转对了母慈子孝&#xff0c;旋转错了则翻江倒海。 一、功能 鼠标左右移动时&#xff0c;控制相机左右转动 鼠标上下移动时&#xff0c;控制相机抬头低头 二、被GPT带翻的过程 你可以在GPT里提问&…

【FPGA零基础学习之旅#7】BCD计数器设计

&#x1f389;欢迎来到FPGA专栏~BCD计数器设计 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;FPGA学习之旅 文章作者技术和水平有限&#xff0c;如果文中出现错误&#xff0c;希望大家能指正…

Virtual Serial Port Driver Pro 11 Crack

Virtual Serial Port Driver 虚拟串行端口驱动程序允许创建大量的虚拟COM端口&#xff0c;并为您提供充分模拟串行端口行为的巨大可能性。虚拟串行端口软件不仅仅是一个简单的COM端口模拟器。它提供了灵活的端口创建、管理和删除&#xff0c;允许测试串行软件&#xff0c;支持控…

Megatron + zero

文章目录 简介3D并行前置知识点&#xff1a;通信算子1. DP 数据并行显存效率优化&#xff08;ZeRO &#xff09;计算效率优化&#xff08;梯度累计减少通信&#xff09; 2. TP tensor并行&#xff08;算子内&#xff09;前置知识点&#xff1a;矩阵分块并行计算MLPself-attenti…

绿色荧光试剂210236-90-1,FITC Tyramide,Fluorescein-Tyramide

●中文名&#xff1a;荧光素酪胺 ●英文名&#xff1a;FITC Tyramide&#xff0c;Fluorescein-Tyramide&#xff0c;FITC TSA &#xff08;文章编辑资料汇总来源于&#xff1a;陕西新研博美生物科技有限公司小编MISSwu&#xff09;​ ●外观以及性质&#xff1a; 荧光素酪胺…

Vue核心

目录 一、初始Vue二、模板语法三、数据绑定四、el和data的两种写法五、MVVM模型六、数据代理七、事件处理八、计算属性九、监视属性十、绑定样式十一、条件渲染十二、列表渲染十三、收集表单数据十四、过滤器十五、内置指令十六、自定义指令十七、生命周期 简介&#xff1a; Vu…

【大数据之路2】分布式文件系统 HDFS

2. 分布式文件系统 HDFS 1. 引入HDFS【面试点】2. HDFS 概述1. HDFS 设计思路2. HDFS 架构3. HDFS 优缺点 3. HDFS 操作HDFS 读写基准测试 1. HDFS Shell 操作【重点】2. HDFS API 操作1. 访问数据1. 获取 FileSystem2. 文件的遍历3. 创建文件夹4. 文件的上传5. 文件的下载 2. …

实验篇(7.2) 07. 通过安全隧道访问指定网站 (FortiClient-SSL) ❀ 远程访问

【简介】通过前面的实验&#xff0c;我们已经了解了SSL VPN的隧道模式。FortiClient客户端拨号后&#xff0c;访问服务器IP的流量&#xff0c;会通过安全隧道到达远端防火墙&#xff0c;并访问DMZ接口下的服务器。那如果我想让更多的访问走安全隧道&#xff0c;但是又不确定是哪…

win11 安装tesseract-ocr

1. OCR OCR&#xff0c;即Optical Character Recognition&#xff0c;光学字符识别&#xff0c;是指通过扫描字符&#xff0c;然后通过其形状将其翻译成电子文本的过程。对于图形验证码来说&#xff0c;它们都是一些不规则的字符&#xff0c;这些字符确实是由字符稍加扭曲变换…

【P52 】JMeter 汇总图(Aggregate Graph)

文章目录 一、汇总图&#xff08;Aggregate Graph&#xff09;参数说明二、准备工作三、测试计划设计 一、汇总图&#xff08;Aggregate Graph&#xff09;参数说明 可以以图形的方式查看事务或者取样器的汇总报告 使用场景&#xff1a;用于评估测试结果 使用频率&#xff1…

Linux——安装Xshell7并使用vim操作文件(vim常用操作+快捷键+踩坑总结)

一、安装Xshell7完成远程登录 由于在安装Xshell6的时候很容易会出现&#xff0c;要求更新&#xff0c;但同时又显示已经是最新的版本的问题。当然出现这个问题的解决方法有很多&#xff0c;但最简单的方法就是直接使用Xshell7版本。实际测试后发现可以正常使用。&#xff08;关…

6个令大喵惊喜的 Python 库

6个令大喵惊喜的 Python 库 在过去的两年里&#xff0c;我一直在广泛使用Python。因此&#xff0c;我一直在寻找令人惊叹的库&#xff0c;可以增强我在数据工程和商业智能项目中的工作。 1.Pendulum Python 中有许多库可用于日期时间&#xff0c;但我发现 Pendulum 在日期的任何…

ChatGPT 使用 拓展资料:吴恩达大咖 Building Systems with the ChatGPT API 链式提示

ChatGPT 使用 拓展资料:吴恩达大咖 Building Systems with the ChatGPT API 链式提示 在本视频中,我们将学习如何通过将多个提示链接在一起,将复杂的任务拆分为一系列更简单的子任务。你可能会想,为什么要将一个任务拆分为多个提示,而你可以像我们在上一个视频中学到的那样…

高级IO -- 多路转接之 select

高级IO – 多路转接之 select 文章目录 高级IO -- 多路转接之 select初识selectselect 函数原型关于fd_set结构 select使用示例编写Sock编写selectService测试 理解select执行过程socket就绪条件读就绪写就绪 select的特点select的缺点select的缺点 初识select 系统提供select…

2023同为测试你的薪资为何比别人低?

软件测试这个行业我见过工作5年依然是初级水平的功能测试&#xff0c;拿着不到1W的薪资&#xff0c;也见过1年时间达到高级自动化水平的大牛&#xff01;拿着20K的薪资。 影响你薪资的有两点&#xff01; 一、你的技术水平高低直接决定你薪资的多少&#xff0c;工作时间长短并…