You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bigtop.apache.org by rv...@apache.org on 2011/10/23 02:29:55 UTC
svn commit: r1187832 - in /incubator/bigtop/trunk/bigtop-packages/src:
deb/hadoop/service-init.d.tpl rpm/hadoop/SOURCES/hadoop-init.tmpl
rpm/hadoop/SOURCES/hadoop-init.tmpl.suse
Author: rvs
Date: Sun Oct 23 00:29:54 2011
New Revision: 1187832
URL: http://svn.apache.org/viewvc?rev=1187832&view=rev
Log:
BIGTOP-140. need to workaround HDFS-1943
Modified:
incubator/bigtop/trunk/bigtop-packages/src/deb/hadoop/service-init.d.tpl
incubator/bigtop/trunk/bigtop-packages/src/rpm/hadoop/SOURCES/hadoop-init.tmpl
incubator/bigtop/trunk/bigtop-packages/src/rpm/hadoop/SOURCES/hadoop-init.tmpl.suse
Modified: incubator/bigtop/trunk/bigtop-packages/src/deb/hadoop/service-init.d.tpl
URL: http://svn.apache.org/viewvc/incubator/bigtop/trunk/bigtop-packages/src/deb/hadoop/service-init.d.tpl?rev=1187832&r1=1187831&r2=1187832&view=diff
==============================================================================
--- incubator/bigtop/trunk/bigtop-packages/src/deb/hadoop/service-init.d.tpl (original)
+++ incubator/bigtop/trunk/bigtop-packages/src/deb/hadoop/service-init.d.tpl Sun Oct 23 00:29:54 2011
@@ -143,11 +143,27 @@ hadoop_stop_pidfile() {
}
start() {
- $HADOOP_HOME/bin/hadoop-daemon.sh start @HADOOP_DAEMON@ $DAEMON_FLAGS
if [ "@HADOOP_DAEMON@" = "datanode" ]; then
+ # The following needs to be removed once HDFS-1943 gets finally put to rest.
+ # The logic of this ugly hack is this: IFF we do NOT have jsvc installed it is
+ # guaranteed that we can NOT be running in a secure mode and thus we need to
+ # workaround HDFS-1943 (start as non-root). As soon as jsvc gets installed
+ # we are assuming a secure installation and starting a data node as root.
+ # This leaves 2 corner cases:
+ # 1. HADOOP_DATANODE_USER being set to root
+ # 2. jsvc is installed but Hadoop is configures to run in an unsecure mode
+ # Both will currently fail
+ if [ -f $HADOOP_HOME/libexec/jsvc.amd64 -o -f $HADOOP_HOME/libexec/jsvc.i386 ] ; then
+ DN_USER=root
+ else
+ DN_USER=$HADOOP_DATANODE_USER
+ fi
+ su -s /bin/bash $DN_USER -c "$HADOOP_HOME/bin/hadoop-daemon.sh start @HADOOP_DAEMON@ $DAEMON_FLAGS"
# Some processes are slow to start
sleep $SLEEP_TIME
+ else
+ $HADOOP_HOME/bin/hadoop-daemon.sh start @HADOOP_DAEMON@ $DAEMON_FLAGS
fi
}
Modified: incubator/bigtop/trunk/bigtop-packages/src/rpm/hadoop/SOURCES/hadoop-init.tmpl
URL: http://svn.apache.org/viewvc/incubator/bigtop/trunk/bigtop-packages/src/rpm/hadoop/SOURCES/hadoop-init.tmpl?rev=1187832&r1=1187831&r2=1187832&view=diff
==============================================================================
--- incubator/bigtop/trunk/bigtop-packages/src/rpm/hadoop/SOURCES/hadoop-init.tmpl (original)
+++ incubator/bigtop/trunk/bigtop-packages/src/rpm/hadoop/SOURCES/hadoop-init.tmpl Sun Oct 23 00:29:54 2011
@@ -43,14 +43,31 @@ SLEEP_TIME=5
start() {
echo -n $"Starting $desc (hadoop-@HADOOP_DAEMON@): "
- daemon @HADOOP_COMMON_ROOT@/bin/hadoop-daemon.sh --config "@HADOOP_CONF_DIR@" start @HADOOP_DAEMON@ $DAEMON_FLAGS
- RETVAL=$?
if [ "@HADOOP_DAEMON@" = "datanode" ]; then
+ # The following needs to be removed once HDFS-1943 gets finally put to rest.
+ # The logic of this ugly hack is this: IFF we do NOT have jsvc installed it is
+ # guaranteed that we can NOT be running in a secure mode and thus we need to
+ # workaround HDFS-1943 (start as non-root). As soon as jsvc gets installed
+ # we are assuming a secure installation and starting a data node as root.
+ # This leaves 2 corner cases:
+ # 1. HADOOP_DATANODE_USER being set to root
+ # 2. jsvc is installed but Hadoop is configures to run in an unsecure mode
+ # Both will currently fail
+ if [ -f $HADOOP_HOME/libexec/jsvc.amd64 -o -f $HADOOP_HOME/libexec/jsvc.i386 ] ; then
+ DN_USER=root
+ else
+ DN_USER=$HADOOP_DATANODE_USER
+ fi
+ su -s /bin/bash $DN_USER -c "@HADOOP_COMMON_ROOT@/bin/hadoop-daemon.sh --config '@HADOOP_CONF_DIR@' start @HADOOP_DAEMON@ $DAEMON_FLAGS"
+
# Some processes are slow to start
sleep $SLEEP_TIME
checkstatus
RETVAL=$?
+ else
+ daemon @HADOOP_COMMON_ROOT@/bin/hadoop-daemon.sh --config "@HADOOP_CONF_DIR@" start @HADOOP_DAEMON@ $DAEMON_FLAGS
+ RETVAL=$?
fi
[ $RETVAL -eq $RETVAL_SUCCESS ] && touch $LOCKFILE
Modified: incubator/bigtop/trunk/bigtop-packages/src/rpm/hadoop/SOURCES/hadoop-init.tmpl.suse
URL: http://svn.apache.org/viewvc/incubator/bigtop/trunk/bigtop-packages/src/rpm/hadoop/SOURCES/hadoop-init.tmpl.suse?rev=1187832&r1=1187831&r2=1187832&view=diff
==============================================================================
--- incubator/bigtop/trunk/bigtop-packages/src/rpm/hadoop/SOURCES/hadoop-init.tmpl.suse (original)
+++ incubator/bigtop/trunk/bigtop-packages/src/rpm/hadoop/SOURCES/hadoop-init.tmpl.suse Sun Oct 23 00:29:54 2011
@@ -65,14 +65,31 @@ start() {
[ -x $exec ] || exit $ERROR_PROGRAM_NOT_INSTALLED
[ -f $config ] || exit $ERROR_PROGRAM_NOT_CONFIGURED
log_success_msg "Starting $desc (hadoop-@HADOOP_DAEMON@): "
- start_daemon $EXEC_PATH --config "$CONFIG_PATH" start @HADOOP_DAEMON@ $DAEMON_FLAGS
- RETVAL=$?
if [ "@HADOOP_DAEMON@" = "datanode" ]; then
+ # The following needs to be removed once HDFS-1943 gets finally put to rest.
+ # The logic of this ugly hack is this: IFF we do NOT have jsvc installed it is
+ # guaranteed that we can NOT be running in a secure mode and thus we need to
+ # workaround HDFS-1943 (start as non-root). As soon as jsvc gets installed
+ # we are assuming a secure installation and starting a data node as root.
+ # This leaves 2 corner cases:
+ # 1. HADOOP_DATANODE_USER being set to root
+ # 2. jsvc is installed but Hadoop is configures to run in an unsecure mode
+ # Both will currently fail
+ if [ -f $HADOOP_HOME/libexec/jsvc.amd64 -o -f $HADOOP_HOME/libexec/jsvc.i386 ] ; then
+ DN_USER=root
+ else
+ DN_USER=$HADOOP_DATANODE_USER
+ fi
+ su -s /bin/bash $DN_USER -c "$EXEC_PATH --config '$CONFIG_PATH' start @HADOOP_DAEMON@ $DAEMON_FLAGS"
+
# Some processes are slow to start
sleep $SLEEP_TIME
checkstatusofproc
RETVAL=$?
+ else
+ start_daemon $EXEC_PATH --config "$CONFIG_PATH" start @HADOOP_DAEMON@ $DAEMON_FLAGS
+ RETVAL=$?
fi
[ $RETVAL -eq $RETVAL_SUCCESS ] && touch $LOCKFILE