大数据知识 | hive初识

作者: 彬彬有李学数据 | 来源:发表于2020-03-01 11:37 被阅读0次

    hive简介

    hive架构

    hive是什么

    官网这样说:https://hive.apache.org/

    hive .png

    hive是用来解决海量结构化的日志数据统计问题的,一般是作为建立在Hadoop上的OLAP数据仓库。它是一个客户端,主要是将SQL转化成MR任务,特别适合离线处理。它有着类似于SQL的语法,上手难度小,最特别的是它有着统一的元数据管理便于其他组件也可以使用。

    所以hiv产生的很大的原因就是:非java编程者对hdfs的数据做mapreduce操作!!!

    hive简介

    Hive : 数据仓库。(各种数据源的数据进行统一规整)
    Hive:解释器,编译器,优化器等。
    Hive 运行时,元数据存储在关系型数据库里面。(HDFS当中所有的数据都是文本型数据,没有字段的映射关系)

    c


    hive架构.png

    (1)用户接口主要有三个:CLI,Client 和 WUI。

    • 其中最常用的是CLI,CLI启动的时候,会同时启动一个Hive副本。大都是命令行,用户体验差
    • Client是Hive的客户端,用户连接至Hive Server。在启动 Client模式的时候,需要指出Hive Server所在节点,并且在该节点启动Hive Server。
    • WUI是通过浏览器访问Hive。

    (2)Metastore:Hive将元数据存储在数据库中,如mysql、derby(内存数据库,一般不用)。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

    • 内嵌模式


      内嵌模式.png

      内嵌模式是Hive Metastore的最简单的部署方式,使用Hive内嵌的Derby数据库来存储元数据。但是Derby只能接受一个Hive会话的访问,试图启动第二个Hive会话就会导致Metastore连接失败。

    • 本地模式


      本地模式

    本地模式是Metastore的默认模式(懒人专用模式)。该模式下,单Hive会话(一个Hive 服务JVM)以组件方式调用Metastore和Driver。我们可以采用MySQL作为Metastore的数据库。

    • 远程模式


      远程模式.png

    用于非Java客户端访问元数据库,在服务器端启动MetaStoreServer,客户端利用Thrift协议通过MetaStoreServer访问元数据库
    远程模式将Metastore分离出来,成为一个独立的Hive服务(Metastore服务还可以部署多个)。这样的模式可以将数据库层完全置于防火墙后,客户就不再需要用户名和密码登录数据库,避免了认证信息的泄漏。

    (3)解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行。

    (4)Hive的数据存储在HDFS中,大部分的查询、计算由MapReduce完成(包含*的查询,比如select * from tbl不会生成MapRedcue任务)

    (5)Driver:包含编译器,优化器和执行器
    接收客户端请求-->编译,解释,执行-->提交给yarn执行
    Driver 每一个Hive服务都需要调用Driver来完成HQL语句的翻译和执行。通俗地说,Driver就是HQL编译器,它解析和优化HQL语句,将其转换成一个Hive Job(可以是MapReduce,也可以是Spark等其他任务)并提交给Hadoop集群。

    (6)Operator


    image.png

    Hive的架构

    • 编译器将一个Hive SQL转换操作符
    • 操作符是Hive的最小的处理单元
    • 每个操作符代表HDFS的一个操作或者一道MapReduce作业

    Operator

    • Operator都是hive定义的一个处理过程
      Operator都定义有:
    • protected List <Operator<? extends Serializable >> childOperators;
    • protected List <Operator<? extends Serializable >> parentOperators;
    • protected boolean done; // 初始化值为false

    相关文章

      网友评论

        本文标题:大数据知识 | hive初识

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