1
0

hadoop-config.sh 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  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. # HADOOP_CLASSPATH Extra Java CLASSPATH entries.
  22. #
  23. # HADOOP_USER_CLASSPATH_FIRST When defined, the HADOOP_CLASSPATH is
  24. # added in the beginning of the global
  25. # classpath. Can be defined, for example,
  26. # by doing
  27. # export HADOOP_USER_CLASSPATH_FIRST=true
  28. #
  29. this="${BASH_SOURCE-$0}"
  30. common_bin=$(cd -P -- "$(dirname -- "$this")" && pwd -P)
  31. script="$(basename -- "$this")"
  32. this="$common_bin/$script"
  33. [ -f "$common_bin/hadoop-layout.sh" ] && . "$common_bin/hadoop-layout.sh"
  34. HADOOP_COMMON_DIR=${HADOOP_COMMON_DIR:-"share/hadoop/common"}
  35. HADOOP_COMMON_LIB_JARS_DIR=${HADOOP_COMMON_LIB_JARS_DIR:-"share/hadoop/common/lib"}
  36. HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_COMMON_LIB_NATIVE_DIR:-"lib/native"}
  37. HDFS_DIR=${HDFS_DIR:-"share/hadoop/hdfs"}
  38. HDFS_LIB_JARS_DIR=${HDFS_LIB_JARS_DIR:-"share/hadoop/hdfs/lib"}
  39. YARN_DIR=${YARN_DIR:-"share/hadoop/yarn"}
  40. YARN_LIB_JARS_DIR=${YARN_LIB_JARS_DIR:-"share/hadoop/yarn/lib"}
  41. MAPRED_DIR=${MAPRED_DIR:-"share/hadoop/mapreduce"}
  42. MAPRED_LIB_JARS_DIR=${MAPRED_LIB_JARS_DIR:-"share/hadoop/mapreduce/lib"}
  43. # the root of the Hadoop installation
  44. # See HADOOP-6255 for directory structure layout
  45. HADOOP_DEFAULT_PREFIX=$(cd -P -- "$common_bin"/.. && pwd -P)
  46. HADOOP_PREFIX=${HADOOP_PREFIX:-$HADOOP_DEFAULT_PREFIX}
  47. export HADOOP_PREFIX
  48. #check to see if the conf dir is given as an optional argument
  49. if [ $# -gt 1 ]
  50. then
  51. if [ "--config" = "$1" ]
  52. then
  53. shift
  54. confdir=$1
  55. if [ ! -d "$confdir" ]; then
  56. echo "Error: Cannot find configuration directory: $confdir"
  57. exit 1
  58. fi
  59. shift
  60. HADOOP_CONF_DIR=$confdir
  61. fi
  62. fi
  63. # Allow alternate conf dir location.
  64. if [ -e "${HADOOP_PREFIX}/conf/hadoop-env.sh" ]; then
  65. DEFAULT_CONF_DIR="conf"
  66. else
  67. DEFAULT_CONF_DIR="etc/hadoop"
  68. fi
  69. export HADOOP_CONF_DIR="${HADOOP_CONF_DIR:-$HADOOP_PREFIX/$DEFAULT_CONF_DIR}"
  70. # User can specify hostnames or a file where the hostnames are (not both)
  71. if [[ ( "$HADOOP_SLAVES" != '' ) && ( "$HADOOP_SLAVE_NAMES" != '' ) ]] ; then
  72. echo \
  73. "Error: Please specify one variable HADOOP_SLAVES or " \
  74. "HADOOP_SLAVE_NAME and not both."
  75. exit 1
  76. fi
  77. # Process command line options that specify hosts or file with host
  78. # list
  79. if [ $# -gt 1 ]
  80. then
  81. if [ "--hosts" = "$1" ]
  82. then
  83. shift
  84. export HADOOP_SLAVES="${HADOOP_CONF_DIR}/$1"
  85. shift
  86. elif [ "--hostnames" = "$1" ]
  87. then
  88. shift
  89. export HADOOP_SLAVE_NAMES=$1
  90. shift
  91. fi
  92. fi
  93. # User can specify hostnames or a file where the hostnames are (not both)
  94. # (same check as above but now we know it's command line options that cause
  95. # the problem)
  96. if [[ ( "$HADOOP_SLAVES" != '' ) && ( "$HADOOP_SLAVE_NAMES" != '' ) ]] ; then
  97. echo \
  98. "Error: Please specify one of --hosts or --hostnames options and not both."
  99. exit 1
  100. fi
  101. if [ -f "${HADOOP_CONF_DIR}/hadoop-env.sh" ]; then
  102. . "${HADOOP_CONF_DIR}/hadoop-env.sh"
  103. fi
  104. # check if net.ipv6.bindv6only is set to 1
  105. bindv6only=$(/sbin/sysctl -n net.ipv6.bindv6only 2> /dev/null)
  106. if [ -n "$bindv6only" ] && [ "$bindv6only" -eq "1" ] && [ "$HADOOP_ALLOW_IPV6" != "yes" ]
  107. then
  108. echo "Error: \"net.ipv6.bindv6only\" is set to 1 - Java networking could be broken"
  109. echo "For more info: http://wiki.apache.org/hadoop/HadoopIPv6"
  110. exit 1
  111. fi
  112. # Newer versions of glibc use an arena memory allocator that causes virtual
  113. # memory usage to explode. This interacts badly with the many threads that
  114. # we use in Hadoop. Tune the variable down to prevent vmem explosion.
  115. export MALLOC_ARENA_MAX=${MALLOC_ARENA_MAX:-4}
  116. # Attempt to set JAVA_HOME if it is not set
  117. if [[ -z $JAVA_HOME ]]; then
  118. # On OSX use java_home (or /Library for older versions)
  119. if [ "Darwin" == "$(uname -s)" ]; then
  120. if [ -x /usr/libexec/java_home ]; then
  121. export JAVA_HOME=($(/usr/libexec/java_home))
  122. else
  123. export JAVA_HOME=(/Library/Java/Home)
  124. fi
  125. fi
  126. # Bail if we did not detect it
  127. if [[ -z $JAVA_HOME ]]; then
  128. echo "Error: JAVA_HOME is not set and could not be found." 1>&2
  129. exit 1
  130. fi
  131. fi
  132. JAVA=$JAVA_HOME/bin/java
  133. # some Java parameters
  134. JAVA_HEAP_MAX=-Xmx1000m
  135. # check envvars which might override default args
  136. if [ "$HADOOP_HEAPSIZE" != "" ]; then
  137. #echo "run with heapsize $HADOOP_HEAPSIZE"
  138. JAVA_HEAP_MAX="-Xmx""$HADOOP_HEAPSIZE""m"
  139. #echo $JAVA_HEAP_MAX
  140. fi
  141. # CLASSPATH initially contains $HADOOP_CONF_DIR
  142. CLASSPATH="${HADOOP_CONF_DIR}"
  143. # so that filenames w/ spaces are handled correctly in loops below
  144. IFS=
  145. if [ "$HADOOP_COMMON_HOME" = "" ]; then
  146. if [ -d "${HADOOP_PREFIX}/$HADOOP_COMMON_DIR" ]; then
  147. export HADOOP_COMMON_HOME=$HADOOP_PREFIX
  148. fi
  149. fi
  150. # for releases, add core hadoop jar & webapps to CLASSPATH
  151. if [ -d "$HADOOP_COMMON_HOME/$HADOOP_COMMON_DIR/webapps" ]; then
  152. CLASSPATH=${CLASSPATH}:$HADOOP_COMMON_HOME/$HADOOP_COMMON_DIR
  153. fi
  154. if [ -d "$HADOOP_COMMON_HOME/$HADOOP_COMMON_LIB_JARS_DIR" ]; then
  155. CLASSPATH=${CLASSPATH}:$HADOOP_COMMON_HOME/$HADOOP_COMMON_LIB_JARS_DIR'/*'
  156. fi
  157. CLASSPATH=${CLASSPATH}:$HADOOP_COMMON_HOME/$HADOOP_COMMON_DIR'/*'
  158. # default log directory & file
  159. if [ "$HADOOP_LOG_DIR" = "" ]; then
  160. HADOOP_LOG_DIR="$HADOOP_PREFIX/logs"
  161. fi
  162. if [ "$HADOOP_LOGFILE" = "" ]; then
  163. HADOOP_LOGFILE='hadoop.log'
  164. fi
  165. # default policy file for service-level authorization
  166. if [ "$HADOOP_POLICYFILE" = "" ]; then
  167. HADOOP_POLICYFILE="hadoop-policy.xml"
  168. fi
  169. # restore ordinary behaviour
  170. unset IFS
  171. # setup 'java.library.path' for native-hadoop code if necessary
  172. if [ -d "${HADOOP_PREFIX}/build/native" -o -d "${HADOOP_PREFIX}/$HADOOP_COMMON_LIB_NATIVE_DIR" ]; then
  173. if [ -d "${HADOOP_PREFIX}/$HADOOP_COMMON_LIB_NATIVE_DIR" ]; then
  174. if [ "x$JAVA_LIBRARY_PATH" != "x" ]; then
  175. JAVA_LIBRARY_PATH=${JAVA_LIBRARY_PATH}:${HADOOP_PREFIX}/$HADOOP_COMMON_LIB_NATIVE_DIR
  176. else
  177. JAVA_LIBRARY_PATH=${HADOOP_PREFIX}/$HADOOP_COMMON_LIB_NATIVE_DIR
  178. fi
  179. fi
  180. fi
  181. # setup a default TOOL_PATH
  182. TOOL_PATH="${TOOL_PATH:-$HADOOP_PREFIX/share/hadoop/tools/lib/*}"
  183. HADOOP_OPTS="$HADOOP_OPTS -Dhadoop.log.dir=$HADOOP_LOG_DIR"
  184. HADOOP_OPTS="$HADOOP_OPTS -Dhadoop.log.file=$HADOOP_LOGFILE"
  185. HADOOP_OPTS="$HADOOP_OPTS -Dhadoop.home.dir=$HADOOP_PREFIX"
  186. HADOOP_OPTS="$HADOOP_OPTS -Dhadoop.id.str=$HADOOP_IDENT_STRING"
  187. HADOOP_OPTS="$HADOOP_OPTS -Dhadoop.root.logger=${HADOOP_ROOT_LOGGER:-INFO,console}"
  188. if [ "x$JAVA_LIBRARY_PATH" != "x" ]; then
  189. HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$JAVA_LIBRARY_PATH"
  190. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_LIBRARY_PATH
  191. fi
  192. HADOOP_OPTS="$HADOOP_OPTS -Dhadoop.policy.file=$HADOOP_POLICYFILE"
  193. # Disable ipv6 as it can cause issues
  194. HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true"
  195. # put hdfs in classpath if present
  196. if [ "$HADOOP_HDFS_HOME" = "" ]; then
  197. if [ -d "${HADOOP_PREFIX}/$HDFS_DIR" ]; then
  198. export HADOOP_HDFS_HOME=$HADOOP_PREFIX
  199. fi
  200. fi
  201. if [ -d "$HADOOP_HDFS_HOME/$HDFS_DIR/webapps" ]; then
  202. CLASSPATH=${CLASSPATH}:$HADOOP_HDFS_HOME/$HDFS_DIR
  203. fi
  204. if [ -d "$HADOOP_HDFS_HOME/$HDFS_LIB_JARS_DIR" ]; then
  205. CLASSPATH=${CLASSPATH}:$HADOOP_HDFS_HOME/$HDFS_LIB_JARS_DIR'/*'
  206. fi
  207. CLASSPATH=${CLASSPATH}:$HADOOP_HDFS_HOME/$HDFS_DIR'/*'
  208. # put yarn in classpath if present
  209. if [ "$HADOOP_YARN_HOME" = "" ]; then
  210. if [ -d "${HADOOP_PREFIX}/$YARN_DIR" ]; then
  211. export HADOOP_YARN_HOME=$HADOOP_PREFIX
  212. fi
  213. fi
  214. if [ -d "$HADOOP_YARN_HOME/$YARN_DIR/webapps" ]; then
  215. CLASSPATH=${CLASSPATH}:$HADOOP_YARN_HOME/$YARN_DIR
  216. fi
  217. if [ -d "$HADOOP_YARN_HOME/$YARN_LIB_JARS_DIR" ]; then
  218. CLASSPATH=${CLASSPATH}:$HADOOP_YARN_HOME/$YARN_LIB_JARS_DIR'/*'
  219. fi
  220. CLASSPATH=${CLASSPATH}:$HADOOP_YARN_HOME/$YARN_DIR'/*'
  221. # put mapred in classpath if present AND different from YARN
  222. if [ "$HADOOP_MAPRED_HOME" = "" ]; then
  223. if [ -d "${HADOOP_PREFIX}/$MAPRED_DIR" ]; then
  224. export HADOOP_MAPRED_HOME=$HADOOP_PREFIX
  225. fi
  226. fi
  227. if [ "$HADOOP_MAPRED_HOME/$MAPRED_DIR" != "$HADOOP_YARN_HOME/$YARN_DIR" ] ; then
  228. if [ -d "$HADOOP_MAPRED_HOME/$MAPRED_DIR/webapps" ]; then
  229. CLASSPATH=${CLASSPATH}:$HADOOP_MAPRED_HOME/$MAPRED_DIR
  230. fi
  231. if [ -d "$HADOOP_MAPRED_HOME/$MAPRED_LIB_JARS_DIR" ]; then
  232. CLASSPATH=${CLASSPATH}:$HADOOP_MAPRED_HOME/$MAPRED_LIB_JARS_DIR'/*'
  233. fi
  234. CLASSPATH=${CLASSPATH}:$HADOOP_MAPRED_HOME/$MAPRED_DIR'/*'
  235. fi
  236. # Add the user-specified CLASSPATH via HADOOP_CLASSPATH
  237. # Add it first or last depending on if user has
  238. # set env-var HADOOP_USER_CLASSPATH_FIRST
  239. if [ "$HADOOP_CLASSPATH" != "" ]; then
  240. # Prefix it if its to be preceded
  241. if [ "$HADOOP_USER_CLASSPATH_FIRST" != "" ]; then
  242. CLASSPATH=${HADOOP_CLASSPATH}:${CLASSPATH}
  243. else
  244. CLASSPATH=${CLASSPATH}:${HADOOP_CLASSPATH}
  245. fi
  246. fi