首页 > 其他 > 详细

Hive基础之Hive简介

时间:2014-04-12 14:40:00      阅读:635      评论:0      收藏:0      [点我收藏+]
    Hive简介
 
    1、Hive定义:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据表,并且提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
  
    2、Hive QL:Hive中定义的类sql称为HQL,熟悉SQL的用户可以非常方便地使用HQL,同时,它也允许熟悉MapReduce的开发者开发自定义的mapper和reducer来处理内建的mapper和reducer无法完成的复杂的分析工作。
 
    3、Hive体系结构
   
      1)用户接口
         用户接口主要有三个,CLI(命令行接口)(最常用),Client,WUI。
         Client是Hive的客户端,用户连接至Hive Server,在启动Client模式的时候,需要指出Hive Server所在节点,并且在该节点启动Hive Server。
         WUI通过浏览器访问Hive。(启动Hive的WEB界面:$HIVE_HOME/bin/hive --service hwi)
      2)元数据存储
         Hive将元数据存储在数据库中,表的列和分区及其属性,表的属性,表的数据所在目录等。
      3)解释器、编译器、优化器、执行器
         解释器、编译器、优化器完成HQL查询语句的词法分析、语法分析、编译、优化及查询计划的生成,生成的查询计划存储在HDFS中,并在随后由MapReduce调用执行。
      4)Hadoop
         Hive的数据存储在HDFS中,大部分的查询由MapReduce完成(不含带 * 的查询)
 
    4、Hive的数据存储
 
      1)Hive没有专门的数据存储格式,也没有为数据建立索引,用户可以非常自由的组织Hive中的表,只需要在创建表的时候告诉Hive数据中列的分隔符和行分隔符,Hive就可以解析数据。
      2)Hive中所有的数据都存储在HDFS中
      3)Hive的数据模型:表(Table)、外部表(External Table)、分区(Partition)、桶(Bucket)
      4)Table的创建过程和数据加载过程可以在同一个语句中完成,在加载数据的过程中,实际数据会被移动到数据仓库目录中,之后对数据的访问会直接在数据仓库目录中完成,删除表时,表中的数据和元数据会被同时删除。
         External Table,加载数据和创建表同时完成,实际数据存储在HDFS后面指定的HDFS路径中,并不会移动到数据仓库目录中,删除External Table时,仅删除元数据,表中的数据不会真正被删除。
   
     5、Hive的技术架构图
        bubuko.com,布布扣
    
       从图中,我们可以知道,Hadoop和MapReduce是Hive架构的根基,Hive架构包括如下组件:CLI(command line interface)、JDBC/ODBC、Thrift Server、WEB GUI、metastore和Driver(Complier、Optimizer和Executor),这些组件我可以分为两大类:服务端组件和客户端组件。
       1)服务端组件:
          (1)Driver组件:包括Complier、Optimizer、Executor。作用:将HQL语句解析、编译优化、生成执行计划,然后调用底层的MapReduce计算框架。
          (2)Metastore组件:元数据服务组件。该组件存储Hive的元数据,Hive的元数据存储在关系数据库中,Hive支持的关系数据库有derby、mysql。元数据对Hive十分重要,所以,Hive支持把Metastore服务独立出来,安装到远程的服务器集群中,从而解耦Hive服务和Metastore服务,保证Hive运行的健壮性。
               Hive的metastore组件是hive元数据集中存放地。Metastore组件包括两个部分:metastore服务和后台数据的存储。后台数据存储的介质就是关系数据库,例如hive默认的嵌入式磁盘数据库derby,还有mysql数据库。Metastore服务是建立在后台数据存储介质之上,并且可以和hive服务进行交互的服务组件,默认情况下,metastore服务和hive服务是安装在一起的,运行在同一个进程当中。我也可以把metastore服务从hive服务里剥离出来,metastore独立安装在一个集群里,hive远程调用metastore服务,这样我们可以把元数据这一层放到防火墙之后,客户端访问hive服务,就可以连接到元数据这一层,从而提供了更好的管理性和安全保障。使用远程的metastore服务,可以让metastore服务和hive服务运行在不同的进程里,这样也保证了hive的稳定性,提升了hive服务的效率。     
          (3)Thrift服务:Thrift是Facebook开发的一个软件框架,它用来进行可扩展且跨语言的服务开发,Hive集成了该服务,能让不同的编程语言调用Hive的接口。
       2)客户端组件  
          (1)CLI:Command Line Interface(命令行接口)
          (2)Thrift客户端:架构图里没有写上Thrift客户端,但是hive架构的许多客户端接口是建立在thrift客户端之上,包括JDBC和ODBC接口。
          (3)WUI:Hive客户端提供了一种通过网页的方式访问Hive所提供的服务,这个接口对应于Hive的WEB接口,使用前需要启动Hive Web Interface服务。
 
     6、Hive的执行流程图
        bubuko.com,布布扣

Hive基础之Hive简介,布布扣,bubuko.com

Hive基础之Hive简介

原文:http://www.cnblogs.com/javagoboy/p/3659194.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!