认识Hive

什么是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架构理解认识:

用户接口: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执行延迟比较高。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值