hadoop-config.sh 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. # Licensed to the Apache Software Foundation (ASF) under one or more
  2. # contributor license agreements. See the NOTICE file distributed with
  3. # this work for additional information regarding copyright ownership.
  4. # The ASF licenses this file to You under the Apache License, Version 2.0
  5. # (the "License"); you may not use this file except in compliance with
  6. # the License. You may obtain a copy of the License at
  7. #
  8. # http://www.apache.org/licenses/LICENSE-2.0
  9. #
  10. # Unless required by applicable law or agreed to in writing, software
  11. # distributed under the License is distributed on an "AS IS" BASIS,
  12. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. # See the License for the specific language governing permissions and
  14. # limitations under the License.
  15. # included in all the hadoop scripts with source command
  16. # should not be executable directly
  17. # also should not be passed any arguments, since we need original $*
  18. # Resolve links ($0 may be a softlink) and convert a relative path
  19. # to an absolute path. NB: The -P option requires bash built-ins
  20. # or POSIX:2001 compliant cd and pwd.
  21. this="${BASH_SOURCE-$0}"
  22. common_bin=$(cd -P -- "$(dirname -- "$this")" && pwd -P)
  23. script="$(basename -- "$this")"
  24. this="$common_bin/$script"
  25. [ -f "$common_bin/hadoop-layout.sh" ] && . "$common_bin/hadoop-layout.sh"
  26. HADOOP_COMMON_DIR=${HADOOP_COMMON_DIR:-"share/hadoop/common"}
  27. HADOOP_COMMON_LIB_JARS_DIR=${HADOOP_COMMON_LIB_JARS_DIR:-"share/hadoop/common/lib"}
  28. HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_COMMON_LIB_NATIVE_DIR:-"lib/native"}
  29. HDFS_DIR=${HDFS_DIR:-"share/hadoop/hdfs"}
  30. HDFS_LIB_JARS_DIR=${HDFS_LIB_JARS_DIR:-"share/hadoop/hdfs/lib"}
  31. YARN_DIR=${YARN_DIR:-"share/hadoop/mapreduce"}
  32. YARN_LIB_JARS_DIR=${YARN_LIB_JARS_DIR:-"share/hadoop/mapreduce/lib"}
  33. MAPRED_DIR=${MAPRED_DIR:-"share/hadoop/mapreduce"}
  34. MAPRED_LIB_JARS_DIR=${MAPRED_LIB_JARS_DIR:-"share/hadoop/mapreduce/lib"}
  35. # the root of the Hadoop installation
  36. # See HADOOP-6255 for directory structure layout
  37. HADOOP_DEFAULT_PREFIX=$(cd -P -- "$common_bin"/.. && pwd -P)
  38. HADOOP_PREFIX=${HADOOP_PREFIX:-$HADOOP_DEFAULT_PREFIX}
  39. export HADOOP_PREFIX
  40. #check to see if the conf dir is given as an optional argument
  41. if [ $# -gt 1 ]
  42. then
  43. if [ "--config" = "$1" ]
  44. then
  45. shift
  46. confdir=$1
  47. shift
  48. HADOOP_CONF_DIR=$confdir
  49. fi
  50. fi
  51. # Allow alternate conf dir location.
  52. if [ -e "${HADOOP_PREFIX}/conf/hadoop-env.sh" ]; then
  53. DEFAULT_CONF_DIR="conf"
  54. else
  55. DEFAULT_CONF_DIR="etc/hadoop"
  56. fi
  57. export HADOOP_CONF_DIR="${HADOOP_CONF_DIR:-$HADOOP_PREFIX/$DEFAULT_CONF_DIR}"
  58. # User can specify hostnames or a file where the hostnames are (not both)
  59. if [[ ( "$HADOOP_SLAVES" != '' ) && ( "$HADOOP_SLAVE_NAMES" != '' ) ]] ; then
  60. echo \
  61. "Error: Please specify one variable HADOOP_SLAVES or " \
  62. "HADOOP_SLAVE_NAME and not both."
  63. exit 1
  64. fi
  65. # Process command line options that specify hosts or file with host
  66. # list
  67. if [ $# -gt 1 ]
  68. then
  69. if [ "--hosts" = "$1" ]
  70. then
  71. shift
  72. export HADOOP_SLAVES="${HADOOP_CONF_DIR}/$$1"
  73. shift
  74. elif [ "--hostnames" = "$1" ]
  75. then
  76. shift
  77. export HADOOP_SLAVE_NAMES=$1
  78. shift
  79. fi
  80. fi
  81. # User can specify hostnames or a file where the hostnames are (not both)
  82. # (same check as above but now we know it's command line options that cause
  83. # the problem)
  84. if [[ ( "$HADOOP_SLAVES" != '' ) && ( "$HADOOP_SLAVE_NAMES" != '' ) ]] ; then
  85. echo \
  86. "Error: Please specify one of --hosts or --hostnames options and not both."
  87. exit 1
  88. fi
  89. cygwin=false
  90. case "`uname`" in
  91. CYGWIN*) cygwin=true;;
  92. esac
  93. if [ -f "${HADOOP_CONF_DIR}/hadoop-env.sh" ]; then
  94. . "${HADOOP_CONF_DIR}/hadoop-env.sh"
  95. fi
  96. # check if net.ipv6.bindv6only is set to 1
  97. bindv6only=$(/sbin/sysctl -n net.ipv6.bindv6only 2> /dev/null)
  98. if [ -n "$bindv6only" ] && [ "$bindv6only" -eq "1" ] && [ "$HADOOP_ALLOW_IPV6" != "yes" ]
  99. then
  100. echo "Error: \"net.ipv6.bindv6only\" is set to 1 - Java networking could be broken"
  101. echo "For more info: http://wiki.apache.org/hadoop/HadoopIPv6"
  102. exit 1
  103. fi
  104. # Newer versions of glibc use an arena memory allocator that causes virtual
  105. # memory usage to explode. This interacts badly with the many threads that
  106. # we use in Hadoop. Tune the variable down to prevent vmem explosion.
  107. export MALLOC_ARENA_MAX=${MALLOC_ARENA_MAX:-4}
  108. # Attempt to set JAVA_HOME if it is not set
  109. if [[ -z $JAVA_HOME ]]; then
  110. # On OSX use java_home (or /Library for older versions)
  111. if [ "Darwin" == "$(uname -s)" ]; then
  112. if [ -x /usr/libexec/java_home ]; then
  113. export JAVA_HOME=($(/usr/libexec/java_home))
  114. else
  115. export JAVA_HOME=(/Library/Java/Home)
  116. fi
  117. fi
  118. # Bail if we did not detect it
  119. if [[ -z $JAVA_HOME ]]; then
  120. echo "Error: JAVA_HOME is not set and could not be found." 1>&2
  121. exit 1
  122. fi
  123. fi
  124. JAVA=$JAVA_HOME/bin/java
  125. # some Java parameters
  126. JAVA_HEAP_MAX=-Xmx1000m
  127. # check envvars which might override default args
  128. if [ "$HADOOP_HEAPSIZE" != "" ]; then
  129. #echo "run with heapsize $HADOOP_HEAPSIZE"
  130. JAVA_HEAP_MAX="-Xmx""$HADOOP_HEAPSIZE""m"
  131. #echo $JAVA_HEAP_MAX
  132. fi
  133. # CLASSPATH initially contains $HADOOP_CONF_DIR
  134. CLASSPATH="${HADOOP_CONF_DIR}"
  135. # so that filenames w/ spaces are handled correctly in loops below
  136. IFS=
  137. if [ "$HADOOP_COMMON_HOME" = "" ]; then
  138. if [ -d "${HADOOP_PREFIX}/$HADOOP_COMMON_DIR" ]; then
  139. HADOOP_COMMON_HOME=$HADOOP_PREFIX
  140. fi
  141. fi
  142. # for releases, add core hadoop jar & webapps to CLASSPATH
  143. if [ -d "$HADOOP_COMMON_HOME/$HADOOP_COMMON_DIR/webapps" ]; then
  144. CLASSPATH=${CLASSPATH}:$HADOOP_COMMON_HOME/$HADOOP_COMMON_DIR
  145. fi
  146. if [ -d "$HADOOP_COMMON_HOME/$HADOOP_COMMON_LIB_JARS_DIR" ]; then
  147. CLASSPATH=${CLASSPATH}:$HADOOP_COMMON_HOME/$HADOOP_COMMON_LIB_JARS_DIR'/*'
  148. fi
  149. CLASSPATH=${CLASSPATH}:$HADOOP_COMMON_HOME/$HADOOP_COMMON_DIR'/*'
  150. # add user-specified CLASSPATH last
  151. if [ "$HADOOP_CLASSPATH" != "" ]; then
  152. CLASSPATH=${CLASSPATH}:${HADOOP_CLASSPATH}
  153. fi
  154. # default log directory & file
  155. if [ "$HADOOP_LOG_DIR" = "" ]; then
  156. HADOOP_LOG_DIR="$HADOOP_PREFIX/logs"
  157. fi
  158. if [ "$HADOOP_LOGFILE" = "" ]; then
  159. HADOOP_LOGFILE='hadoop.log'
  160. fi
  161. # default policy file for service-level authorization
  162. if [ "$HADOOP_POLICYFILE" = "" ]; then
  163. HADOOP_POLICYFILE="hadoop-policy.xml"
  164. fi
  165. # restore ordinary behaviour
  166. unset IFS
  167. # cygwin path translation
  168. if $cygwin; then
  169. HADOOP_PREFIX=`cygpath -w "$HADOOP_PREFIX"`
  170. HADOOP_LOG_DIR=`cygpath -w "$HADOOP_LOG_DIR"`
  171. JAVA_LIBRARY_PATH=`cygpath -w "$JAVA_LIBRARY_PATH"`
  172. fi
  173. # setup 'java.library.path' for native-hadoop code if necessary
  174. if [ -d "${HADOOP_PREFIX}/build/native" -o -d "${HADOOP_PREFIX}/$HADOOP_COMMON_LIB_NATIVE_DIR" ]; then
  175. if [ -d "${HADOOP_PREFIX}/$HADOOP_COMMON_LIB_NATIVE_DIR" ]; then
  176. if [ "x$JAVA_LIBRARY_PATH" != "x" ]; then
  177. JAVA_LIBRARY_PATH=${JAVA_LIBRARY_PATH}:${HADOOP_PREFIX}/$HADOOP_COMMON_LIB_NATIVE_DIR
  178. else
  179. JAVA_LIBRARY_PATH=${HADOOP_PREFIX}/$HADOOP_COMMON_LIB_NATIVE_DIR
  180. fi
  181. fi
  182. fi
  183. # setup a default TOOL_PATH
  184. TOOL_PATH="${TOOL_PATH:-$HADOOP_PREFIX/share/hadoop/tools/lib/*}"
  185. # cygwin path translation
  186. if $cygwin; then
  187. JAVA_LIBRARY_PATH=`cygpath -p "$JAVA_LIBRARY_PATH"`
  188. fi
  189. HADOOP_OPTS="$HADOOP_OPTS -Dhadoop.log.dir=$HADOOP_LOG_DIR"
  190. HADOOP_OPTS="$HADOOP_OPTS -Dhadoop.log.file=$HADOOP_LOGFILE"
  191. HADOOP_OPTS="$HADOOP_OPTS -Dhadoop.home.dir=$HADOOP_PREFIX"
  192. HADOOP_OPTS="$HADOOP_OPTS -Dhadoop.id.str=$HADOOP_IDENT_STRING"
  193. HADOOP_OPTS="$HADOOP_OPTS -Dhadoop.root.logger=${HADOOP_ROOT_LOGGER:-INFO,console}"
  194. if [ "x$JAVA_LIBRARY_PATH" != "x" ]; then
  195. HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$JAVA_LIBRARY_PATH"
  196. fi
  197. HADOOP_OPTS="$HADOOP_OPTS -Dhadoop.policy.file=$HADOOP_POLICYFILE"
  198. # Disable ipv6 as it can cause issues
  199. HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true"
  200. # put hdfs in classpath if present
  201. if [ "$HADOOP_HDFS_HOME" = "" ]; then
  202. if [ -d "${HADOOP_PREFIX}/$HDFS_DIR" ]; then
  203. HADOOP_HDFS_HOME=$HADOOP_PREFIX
  204. fi
  205. fi
  206. if [ -d "$HADOOP_HDFS_HOME/$HDFS_DIR/webapps" ]; then
  207. CLASSPATH=${CLASSPATH}:$HADOOP_HDFS_HOME/$HDFS_DIR
  208. fi
  209. if [ -d "$HADOOP_HDFS_HOME/$HDFS_LIB_JARS_DIR" ]; then
  210. CLASSPATH=${CLASSPATH}:$HADOOP_HDFS_HOME/$HDFS_LIB_JARS_DIR'/*'
  211. fi
  212. CLASSPATH=${CLASSPATH}:$HADOOP_HDFS_HOME/$HDFS_DIR'/*'
  213. # put yarn in classpath if present
  214. if [ "$YARN_HOME" = "" ]; then
  215. if [ -d "${HADOOP_PREFIX}/$YARN_DIR" ]; then
  216. YARN_HOME=$HADOOP_PREFIX
  217. fi
  218. fi
  219. if [ -d "$YARN_HOME/$YARN_DIR/webapps" ]; then
  220. CLASSPATH=${CLASSPATH}:$YARN_HOME/$YARN_DIR
  221. fi
  222. if [ -d "$YARN_HOME/$YARN_LIB_JARS_DIR" ]; then
  223. CLASSPATH=${CLASSPATH}:$YARN_HOME/$YARN_LIB_JARS_DIR'/*'
  224. fi
  225. CLASSPATH=${CLASSPATH}:$YARN_HOME/$YARN_DIR'/*'
  226. # put mapred in classpath if present AND different from YARN
  227. if [ "$HADOOP_MAPRED_HOME" = "" ]; then
  228. if [ -d "${HADOOP_PREFIX}/$MAPRED_DIR" ]; then
  229. HADOOP_MAPRED_HOME=$HADOOP_PREFIX
  230. fi
  231. fi
  232. if [ "$HADOOP_MAPRED_HOME/$MAPRED_DIR" != "$YARN_HOME/$YARN_DIR" ] ; then
  233. if [ -d "$HADOOP_MAPRED_HOME/$MAPRED_DIR/webapps" ]; then
  234. CLASSPATH=${CLASSPATH}:$HADOOP_MAPRED_HOME/$MAPRED_DIR
  235. fi
  236. if [ -d "$HADOOP_MAPRED_HOME/$MAPRED_LIB_JARS_DIR" ]; then
  237. CLASSPATH=${CLASSPATH}:$HADOOP_MAPRED_HOME/$MAPRED_LIB_JARS_DIR'/*'
  238. fi
  239. CLASSPATH=${CLASSPATH}:$HADOOP_MAPRED_HOME/$MAPRED_DIR'/*'
  240. fi
  241. # cygwin path translation
  242. if $cygwin; then
  243. HADOOP_HDFS_HOME=`cygpath -w "$HADOOP_HDFS_HOME"`
  244. fi
  245. # cygwin path translation
  246. if $cygwin; then
  247. TOOL_PATH=`cygpath -p -w "$TOOL_PATH"`
  248. fi