Hive2.1源码分析(一)启动脚本

最近在网上看到的相关材料都比较陈旧,也太简略,参看了一下其他人的内容,针对Hive2.1.1做点分享:

1)下载apache-hive-2.1.1-bin.tar.gz

2)解压缩,下面的命令行如启动报错,请自行查略Hive启动配置

3)启动 hiveserver2

(非必须,使用jdbc访问的时候才使用)

bin目录下

hive –service hiveserver2 -p10001来启动 hiveserver2
服务(默认为10000端口)

nohup hive –service hiverserver2 -p10001可以在后台跑

4)

hive脚本运行流程

bin目录下,使用命令方法为:

./hive –service serviceName

举例:hive –debug :

查看bin/hive文件

流程中会判断$1=‘–debug’则$DEBUG=‘–debug’

if [ “$DEBUG” ]; then

if [ “$HELP” ]; then // 如还有–help,就会执行debug_help方法。

debug_help

exit 0

else

get_debug_params “$DEBUG”

export HADOOP_CLIENT_OPTS
=”$HADOOP_CLIENT_OPTS $HIVE_MAIN_CLIENT_DEBUG_OPTS”// 设置HIVE_MAIN_CLIENT_DEBUG_OPTS的参数中加入debug相应参数

fi

fi

if [ “$SERVICE” = “” ] ; then

if [ “$HELP” = “_help” ] ; then

SERVICE=”help”

else

SERVICE=”cli” //默认赋值cli

fi

fi

这个shell脚本很多变量应该是在其他sh文件中定义,其中$SERVICE_LIST就是其他很多sh文件的最开始形成的:export SERVICE_LIST=”${SERVICE_LIST}${THISSERVICE} “

hive脚本最后的 $TORUN “[email protected]
,默认情况下TORUN其实就是cli,即执行/ext/cli.sh脚本,该脚本中主要是调用/ext/util/execHiveCmd.sh 来执行最后的CliDriver。

shell脚本中的$*,[email protected]和$#

举例说:

脚本名称叫test.sh 入参三个: 1 2 3

运行test.sh 1 2 3后

$*为”1 2 3″(一起被引号包住)

[email protected]为”1″ “2” “3”(分别被包住)

$#为3(参数数量)

即exec $HADOOP jar ${HIVE_LIB}/$JAR $CLASS $HIVE_OPTS “[email protected]” //1

其中:

$HADOOP= $HADOOP_HOME/bin/hadoop
【hive脚本中定义
HADOOP=$HADOOP_HOME/bin/hadoop】

$CLASS=org.apache.hadoop.hive.cli.CliDriver【传入的第一个参数,在cli.sh中有定义】

hadoop脚本(2.7.3为例)中最终会执行:

# Always respect HADOOP_OPTS and HADOOP_CLIENT_OPTS

HADOOP_OPTS=”$HADOOP_OPTS $ HADOOP_CLIENT_OPTS

#make sure security appender is turned off

HADOOP_OPTS=”$HADOOP_OPTS -Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,NullAppender}”

export CLASSPATH=$CLASSPATH

exec “$JAVA” $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS “[email protected]” //2

hive的debug参数就是在启动hive脚本时放到HADOOP_OPTS中的

1和2处结合可得到最终的运行命令,查看一下运行结果:ps -ef|grep CliDriver


/
usr
/
java
/
jdk1.
8
.0_101
/
bin
/
java

Xmx256m

Djava.net.preferIPv4Stack
=
true


Dhadoop.log.dir
=
..

Dhadoop.log.file
=
hadoop.log

Dhadoop.home.dir
=
..

Dhadoop.id.str
=
root

Dhadoop.root.logger
=
INFO,console

Djava.library.path
=
..

Dhadoop.policy.file
=
hadoop

policy.xml

Djava.net.preferIPv4Stack
=
true


Xmx512m

Dproc_hivecli

XX:
+
UseParallelGC

agentlib:jdwp
=
transport
=
dt_socket,server
=
y,address
=
8000
,suspend
=
y

Dlog4j.configurationFile
=
hive

log4j2.properties

Djava.util.logging.config.file
=

..



Dhadoop.security.logger
=
INFO,NullAppender org.apache.hadoop.util.RunJar
/
yuxh
/
app
/
apache

hive

2
.
*/
lib
/
hive

cli

2
.
*
.jar org.apache.hadoop.hive.cli.CliDriver

BlogJava稿源:BlogJava (源链) | 关于 | 阅读提示

本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 综合技术 » Hive2.1源码分析(一)启动脚本

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录

登录

忘记密码 ?

切换登录

注册