首页 > 其他分享 >1.hive 简介

1.hive 简介

时间:2023-08-13 21:33:52浏览次数:39  
标签:简介 Driver MapReduce Hive 查询 hive 数据

目录

1.1 hive出现的原因

FaceBook网站每天产生海量的结构化日志数据,为了对这些数据进行管理,并且因为机器学习的需求,产生了hive这门技术,并继续发展成为一个成功的Apache项目(hive是由Facebook开源用于解决海量结构化日志的数据统计)==》广泛应用原因:

  • 传统数仓处理海量数据的计算处理性能不足,存储能力有限,无法处理不同类型数据
  • mapreduce 编程的不便性
  • HDFS的文件适合存储的是非结构化的或半结构化数据,缺少schema(字段名和数据类型等)

什么是hive

  • 构建在Hadoop之上的数据仓库工具
  • Hive定义了一种类SQL查询语言:HQL(类似SQL但不完全相同)
  • 通常用于进行离线数据处理(采用MapReduce)
  • 底层支持多种不同的执行引擎(Hive on MapReduce、Hive on Tez、Hive on Spark)
  • 支持多种不同的压缩格式、存储格式以及自定义函数(压缩:GZIP、LZO、Snappy、BZIP2.. ; 存储:TextFile、SequenceFile、RCFile、ORC、Parquet ; UDF:自定义函数)
  • 本质:Hive的本质是将HQL转换成MapReduce任务,完成整个数据的分析查询,减少编写MapReduce的复杂度。

hive 的作用,为什么要使用Hive 优点

  1. hive 提供了一个类SQL的方式,可以让我们快速而简单的利用MapReduce计算引擎(模型,框架)
  2. 降低了用户学习和应用程序迁移到hadoop成本,把精力关注于查询本身。
  3. 统一的元数据管理(可与Presto/Impala/SparkSQL等共享数据)
  4. 具有超大数据集的计算/存储扩展能力(依赖MR计算,HDFS存储)

hive的缺点,不能使用场景

  1. 如果是基于MapReduce 的计算模型,不适合流式数据即实时数据,因为存在延时,mapredue 任务启动到计算相对需要消耗较多的时间
    ,所以适合联机的分析处理,不适合联机事务处理,且在大规模的数据上占优势

  2. 基于hadoop以及HDFS设计上约束,不支持记录级别的更新,插入和删除操作,一般是通过查询生成新表,或导入到文件中

  3. Hive自动生成的MapReduce作业,通常情况下不够智能化,Hive调优比较困难,粒度较粗

  4. 迭代式算法无法表达

hive 工作的原理

Alt text

  • ExecuteQuery(执行查询操作):命令行或Web UI之类的Hive接口将查询发送给Driver(任何数据驱动程序,如JDBC、ODBC等)执行;
  • GetPlan(获取计划任务):Driver借助编译器解析查询,检查语法和查询计划或查询需求;
  • GetMetaData(获取元数据信息):编译器将元数据请求发送到Metastore(任何数据库);
  • SendMetaData(发送元数据):MetaStore将元数据作为对编译器的响应发送出去;
  • SendPlan(发送计划任务):编译器检查需求并将计划重新发送给Driver。到目前为止,查询的解析和编译已经完成;
  • ExecutePlan(执行计划任务):Driver将执行计划发送到执行引擎;
  • FetchResult(拉取结果集):执行引擎将从datanode上获取结果集;
  • SendResults(发送结果集至driver):执行引擎将这些结果值发送给Driver;
  • SendResults (driver将result发送至interface):Driver将结果发送到Hive接口(即UI)

Alt text

驱动器(Driver)

  • 解析器(SQLParser): 将HQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行 语法 分析,比如表是否存在、字段是否存在、SQL语义是否有误。
  • 编译器(Compiler): 对hql语句进行词法、语法、语义的编译(需要跟元数据关联),编译完成后会生成一个执行计划。 hive上就是编译成mapreduce的job。
  • 优化器(Optimizer): 将执行计划进行优化,减少不必要的列、使用分区、使用索引等。优化job。
  • 执行器(Executer): 将优化后的执行计划提交给hadoop的yarn上执行。提交job

参考资料
hive简介
Hive基本原理,整体介绍
hvie 的架构和原理

标签:简介,Driver,MapReduce,Hive,查询,hive,数据
From: https://www.cnblogs.com/Spring-Rain/p/17627312.html

相关文章

  • 问题排查Hive本地计算模式失败
    问题排查Hive本地计算模式失败查看hive.log后发现是javaspaceheap,也就是java内存溢出。解决方案:配置yarn集群的资源分配。由于是本地计算,因此container一定是申请在本地的,限制AM申请container容器资源的大小很重要。机器节点的资源可用通过配置NodeManager,所以第一步是......
  • 问题排查Hive本地计算模式失败
    问题排查Hive本地计算模式失败查看hive.log后发现是javaspaceheap,也就是java内存溢出。解决方案:配置yarn集群的资源分配。由于是本地计算,因此container一定是申请在本地的,限制AM申请container容器资源的大小很重要。机器节点的资源可用通过配置NodeManager,所以第一步是......
  • 【HIVE系列】01-HIVE 常用操作
    title:【HIVE系列】01-HIVE常用操作date:2018-11-1320:20:31update:2018-11-1517:10:43categories:-大数据技术-hivetags:[hive]参考资料:https://blog.csdn.net/wisgood/article/details/17376393http://ju.outofmemory.cn/entry/1764081.数据库操作(增删......
  • 关于hive的字段注释乱码解决
    今天我发现我的DBeaver执行完sql后,表的注释乱码,深究下来是要去设置hive的编码,要不注释是乱码。教程:hive设置中文编码格式utf-8_hive建表指定字符集_2021xyz666的博客-CSDN博客......
  • hive如何提高查询性能
    本文会通过四个方面介绍Hive性能调优,主要包括:√性能调优工具√设计优化策略√数据存储优化√作业优化技巧1.合并中间表一个日志文件中,每一行记录,会有很多很多字段,四五十个字段很正常。实际分析中,常常使用少数几个字段将原始的表中数据,依据业务需求提取出要分析的字段,数据放......
  • hadoop 简介
    目录hadoop的三大组件和关系1.HDFS:分布式文件系统hdfs的特点和不适用使用场景2.MapReduce:计算模型(分布式并行计算框架)2.1概念浅析2.2模型原理2.3MadReduce的特点3.Yarn:hadoop的三大组件和关系1.HDFS:分布式文件系统hdfs的特点和不适用使用场景1.1HDFS文件系统......
  • python简介
    python简介1.python的产生与应用python于1989年圣诞节期间由吉多·范罗苏姆(GuidovanRossum)(中文名字:龟叔)为打发时间开发的一个新脚本解释程序,作为ABC语言的一种继承。(龟叔:2005年加入谷歌至2012年,2013年加入Dropbox直到现在,依然掌握着Python发展的核心方向,被称为仁慈的独裁者)。......
  • 第一章 简介
    R语言简介1.1R是什么R语言是一种开源的脚本语言,也是一种为统计计算和绘图而生的语言和环境,在数据分析与预测以及数据可视化等方面享有良好的声誉。1993年,R的最初版本发布给研究人员使用,解决复杂数据统计分析任务,并用多样化的图形来展示结果。R的名字来源于它当时的两名开发......
  • 无标度网络简介
    一个无标度网络是指其度分布至少在渐近意义下遵循幂律。这意味着,网络中节点的比例P(k)随着度k的增加而呈幂律分布。这种分布在数学上被称为幂律分布,其形式为P(k)∝k^(-γ),其中γ是某个指数。这种分布形式在度k增加时缓慢下降,增加了发现具有非常大度的节点的可能性。这些节点被称为......
  • 幂律分布简介
    幂律分布与其他类型的分布的不同之处在于:1.分布形式:幂律分布的形式为P(x)∝x^(-α),其中α是指数。与幂律分布不同,其他类型的分布可能具有不同的形式,如正态分布、泊松分布、指数分布等。2.尾部特征:幂律分布的尾部非常重,即存在极端值。相比之下,其他类型的分布的尾部可能较轻,即极......