Hive的执行生命周期
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的执行生命周期的更多相关文章
- 微信小程序onLaunch、onLoad执行生命周期
原文转载自:微信小程序onLaunch.onLoad执行生命周期 1.需求:先执行App的onLaunch添加验证权限等,再执行Page里的onLoad. 2.问题:还没有等onLaunch执行完成, ...
- HTML,javascript,image等加载,DOM解析,js执行生命周期
- .NET MVC执行过程 及 生命周期步骤
1.网址路由比对 2.执行Controller与Action 3.执行View并返回结果 Request 请求到来 IIS 根据请求特征将处理权移交给 ASP.NET UrlRoutingModule ...
- react教程 — 组件的生命周期 和 执行顺序
一.组件执行的生命周期: 参考 https://www.cnblogs.com/soyxiaobi/p/9559117.html 或 https://www.c ...
- React源码剖析系列 - 生命周期的管理艺术
目前,前端领域中 React 势头正盛,很少能够深入剖析内部实现机制和原理.本系列文章希望通过剖析 React 源码,理解其内部的实现原理,知其然更要知其所以然. 对于 React,其组件生命周期(C ...
- [转]: 两分钟彻底让你明白Android Activity生命周期(图文)!
转自:http://blog.csdn.net/android_tutor/article/details/5772285 大家好,今天给大家详解一下Android中Activity的生命周期,我在前 ...
- MVC网址路由与生命周期
这篇写得比较详细,所以我收藏一下. 转载自: http://www.cnblogs.com/Eleanore/archive/2012/11/23/2783061.html 一.网址路由 1.1 比 ...
- Android生命周期详细说明
提供两个关于Activity的生命周期模型图示帮助理解: 图1 图2 从图2所示的Activity生命周期不难看出, ...
- 1.3 ASP.NET MVC生命周期
ASP.NET MVC的执行生命周期主要分为三个阶段,分别是网址路由对比.执行控制器与动作.执行视图并返回结果.从ASP.NET MVC接受HTTP请求到返回HTTP响应的过程如下图所示.
随机推荐
- 面试之二:Redis是单线程还是多线程?以及处理模型。
Redis是单线程还是多线程?以及处理模型. 线程:单线程 处理模型:参考书<Redis 设计与实现>P151-152 
nodejs第一章节 使用node来实现第一个http服务器 var http = require(‘http’); http.createServer(function (request, resp ...
- lowB三人组算法-冒泡排序-选择排序-插入排序
冒泡排序 时间复杂度:O(n2) 算法稳定 第一趟,从第一个数开始,相邻两个数比较,大的数交换放后,交换到最后位置得出一个第一大数 第二趟,从第一个数开始,相邻两个数比较,大的数交换放后,交换到倒数 ...
- 永久解决delphi 2010不能2次启动问题
由于在Windows安装了最近的更新(KB2982791, KB2970228)后,Delphi的IDE需要创建的一个文件%TEMP%\EditorLineEnds.ttr会被系统锁定,导致除非重新启 ...
- Django资源汇总(转)
Django 我和Django¶ 我使用python的很大一部分原因就是django.虽然在以前也用过python,不过始终没有什么特别的感觉.然后接触到了django.可以说django非常对我的胃 ...
- maven 之nexus仓库管理_私服配置
1.下载nexus私服 下载地址:http://www.sonatype.org/downloads/nexus-latest.war 2.解压 解压以下压缩包 3.配置环境变量 *\nexus-2. ...
- SharePoint 2013 附加内容数据库后出现404错误
本文讲述怎样解决SharePoint 2013 加内容数据库(Content DataBase)后出现404错误. 笔者依照http://technet.microsoft.com/en-us/lib ...
- Zabbix server(离线版)安装手册
由于zabbix server需要依赖MySQL及PHP的相关依赖,因此需要先安装好MySQL及PHP的相关依赖后方可安装zabbixserver. 安装MySQL 目录mysql下的rpm 1.新建 ...
- 宏表达式与函数、#undef、条件编译、
宏表达式在预编译期被处理,编译器不知道宏表达式的存在. 宏表达式没有任何的调用开销 宏表达式中不能出现递归定义. C语言中强大的内置宏 __FILE__:被编译的文件名 //双底线 __LINE__: ...
- POJ1159:Palindrome(LCS小应用 回文)
地址:http://poj.org/problem?id=1159 题目需求: 给你一个字符串,求最少添加多少字符可以使之构成回文串. 题目解析: 简单做法是直接对它和它的逆序串求最长公共子序列长度l ...