1)下載apache-hive-2.1.1-bin.tar.gz
2)解壓縮,下面的命令行如啟動(dòng)報(bào)錯(cuò),請(qǐng)自行查略Hive啟動(dòng)配置
3)啟動(dòng)hiveserver2 (非必須,使用jdbc訪問的時(shí)候才使用)
bin目錄下
hive --service hiveserver2 -p10001來啟動(dòng)hiveserver2 服務(wù)(默認(rèn)為10000端口)
nohup hive --service hiverserver2 -p10001可以在后臺(tái)跑
4)hive腳本運(yùn)行流程
bin目錄下,使用命令方法為:
./hive <parameters> --service serviceName <service parameters>
舉例:hive --debug :
查看bin/hive文件
流程中會(huì)判斷$1=‘--debug’則$DEBUG=‘--debug’
if [ "$DEBUG" ]; then
if [ "$HELP" ]; then //如還有--help,就會(huì)執(zhí)行debug_help方法。
debug_help
exit 0
else
get_debug_params "$DEBUG"
export HADOOP_CLIENT_OPTS="$HADOOP_CLIENT_OPTS $HIVE_MAIN_CLIENT_DEBUG_OPTS"http://設(shè)置HIVE_MAIN_CLIENT_DEBUG_OPTS的參數(shù)中加入debug相應(yīng)參數(shù)
fi
fi
if [ "$SERVICE" = "" ] ; then
if [ "$HELP" = "_help" ] ; then
SERVICE="help"
else
SERVICE="cli" //默認(rèn)賦值cli
fi
fi
這個(gè)shell腳本很多變量應(yīng)該是在其他sh文件中定義,其中$SERVICE_LIST就是其他很多sh文件的最開始形成的:export SERVICE_LIST="${SERVICE_LIST}${THISSERVICE} "
hive腳本最后的$TORUN "$@" ,默認(rèn)情況下TORUN其實(shí)就是cli,即執(zhí)行/ext/cli.sh腳本,該腳本中主要是調(diào)用/ext/util/execHiveCmd.sh 來執(zhí)行最后的CliDriver。
【shell腳本中的$*,$@和$#
舉例說:
腳本名稱叫test.sh 入?yún)⑷齻€(gè): 1 2 3
運(yùn)行test.sh 1 2 3后
$*為"1 2 3"(一起被引號(hào)包住)
$@為"1" "2" "3"(分別被包住)
$#為3(參數(shù)數(shù)量)
】即exec $HADOOP jar ${HIVE_LIB}/$JAR $CLASS $HIVE_OPTS "$@" //1
其中:
$HADOOP=$HADOOP_HOME/bin/hadoop 【hive腳本中定義HADOOP=$HADOOP_HOME/bin/hadoop】
$CLASS=org.apache.hadoop.hive.cli.CliDriver【傳入的第一個(gè)參數(shù),在cli.sh中有定義】
hadoop腳本(2.7.3為例)中最終會(huì)執(zhí)行:
# 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 "$@" //2
hive的debug參數(shù)就是在啟動(dòng)hive腳本時(shí)放到HADOOP_OPTS中的
1和2處結(jié)合可得到最終的運(yùn)行命令,查看一下運(yùn)行結(jié)果: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
-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