HADOOP-11464. Reinstate support for launching Hadoop processes on Windows using Cygwin. Contributed by Chris Nauroth.

This commit is contained in:
cnauroth 2015-01-09 15:00:57 -08:00
parent ab5cd99177
commit 8c3e888dcd
3 changed files with 47 additions and 5 deletions

View File

@ -466,6 +466,9 @@ Release 2.7.0 - UNRELEASED
HADOOP-11032. Replace use of Guava's Stopwatch with Hadoop's StopWatch
(ozawa)
HADOOP-11464. Reinstate support for launching Hadoop processes on Windows
using Cygwin. (cnauroth)
OPTIMIZATIONS
HADOOP-11323. WritableComparator#compare keeps reference to byte array.

View File

@ -562,8 +562,10 @@ function hadoop_os_tricks
{
local bindv6only
# some OSes have special needs. here's some out of the box
# examples for OS X and Linux. Vendors, replace this with your special sauce.
# Some OSes have special needs. Here's some out of the box examples for OS X,
# Linux and Windows on Cygwin.
# Vendors, replace this with your special sauce.
HADOOP_IS_CYGWIN=false
case ${HADOOP_OS_TYPE} in
Darwin)
if [[ -z "${JAVA_HOME}" ]]; then
@ -594,6 +596,10 @@ function hadoop_os_tricks
# down to prevent vmem explosion.
export MALLOC_ARENA_MAX=${MALLOC_ARENA_MAX:-4}
;;
CYGWIN*)
# Flag that we're running on Cygwin to trigger path translation later.
HADOOP_IS_CYGWIN=true
;;
esac
}
@ -621,6 +627,7 @@ function hadoop_java_setup
function hadoop_finalize_libpaths
{
if [[ -n "${JAVA_LIBRARY_PATH}" ]]; then
hadoop_translate_cygwin_path JAVA_LIBRARY_PATH
hadoop_add_param HADOOP_OPTS java.library.path \
"-Djava.library.path=${JAVA_LIBRARY_PATH}"
export LD_LIBRARY_PATH
@ -652,14 +659,34 @@ function hadoop_finalize_hadoop_heap
fi
}
# Accepts a variable name. If running on Cygwin, sets the variable value to the
# equivalent translated Windows path by running the cygpath utility. If the
# second argument is true, then the variable is treated as a path list.
function hadoop_translate_cygwin_path
{
if [[ "${HADOOP_IS_CYGWIN}" = "true" ]]; then
if [[ "$2" = "true" ]]; then
#shellcheck disable=SC2016
eval "$1"='$(cygpath -p -w "${!1}" 2>/dev/null)'
else
#shellcheck disable=SC2016
eval "$1"='$(cygpath -w "${!1}" 2>/dev/null)'
fi
fi
}
#
# fill in any last minute options that might not have been defined yet
#
function hadoop_finalize_hadoop_opts
{
hadoop_translate_cygwin_path HADOOP_LOG_DIR
hadoop_add_param HADOOP_OPTS hadoop.log.dir "-Dhadoop.log.dir=${HADOOP_LOG_DIR}"
hadoop_add_param HADOOP_OPTS hadoop.log.file "-Dhadoop.log.file=${HADOOP_LOGFILE}"
hadoop_add_param HADOOP_OPTS hadoop.home.dir "-Dhadoop.home.dir=${HADOOP_PREFIX}"
HADOOP_HOME=${HADOOP_PREFIX}
hadoop_translate_cygwin_path HADOOP_HOME
export HADOOP_HOME
hadoop_add_param HADOOP_OPTS hadoop.home.dir "-Dhadoop.home.dir=${HADOOP_HOME}"
hadoop_add_param HADOOP_OPTS hadoop.id.str "-Dhadoop.id.str=${HADOOP_IDENT_STRING}"
hadoop_add_param HADOOP_OPTS hadoop.root.logger "-Dhadoop.root.logger=${HADOOP_ROOT_LOGGER}"
hadoop_add_param HADOOP_OPTS hadoop.policy.file "-Dhadoop.policy.file=${HADOOP_POLICYFILE}"
@ -673,6 +700,7 @@ function hadoop_finalize_classpath
# user classpath gets added at the last minute. this allows
# override of CONF dirs and more
hadoop_add_to_classpath_userpath
hadoop_translate_cygwin_path CLASSPATH true
}
function hadoop_finalize_catalina_opts
@ -702,6 +730,13 @@ function hadoop_finalize
hadoop_finalize_libpaths
hadoop_finalize_hadoop_heap
hadoop_finalize_hadoop_opts
hadoop_translate_cygwin_path HADOOP_PREFIX
hadoop_translate_cygwin_path HADOOP_CONF_DIR
hadoop_translate_cygwin_path HADOOP_COMMON_HOME
hadoop_translate_cygwin_path HADOOP_HDFS_HOME
hadoop_translate_cygwin_path HADOOP_YARN_HOME
hadoop_translate_cygwin_path HADOOP_MAPRED_HOME
}
function hadoop_exit_with_usage

View File

@ -210,9 +210,13 @@ fi
# Note that we are replacing ' ' with '\ ' so that when we exec
# stuff it works
#
hadoop_add_param HADOOP_OPTS yarn.log.dir "-Dyarn.log.dir=${HADOOP_LOG_DIR/ /\ }"
YARN_LOG_DIR=$HADOOP_LOG_DIR
hadoop_translate_cygwin_path YARN_LOG_DIR
hadoop_add_param HADOOP_OPTS yarn.log.dir "-Dyarn.log.dir=${YARN_LOG_DIR/ /\ }"
hadoop_add_param HADOOP_OPTS yarn.log.file "-Dyarn.log.file=${HADOOP_LOGFILE/ /\ }"
hadoop_add_param HADOOP_OPTS yarn.home.dir "-Dyarn.home.dir=${HADOOP_YARN_HOME/ /\ }"
YARN_HOME_DIR=$HADOOP_YARN_HOME
hadoop_translate_cygwin_path YARN_HOME_DIR
hadoop_add_param HADOOP_OPTS yarn.home.dir "-Dyarn.home.dir=${YARN_HOME_DIR/ /\ }"
hadoop_add_param HADOOP_OPTS yarn.root.logger "-Dyarn.root.logger=${YARN_ROOT_LOGGER:-INFO,console}"
hadoop_finalize