@@ -55,8 +55,9 @@ HBOX_CLASSPATH="$HBOX_CONF_DIR:$HBOX_HOME/lib/*:$(yarn classpath)"
5555HBOX_CLIENT_OPTS=(" -Xmx1024m" )
5656
5757__find_hbox_jar () {
58- local jars=() pattern=" ${1:? usage __find_hbox_jar <find-name-pattern>} "
59- readarray -t jars < <( find " $HBOX_HOME /" -maxdepth 1 -name " hbox-core-*.jar" )
58+ local jars=() pattern=" ${1:? usage __find_hbox_jar <find-name-pattern>} " full_hbox_home
59+ full_hbox_home=$( cd -- " $HBOX_HOME " && pwd) || return 66
60+ readarray -t jars < <( cd / && find " $full_hbox_home /" -maxdepth 1 -name " hbox-core-*.jar" )
6061 if (( ${# jars[@]} == 0 )) ; then
6162 echo " [ERROR] Failed to find $pattern in $HBOX_HOME /lib." >&2
6263 return 66
@@ -74,26 +75,35 @@ __find_hbox_jar() {
7475 fi
7576}
7677
77- # hadoop ugi info
78- if [[ ${HADOOP_USER_NAME:- ${USER:- $(id -un)} } == " $( id -un) " ]]; then
79- # use login user as ugi
80- if [[ ${USER-} != " ${HADOOP_USER_NAME-${USER-} } " ]]; then
81- echo " [WARN] env USER is overrided by env HADOOP_USER_NAME"
78+ # priority to select a submit user
79+ # * $HADOOP_USER_NAME
80+ # * $USER if $USER != $LOGNAME
81+ # * $(id -un)
82+ __select_submit_user () {
83+ local eu
84+ eu=" $( id -un) "
85+ local logu=" ${LOGNAME:- ${eu-} } "
86+ local u=" ${USER:- ${logu-} } "
87+ if [[ ${u-} == " ${logu-} " ]]; then
88+ local submit_as=" ${HADOOP_USER_NAME:- ${eu-} } "
89+ else
90+ local submit_as=" ${HADOOP_USER_NAME:- ${u:- ${eu-} } } "
8291 fi
83- unset HADOOP_USER_NAME
84- USER=$( id -un)
85- elif [[ ${HADOOP_USER_NAME:- } ]]; then
86- # prefer HADOOP_USER_NAME
87- if [[ ${USER-} != " $HADOOP_USER_NAME " ]] && [[ ${USER-} != " $( id -un) " ]]; then
88- echo " [WARN] env USER is overrided by env HADOOP_USER_NAME"
92+
93+ if [[ ${submit_as-} == " ${eu-} " ]]; then
94+ # submit as effective user
95+ unset HADOOP_USER_NAME
96+ USER=" ${eu-} "
97+ LOGNAME=" ${eu-} "
98+ else
99+ export HADOOP_USER_NAME=" ${submit_as-} "
100+ USER=" ${submit_as-} "
101+ HBOX_CLIENT_OPTS+=(" -Duser.name=${submit_as-} " " -Dprocess.owner=${eu-} " )
89102 fi
90- USER=" $HADOOP_USER_NAME "
91- HBOX_CLIENT_OPTS+=(" -Duser.name=$HADOOP_USER_NAME " " -Dprocess.owner=$( id -un) " )
92- else
93- # prefer USER
94- export HADOOP_USER_NAME=" $USER "
95- HBOX_CLIENT_OPTS+=(" -Duser.name=$USER " " -Dprocess.owner=$( id -un) " )
96- fi
103+ }
104+
105+ # hadoop ugi info
106+ __select_submit_user
97107
98108case " ${1-} " in
99109run-submit)
@@ -145,4 +155,4 @@ run-submit)
145155run-history-server) __find_hbox_jar ' hbox-history-server-*.jar' || return $? ;;
146156esac
147157
148- unset __find_hbox_jar
158+ unset __find_hbox_jar __select_submit_user
0 commit comments