HIVE调优

一、简单说一下hive架构里面包含哪些组件?

答:1、用户接口:Client

CLI(hive shell)、JDBC/ODBC(java访问hive)、WEBUI(浏览器访问hive)

2、元数据:Metastore

 

元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等。

3、驱动器 :Driver

(1)解析器(SQL Parser):将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。

(2)编译器(Physical Plan):将AST编译生成逻辑执行计划。

(3)优化器(Query Optimizer):对逻辑执行计划进行优化。

(4)执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是MR/Spark.

 

元数据:我们会把元数据配到MySQL里,即就是说让MySQL来帮我们存储这个元数据。HDFS上有一个文件,都是split,我可以在hive里建一张表,也就相当于做了个映射,HDFS的文件与hive表的映射。这个映射关系就是我们的元数据。

我们写个HQL,最终都要翻译成mapreduce,还是其他的也好,最终都要去HDFS上读数据。那它要去HDFS上哪个路径去读呢,hive就要先去MySQL里面访问下元数据,元数据里有我当前创建的这张表,在哪个路径上面。然后再去HDFS上拿数据。那么访问HDFS也那么一个步骤:找namenode,然后根据namenode返回的datanode去读(HDFS的读写原理)

总结:先去MySQL/Oracle/derby当中加载到元数据,元数据拼接起来路径,然后去HDFS上访问实际的数据(Hive不但连实际数据不自己存,连元数据都是别人存的,当然元数据不仅仅只存路径,还存了其他的东西)

 

二、hive执行过程

执行顺序:SQL解析器->编译器->优化器->执行器

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值