你好,游客 登录 注册 搜索
背景:
阅读新闻

Hive运行架构及配置部署

[日期:2014-08-13] 来源:Linux社区  作者:mycafe [字体: ]

Hive 运行架构

  • 由Facebook开源,最初用于解决海量结构化的日志数据统计问题:ETL工具;

  • 构建于Hadoop的HDFS和MapReduce智商,用于管理和查询结构化/非结构化数据的数据仓库;
  • 设计目的是让SQL技能良好,但Java技能较弱的分析师可以查询海量数据:
  • 使用HQL作为查询接口;
  • 使用HDFS作为存储底层;
  • 使用MapReduce作为执行层;
  • 2008年facebook把Hive项目贡献给Apache;

基于Hadoop集群的Hive安装 http://www.linuxidc.com/Linux/2013-07/87952.htm

Hive内表和外表的区别 http://www.linuxidc.com/Linux/2013-07/87313.htm

Hadoop + Hive + Map +reduce 集群安装部署 http://www.linuxidc.com/Linux/2013-07/86959.htm

Hive本地独立模式安装 http://www.linuxidc.com/Linux/2013-06/86104.htm

Hive学习之WordCount单词统计 http://www.linuxidc.com/Linux/2013-04/82874.htm

1、Hive的缺点

Hive的HQL表达能力有限:有些复杂运算用HQL不易表达;

Hive效率低:Hive自动生成MR作业,通常不够智能;HQL调优困难,粒度较粗;可控性差;

2、Hive系统架构

1) 元数据存储(Metastore):Hive的数据由两部分组成:数据文件和元数据;

元数据存储,Derby只能用于一个Hive连接,一般存储在MySQL。

2)驱动(Driver):编译器、优化器、执行器;

用户通过下面的接口提交Hive给Driver,由Driver进行HQL语句解析,此时从Metastore中获取表的信息,先生成逻辑计划,再生成物理计划,再由Executor生成Job交给Hadoop运行,然后由Driver将结果返回给用户。

编译器(Hive的核心):1,语义解析器(ParseDriver),将查询字符串转换成解析树表达式;2,语法解析器(SemanticAnalyzer),将解析树转换成基于语句块的内部查询表达式;3,逻辑计划生成器(Logical Plan Generator),将内部查询表达式转换为逻辑计划,这些计划由逻辑操作树组成,操作符是Hive的最小处理单元,每个操作符处理代表一道HDFS操作或者是MR作业;4,查询计划生成器(QueryPlan Generator),将逻辑计划转化成物理计划(MR Job)。

优化器:优化器是一个演化组件,当前它的规则是:列修剪,谓词下压。

执行器:编译器将操作树切分成一个Job链(DAG),执行器会顺序执行其中所有的Job;如果Task链不存在依赖关系,可以采用并发执行的方式进行Job的执行。

3)接口:CLI(Common LineInterface)、HWI(Hive WebInterface)、ThriftServer;

CLI:为命令行工具,默认服务。bin/hive或bin/hive--service cli;

HWI:为Web接口,可以用过浏览器访问Hive,默认端口9999,启动方式为bin/hive --service hwi;

ThriftServer:通过Thrift对外提供服务,默认端口是10000,启动方式为bin/hive --service hiveserver;

 

4)其他服务(bin/hive --service -help):metastore(bin/hive --service metastore)、hiveserver2(bin/hive --service hiveserver2),HiveServer2是HieServer改进版本,它提供给新的ThriftAPI来处理JDBC或者ODBC客户端,进行Kerberos身份验证,多个客户端并发,HS2还提供了新的CLI:BeeLine,是Hive 0.11引入的新的交互式CLI,基于SQLLine,可以作为Hive JDBC Client 端访问HievServer2,启动一个beeline就是维护了一个session.

5)Hadoop:用HDFS进行存储,用MapReduce进行计算;

表中的一个Partition对应表下的一个子目录,每一个Bucket对应一个文件;Hive的默认数据仓库目录是/user/hive/warehouse,在hive-site.xml中由hive.metastore.warehouse.dir项定义;

3、Hive的运行过程

由客户端提供查询语句,提交给Hive,Hive再交给Driver处理(1,Compiler先编译,编译时要从Metastore中获取元数据信息,生成逻辑计划;2,生成物理计划;3,由Driver进行优化;4,Executor执行时对物理计划再进行分解成Job,并将这些Job提交给MR的JobTracker运行,提交Job的同时,还需要提取元数据信息关联具体的数据,这些元数据信息送到NN),JT拆分成各个Task进行计算,并将结果返回或写入HDFS。

4、Hive的数据模型

Database

Table

Partition

Bucket

File(文件格式:TextFile,RCFile,),

数据类型,Numeric(Tinyint,Smallint,Bigint,Float,Double,Decimal(Hive 0.13.0可以自定义精度进行扩展)),Date/Time(TIMESTAMP,DATE(0.12.0支持)),String(STRING,VARCHAR(0.12),CHAR(0.13)),Misc(BOLLEAN,BINARY),Complex(ARRAY、MAP、STRUCT、UNIONTYPE)

更多详情见请继续阅读下一页的精彩内容http://www.linuxidc.com/Linux/2014-08/105508p2.htm

linux
相关资讯       Hive配置  Hive架构 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款