美文网首页
1.4.3Hive(理论)

1.4.3Hive(理论)

作者: 寒暄_HX | 来源:发表于2020-03-30 09:55 被阅读0次

    总目录:https://www.jianshu.com/p/e406a9bc93a9

    Hadoop - 子目录:https://www.jianshu.com/p/9428e443b7fd

    什么是HIVE

    HIVE是由Facebook开源(目前移交Apache)用于解决海量结构化日志的数据统计。
    他是一个基于Hadoop的数据仓库工具,可以将结构化数据映射成一张表,并提供类SQL的查询服务。
    HIVE原理本质上是一个将HQL语句转换为MapReduce的转换器。

    原理
    • HIVE处理的数据保存在HDFS上
    • HIVE默认的底层实现是MapReduce(慢,吞吐量大)
    • 程序运行在YARN上

    HIVE可以理解为Hadoop的客户端,让人更方便的操作内部存储的数据。也是Hadoop生态圈中少有的不是分布式框架的组件。毕竟没有听说过谁的chrome浏览器还是分布式的。

    HIVE的优缺点

    HIVE的优点

    • 接口是类SQL语言,提高开发能力,降低学习成本。
    • HIVE的延迟高,因此HIVE做数据分析的场景对实时性要求不高。
    • HIVE的优势在于处理海量数据,对小数据没有优势,毕竟延迟高,底层还是MR。
    • HIVE支持自定义函数,用户可以按照自己的需求自定义函数。

    HIVE的缺点

    • HQL表达能力有限,这是SQL的通病,例如无法表示迭代式算法。
    • 不擅长数据挖掘
    • 效率低,底层是MR。
    • 调优比较困难,是粗粒度处理。

    HIVE的架构原理

    架构图

    HIVE本质是一个客户端,所以在这个框架里面很多东西并不在HIVE中,元数据存放在关系型数据库中,上端是用户的操作,下端是MR。
    之后中间四个器是HIVE的,这四个器的运行顺序是解析器-->编译器-->优化器-->执行器。

    • 解析器
      将SQL字符串转化为抽象语法树AST,这一步使用第三方工具完成,例如antlr。
      之后对AST进行语法分析,例如表是否存在,语法是否错误。

    • 编译器
      将AST编译生成逻辑执行计划。

    • 优化器
      对逻辑执行计划进行优化。

    • 执行器
      将逻辑执行计划转换成可执行的物理计划,既MapReduce。

    ANTLR解析阶段
    ANTER

    HIVE运行原理

    运行原理

    HIVE和数据库的区别

    查询语言的区别

    因为SQL被广泛用于数据仓库方面,因此专门针对HIVE的特性设计了类SQL语言--HQL。
    这使得熟悉SQL的开发者可以方便使用HIVE进行开发。

    数据存放位置的区别

    HIVE是建立在Hadoop之上,所以数据存储在HDFS中。
    数据库则是存储在本地文件系统中。

    数据更新

    由于HIVE是针对数据仓库应用设计的,而数据仓库的内容是读多写少。因此,HIVE不建议对数据仓库进行频繁读写,所有的数据再存入时就要确定好。
    而数据库的数据是要频繁读写的,因此可以使用语句来添加修改数据。

    索引

    HIVE没有索引,也不需要索引。他读取数据就是暴力扫描所有数据
    而数据库需要根据实际应用对一个或多个建立索引,方便读取和检索。

    执行

    HIVE的查询时基于MapReduce实现的,数据库则是有自己的执行引擎。

    执行延迟

    HIVE的读取是直接暴力扫描所有数据,而且底层还是MR,双重延迟,导致HIVE延迟很高,但是这个高是相对的,HIVE可以处理海量数据还保持一个可以接收的延迟。
    在和数据库比较时,HIVE的并行处理能力优势就得到的体现。

    可扩展性

    HIVE的存储是基于Hadoop的HDFS,世界上最大的hadoop集群是Yahoo的集群(4W台服务器,600PB数据,19个集群。)
    而oracle最多也不过百台服务器。

    相关文章

      网友评论

          本文标题:1.4.3Hive(理论)

          本文链接:https://www.haomeiwen.com/subject/xcvuuhtx.html