启动方式
cli
- bin/hive或者bin/hive --service cli
- 命令行方式默认,使用最简单,也最麻烦,功能最强大。
- org.apache.hadoop.util.RunJar $HIVE_HOME/lib/hive-service-0.11.0.jar org.apache.hadoop.hive.cli.CliDriver
hive-server(Deprecated)
- bin/hive --service hive server
- 通过jdbc/odbc和thrift访问,并发、服务假死
- RunJar $HIVE_HOME/lib/hive-service-0.11.0.jar org.apache.hadoop.hive.service.HiveServer
hive-server2(代替hive-server)
- bin/hive --service hiveserver2
- 通过jdbc/odbc和thrift访问,并发有较大提高,支持session
- RunJar $HIVE_HOME/lib/hive-service-0.11.0.jar org.apache.hive.service.server.HiveServer2
hwi
- bin/hive --service hwi
- 通过浏览器访问,使用门栏低,适合产品、运维、技术等非专业数据开发人员。
- org.apache.hadoop.util.RunJar $HIVE_HOME/lib/hive-hwi-0.11.0.jar org.apache.hadoop.hive.hwi.HWIServer
hive cli启动过程详解
- $HIVE_HOME/bin/hive-config.sh 初始化配置信息
- $HIVE_HOME/conf/hive-env.sh 初始化一些环境变量,HADOOP_HOME。。。
- 检查 hive-exec-.jar, hive-metastore-.jar, hive-cli-*.jar几个主要jar包是否存在,同时把$HIVE_HOME/lib下所有jar包加入classpath
- 如果配置 HIVE_AUX_JARS_PATH,hive启动的时候会把这些jar包加入class path
- 添加hadoop相关classpath
- 执行$HIVE_HOME/ext/cli.sh
- hadoop org.apache.hadoop.util.RunJar $HIVE_HOME/lib/hive-service-0.11.0.jar org.apache.hadoop.hive.cli.CliDriver
hive执行计划
Parse(HQL->AST)把sql转换为抽象语法树
Semantic Analyzer ( AST -> QB )
把抽象语法树转换成查询快
Logic Plan QB ( QB -> OP TREE )
把QB转换为逻辑执行计划
Logic Optimizer ( Rewrite OP TREE )
重写执行计划(优化)
Physical Plan Gen ( OP Tree -> Task Tree )
把逻辑执行计划转换为物理执行计划
Physical Optimizer ( Optimizer Task Tree )
物理执行计划优化