HIVE 基本概念

来源:互联网 发布:转行做程序员 编辑:程序博客网 时间:2024/05/16 15:29

Hive架构


这里写图片描述

hive架构图

  • hive组件

    • 用户接口
      CLI、JDBC/ODBC和WebGUI。其中,CLI为shell命令行;JDBC/ODBC是Hive的JAVA实现,与传统数据库JDBC类似;WebGUI是通过浏览器访问Hive。

    • 元数据存储
      Hive 将元数据存储在数据库中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

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

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

  • Hive与Hadoop的关系
    Hive利用HDFS存储数据,利用MapReduce查询数据


    Hive与Hadoop关系

    Hive与Hadoop关系图

  • Hive的数据存储
    1、Hive中所有的数据都存储在 HDFS 中,没有专门的数据存储格式(可支持Text,SequenceFile,ParquetFile,RCFILE等)

    2、只需要在创建表的时候告诉 Hive 数据中的列分隔符和行分隔符,Hive 就可以解析数据。

    3、Hive 中包含以下数据模型:DB、Table,External Table,Partition,Bucket。

    • db:在hdfs中表现为${hive.metastore.warehouse.dir}目录下一个文件夹
    • table:在hdfs中表现所属db目录下一个文件夹
    • external table:与table类似,不过其数据存放位置可以在任意指定路径
    • partition:在hdfs中表现为table目录下的子目录
    • bucket:在hdfs中表现为同一个表目录下根据hash散列之后的多个文件
  • Hive操作符Operator
    • 编译器将一个Hive QL转换操作符
    • 操作符是Hive的最小的处理单元
    • 每个操作符代表HDFS的一个操作或者一道MapReduce作业Operator
    • Operator都是hive定义的一个处理过程

    • Operator都定义有:
        • protected List <Operator<? extends Serializable >> childOperators;
        • protected List <Operator<? extends Serializable >> parentOperators;
        • protected boolean done; // 初始化值为false
        • 所有的操作构成了 Operator图,hive正是基于这些图关系来处理诸如limit, group by, join等操作


HiveSql执行流程

1、 提交sql ,交给驱动

2、驱动编译,解析相关的字段表信息

3、去metastore查询相关的信息,返回字段表信息

4、编译返回信息 发给驱动

5、驱动发送一个执行计划,交给执行引擎

6.0、DDLs 对数据库表的操作的 直接和metastore交互
        create table tab(name string);

6.1、把job交给job tracker 让task tracker执行 返回执行信息

6.2、完成job返回数据信息,找namenode查数据

6.3、namenode交互
        select count(1) from tab;

6.1、dfs ops 直接和直接去数据
        select * from tab;

7、返回结果信息集

1 0
原创粉丝点击