1.入口$HIVE_HOME/bin/ext/cli.sh

  • 调用org.apache.hadoop.hive.cli.CliDriver类进行初始化过程
  • 处理-e,-f,-h等信息,如果是-h,打印提示信息,并退出
  • 读取hive的配置文件和$HIVE_HOME/bin/.hiverc文件,设置HiveConf
  • 创建一个控制台,进入交互模式

2.读取命令processLine分割处理

  • 在交互模式下,processLine方法读取命令行,以";"分割成多个命令
  • 然后交给processCmd(cmd)处理

3.命令的预处理processCmd

  根据输入命令的第一个记号(Token),分别进行处理

  • Quit/Exit系统正常退出
  • !开头的执行Linux操作系统命令
  • source 开头的读取外部文件并执行文件中的命令
  • list 列出缓存中的jar/file/archive
  • 其他命令提交给CommandProcess处理

4.命令的预处理CommandProcess

  根据输入命令的第一个记号,分别进行处理

  • set 调用SetProcess类,设置hive的环境参数,并保存在该进程的HiveConf中
  • dfs 调用DfsProcess类,调用hadoop的shell接口,执行hadoop的相关命令
  • add 调用AddResourceProcess类,导入外部的资源,只对该进程有效
  • delete 与add对应,删除资源
  • 其他:提交给Driver类,进行下一步处理

5.命令的处理(Driver类的run方法)

  • 编译器Compile:首先检查SQL中表和列是否存在,再利用第三方工具Antlr检查SQL语法是否正确,将正确的SQL解析成抽象语法树(AST),最后将AST编译成逻辑执行计划Logical Paln
  • 优化器Optimizor:将逻辑执行计划转化成可以运行的物理执行计划Physical Plan,即MR任务执行,并对其进行优化
  • 执行器Executor:调用genMapRed()方法执行优化后的MR任务
  • 获取读写锁:对操作的表获取一个读写锁acquireReadWriteLocks
  • 执行execute:将生成的Task提交hadoopAPI 处理,返回任务的执行时间和状态(成功or失败)

6.获取执行的结果

  • 任务执行失败,抛出异常
  • 执行成功后,调用Driver的GetReuslt方法,顺序打开每一个输出文件
  • 获取每一行的输出,并打印到控制台

7.执行清理

  • 清理hive执行过程中的中间文件和临时文件
  • 退出该条命令的执行,返回控制台并等待下一条命令的输入

Hive的执行生命周期的更多相关文章

  1. 微信小程序onLaunch、onLoad执行生命周期

    原文转载自:微信小程序onLaunch.onLoad执行生命周期 1.需求:先执行App的onLaunch添加验证权限等,再执行Page里的onLoad. 2.问题:还没有等onLaunch执行完成, ...

  2. HTML,javascript,image等加载,DOM解析,js执行生命周期

  3. .NET MVC执行过程 及 生命周期步骤

    1.网址路由比对 2.执行Controller与Action 3.执行View并返回结果 Request 请求到来 IIS 根据请求特征将处理权移交给 ASP.NET UrlRoutingModule ...

  4. react教程 — 组件的生命周期 和 执行顺序

    一.组件执行的生命周期:                  参考  https://www.cnblogs.com/soyxiaobi/p/9559117.html  或  https://www.c ...

  5. React源码剖析系列 - 生命周期的管理艺术

    目前,前端领域中 React 势头正盛,很少能够深入剖析内部实现机制和原理.本系列文章希望通过剖析 React 源码,理解其内部的实现原理,知其然更要知其所以然. 对于 React,其组件生命周期(C ...

  6. [转]: 两分钟彻底让你明白Android Activity生命周期(图文)!

    转自:http://blog.csdn.net/android_tutor/article/details/5772285 大家好,今天给大家详解一下Android中Activity的生命周期,我在前 ...

  7. MVC网址路由与生命周期

    这篇写得比较详细,所以我收藏一下. 转载自: http://www.cnblogs.com/Eleanore/archive/2012/11/23/2783061.html 一.网址路由 1.1  比 ...

  8. Android生命周期详细说明

    提供两个关于Activity的生命周期模型图示帮助理解:                                           图1 图2 从图2所示的Activity生命周期不难看出, ...

  9. 1.3 ASP.NET MVC生命周期

    ASP.NET MVC的执行生命周期主要分为三个阶段,分别是网址路由对比.执行控制器与动作.执行视图并返回结果.从ASP.NET MVC接受HTTP请求到返回HTTP响应的过程如下图所示.

随机推荐

  1. CodeForces 732B Cormen — The Best Friend Of a Man

    B. Cormen - The Best Friend Of a Man time limit per test 1 second memory limit per test 256 megabyte ...

  2. Golang学习-第一篇 Golang的简单介绍及Windows环境下安装、部署

    序言 这是本人博客园第一篇文章,写的不到位之处,希望各位看客们谅解. 本人一直从事.NET的开发工作,最近在学习Golang,所以想着之前学习的过程中都没怎么好好的将学习过程记录下来.深感惋惜! 现在 ...

  3. JQueryiframe页面操作父页面中的元素与方法(实例讲解)

    1)在iframe中查找父页面元素的方法:$('#id', window.parent.document) 2)在iframe中调用父页面中定义的方法和变量:parent.methodparent.v ...

  4. cross-compler toolchains--clfs

    http://www.cnblogs.com/leaven/archive/2010/11/17/1879679.html

  5. VMwareWorkstations中安装ubuntu,apt install报E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)

    ubuntu中apt安装软件python时报: E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily un ...

  6. 【pentaho】【kettle】【Data Integration】试用

    要做数据分析,领导让研究一下kettle. 先占个坑. 这里有个3.0的文档: http://wenku.baidu.com/link?url=hvw_cOBIXLXSGvftkGhXQic3CLC7 ...

  7. 002-Spring Boot将WAR文件部署到Tomcat

    一.概述 springboot 带有内置Tomcat 服务器,可以直接将项目打包成jar运行,如果在需要把项目打成war包,使用外置tomcat部署.下面是将springboot项目部署为war项目的 ...

  8. mysql监控优化(三)慢查询

    顾名思义,慢查询日志中记录的是执行时间较长的query,也就是我们常说的slowquery,通过设--log-slow-queries[=file_name]来打开该功能并设置记录位置和文件名.慢查询 ...

  9. c#在线手册汇总

    1. c#中文手册(脚本之家) http://shouce.jb51.net/net/

  10. HTML5游戏开发系列教程5(译)

    原文地址:http://www.script-tutorials.com/html5-game-development-lesson-5/ 最终我决定准备下一篇游戏开发系列的文章,我们将继续使用can ...