欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

认识Hive

程序员文章站 2022-03-22 16:42:05
...

什么是Hive:

  • Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL类查询功能。
Hive的认识:
*  Hive基于:
        1):处理的数据储存在HDFS
        2):分析数据底层的实现MapReduce
        3):执行程序运行的YARN

*  构建在Hadoop之上的数据仓库:
        1):使用HQL作为查询借口
        2):使用HDFS存储
        3):使用MapReduce计算

*  本质是:将HQL转换成MapReduce程序
个人理解:
就是吧结构化的数据映射成一张表,然后进行类型SQL语言的数据查询。
    
    HQL底层的MapReduce:

把数据转换成MapReduce用的是Engine机制。

Hive架构理解认识:

认识Hive

用户接口:Client
CLI(hive shell) JDBC/ODBC(java访问hive)WEBUI(浏览器访问hive)
元数据:Metastore
元数据包括:表名,表所属的数据库(默认是default),表的拥有者,列/分去字段,表的类型(是否是外部表),表的
    数据所在目录等。

    默认存储在自带的derby数据库中,推介使用采用MySQL储存Metastore
       * derby是嵌入式数据库,只支持单用户
Hadoop:
使用HDFS进行存纯,使用MapReudce进行计算
驱动器:Driver:
包含:
           解析器,编译器,优化器,执行器

     解析器: 
         将Sql字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr。对AST进行语法分析,比如表
         是否存在,字段是否存在,Sql语义是否有误(比如select中被判定为集合的字段在group by中是否出现)。

     编译器:
         将AST编译生成逻辑执行计划
 
      
     优化器:
         对逻辑执行计划进行优化


     执行器:
          吧逻辑执行计划转换成运行的物理计划,对于HIVE来说,就是MR/TEZ/Spark
个人理解架构:
CLI就是我们写的命令行,通过JDBC这种方式访问HIVE,导入元数据,元数据储存有表名,所数据库(默认default),表的
     拥有者,列明区字段,是否存在外部表,最重要的是java,驱动器。。
         1):解析器;
               解析sql语法,看表是否存在,字段是否存在,sql语句有没有错误,
               解析hql语句
         2) :编译器;
               就是逻辑执行计划  
               把hql翻译成MapReduce

         3):优化器;
               然后进行优化
               优化sql语句

         4):执行器
              运行在yarn平台之上

      然后驱动器做完以后,就会用hadoop底层的的MapReduce来计算,下一步储存到HDFS,所以,HIVE就是基于hadoop之上。
Hive优点与使用场景:
操作借口与采用Sql语法,提供快速的开发的能力(简单,容易上手)
   避免了去写MapReudce,减少开发人员的学习成本。

   统一的元数据管理,可与impala/spark等共享元数据

   易扩展(HDFS+MapReduce):可以扩展集群规模,支持自定义函数)
   离线的数据处理:比如,日志分析,海量结构化数据离线分析

   Hive执行延迟比较高,因此hive常用与数据分析的,对实用性要求不高的场合
   Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive执行延迟比较高。