hadoop-config.sh 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  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. # the root of the Hadoop installation
  26. #TODO: change the env variable when dir structure is changed
  27. export HADOOP_HOME=`dirname "$this"`/..
  28. export HADOOP_COMMON_HOME="${HADOOP_HOME}"
  29. #export HADOOP_HOME=`dirname "$this"`/../..
  30. #export HADOOP_COMMON_HOME="${HADOOP_COMMON_HOME:-`dirname "$this"`/..}"
  31. #check to see if the conf dir is given as an optional argument
  32. if [ $# -gt 1 ]
  33. then
  34. if [ "--config" = "$1" ]
  35. then
  36. shift
  37. confdir=$1
  38. shift
  39. HADOOP_CONF_DIR=$confdir
  40. fi
  41. fi
  42. # Allow alternate conf dir location.
  43. export HADOOP_CONF_DIR="${HADOOP_CONF_DIR:-$HADOOP_HOME/conf}"
  44. #check to see it is specified whether to use the slaves or the
  45. # masters file
  46. if [ $# -gt 1 ]
  47. then
  48. if [ "--hosts" = "$1" ]
  49. then
  50. shift
  51. slavesfile=$1
  52. shift
  53. export HADOOP_SLAVES="${HADOOP_CONF_DIR}/$slavesfile"
  54. fi
  55. fi
  56. cygwin=false
  57. case "`uname`" in
  58. CYGWIN*) cygwin=true;;
  59. esac
  60. if [ -f "${HADOOP_CONF_DIR}/hadoop-env.sh" ]; then
  61. . "${HADOOP_CONF_DIR}/hadoop-env.sh"
  62. fi
  63. # check if net.ipv6.bindv6only is set to 1
  64. bindv6only=$(/sbin/sysctl -n net.ipv6.bindv6only 2> /dev/null)
  65. if [ -n "$bindv6only" ] && [ "$bindv6only" -eq "1" ] && [ "$HADOOP_ALLOW_IPV6" != "yes" ]
  66. then
  67. echo "Error: \"net.ipv6.bindv6only\" is set to 1 - Java networking could be broken"
  68. echo "For more info: http://wiki.apache.org/hadoop/HadoopIPv6"
  69. exit 1
  70. fi
  71. # Newer versions of glibc use an arena memory allocator that causes virtual
  72. # memory usage to explode. This interacts badly with the many threads that
  73. # we use in Hadoop. Tune the variable down to prevent vmem explosion.
  74. export MALLOC_ARENA_MAX=${MALLOC_ARENA_MAX:-4}
  75. # some Java parameters
  76. if [ "$JAVA_HOME" != "" ]; then
  77. #echo "run java in $JAVA_HOME"
  78. JAVA_HOME=$JAVA_HOME
  79. fi
  80. if [ "$JAVA_HOME" = "" ]; then
  81. echo "Error: JAVA_HOME is not set."
  82. exit 1
  83. fi
  84. JAVA=$JAVA_HOME/bin/java
  85. JAVA_HEAP_MAX=-Xmx1000m
  86. # check envvars which might override default args
  87. if [ "$HADOOP_HEAPSIZE" != "" ]; then
  88. #echo "run with heapsize $HADOOP_HEAPSIZE"
  89. JAVA_HEAP_MAX="-Xmx""$HADOOP_HEAPSIZE""m"
  90. #echo $JAVA_HEAP_MAX
  91. fi
  92. # CLASSPATH initially contains $HADOOP_CONF_DIR
  93. CLASSPATH="${HADOOP_CONF_DIR}"
  94. CLASSPATH=${CLASSPATH}:$JAVA_HOME/lib/tools.jar
  95. # for developers, add Hadoop classes to CLASSPATH
  96. if [ -d "$HADOOP_COMMON_HOME/build/classes" ]; then
  97. CLASSPATH=${CLASSPATH}:$HADOOP_COMMON_HOME/build/classes
  98. fi
  99. if [ -d "$HADOOP_COMMON_HOME/build/webapps" ]; then
  100. CLASSPATH=${CLASSPATH}:$HADOOP_COMMON_HOME/build
  101. fi
  102. if [ -d "$HADOOP_COMMON_HOME/build/test/classes" ]; then
  103. CLASSPATH=${CLASSPATH}:$HADOOP_COMMON_HOME/build/test/classes
  104. fi
  105. if [ -d "$HADOOP_COMMON_HOME/build/test/core/classes" ]; then
  106. CLASSPATH=${CLASSPATH}:$HADOOP_COMMON_HOME/build/test/core/classes
  107. fi
  108. # so that filenames w/ spaces are handled correctly in loops below
  109. IFS=
  110. # for releases, add core hadoop jar & webapps to CLASSPATH
  111. if [ -d "$HADOOP_COMMON_HOME/webapps" ]; then
  112. CLASSPATH=${CLASSPATH}:$HADOOP_COMMON_HOME
  113. fi
  114. for f in $HADOOP_COMMON_HOME/hadoop-*.jar; do
  115. CLASSPATH=${CLASSPATH}:$f;
  116. done
  117. # add libs to CLASSPATH
  118. for f in $HADOOP_COMMON_HOME/lib/*.jar; do
  119. CLASSPATH=${CLASSPATH}:$f;
  120. done
  121. if [ -d "$HADOOP_COMMON_HOME/build/ivy/lib/Hadoop-Common/common" ]; then
  122. for f in $HADOOP_COMMON_HOME/build/ivy/lib/Hadoop-Common/common/*.jar; do
  123. CLASSPATH=${CLASSPATH}:$f;
  124. done
  125. fi
  126. if [ -d "$HADOOP_COMMON_HOME/build/ivy/lib/Hadoop-Hdfs/common" ]; then
  127. for f in $HADOOP_COMMON_HOME/build/ivy/lib/Hadoop-Hdfs/common/*.jar; do
  128. CLASSPATH=${CLASSPATH}:$f;
  129. done
  130. fi
  131. if [ -d "$HADOOP_COMMON_HOME/build/ivy/lib/Hadoop/common" ]; then
  132. for f in $HADOOP_COMMON_HOME/build/ivy/lib/Hadoop/common/*.jar; do
  133. CLASSPATH=${CLASSPATH}:$f;
  134. done
  135. fi
  136. for f in $HADOOP_COMMON_HOME/lib/jsp-2.1/*.jar; do
  137. CLASSPATH=${CLASSPATH}:$f;
  138. done
  139. # add user-specified CLASSPATH last
  140. if [ "$HADOOP_CLASSPATH" != "" ]; then
  141. CLASSPATH=${CLASSPATH}:${HADOOP_CLASSPATH}
  142. fi
  143. # default log directory & file
  144. if [ "$HADOOP_LOG_DIR" = "" ]; then
  145. HADOOP_LOG_DIR="$HADOOP_HOME/logs"
  146. fi
  147. if [ "$HADOOP_LOGFILE" = "" ]; then
  148. HADOOP_LOGFILE='hadoop.log'
  149. fi
  150. # default policy file for service-level authorization
  151. if [ "$HADOOP_POLICYFILE" = "" ]; then
  152. HADOOP_POLICYFILE="hadoop-policy.xml"
  153. fi
  154. # restore ordinary behaviour
  155. unset IFS
  156. # cygwin path translation
  157. if $cygwin; then
  158. HADOOP_COMMON_HOME=`cygpath -w "$HADOOP_COMMON_HOME"`
  159. HADOOP_LOG_DIR=`cygpath -w "$HADOOP_LOG_DIR"`
  160. JAVA_LIBRARY_PATH=`cygpath -w "$JAVA_LIBRARY_PATH"`
  161. fi
  162. # setup 'java.library.path' for native-hadoop code if necessary
  163. if [ -d "${HADOOP_COMMON_HOME}/build/native" -o -d "${HADOOP_COMMON_HOME}/lib/native" ]; then
  164. JAVA_PLATFORM=`CLASSPATH=${CLASSPATH} ${JAVA} -Xmx32m ${HADOOP_JAVA_PLATFORM_OPTS} org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"`
  165. if [ -d "$HADOOP_COMMON_HOME/build/native" ]; then
  166. if [ "x$JAVA_LIBRARY_PATH" != "x" ]; then
  167. JAVA_LIBRARY_PATH=${JAVA_LIBRARY_PATH}:${HADOOP_COMMON_HOME}/build/native/${JAVA_PLATFORM}/lib
  168. else
  169. JAVA_LIBRARY_PATH=${HADOOP_COMMON_HOME}/build/native/${JAVA_PLATFORM}/lib
  170. fi
  171. fi
  172. if [ -d "${HADOOP_COMMON_HOME}/lib/native" ]; then
  173. if [ "x$JAVA_LIBRARY_PATH" != "x" ]; then
  174. JAVA_LIBRARY_PATH=${JAVA_LIBRARY_PATH}:${HADOOP_COMMON_HOME}/lib/native/${JAVA_PLATFORM}
  175. else
  176. JAVA_LIBRARY_PATH=${HADOOP_COMMON_HOME}/lib/native/${JAVA_PLATFORM}
  177. fi
  178. fi
  179. fi
  180. # cygwin path translation
  181. if $cygwin; then
  182. JAVA_LIBRARY_PATH=`cygpath -p "$JAVA_LIBRARY_PATH"`
  183. fi
  184. HADOOP_OPTS="$HADOOP_OPTS -Dhadoop.log.dir=$HADOOP_LOG_DIR"
  185. HADOOP_OPTS="$HADOOP_OPTS -Dhadoop.log.file=$HADOOP_LOGFILE"
  186. HADOOP_OPTS="$HADOOP_OPTS -Dhadoop.home.dir=$HADOOP_COMMON_HOME"
  187. HADOOP_OPTS="$HADOOP_OPTS -Dhadoop.id.str=$HADOOP_IDENT_STRING"
  188. HADOOP_OPTS="$HADOOP_OPTS -Dhadoop.root.logger=${HADOOP_ROOT_LOGGER:-INFO,console}"
  189. HADOOP_OPTS="$HADOOP_OPTS -Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,console}"
  190. if [ "x$JAVA_LIBRARY_PATH" != "x" ]; then
  191. HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$JAVA_LIBRARY_PATH"
  192. fi
  193. HADOOP_OPTS="$HADOOP_OPTS -Dhadoop.policy.file=$HADOOP_POLICYFILE"
  194. # Disable ipv6 as it can cause issues
  195. HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true"
  196. # put hdfs in classpath if present
  197. if [ "$HADOOP_HDFS_HOME" = "" ]; then
  198. if [ -d "${HADOOP_HOME}/hdfs" ]; then
  199. HADOOP_HDFS_HOME=$HADOOP_HOME/hdfs
  200. #echo Found HDFS installed at $HADOOP_HDFS_HOME
  201. fi
  202. fi
  203. if [ -d "${HADOOP_HDFS_HOME}" ]; then
  204. if [ -d "$HADOOP_HDFS_HOME/webapps" ]; then
  205. CLASSPATH=${CLASSPATH}:$HADOOP_HDFS_HOME
  206. fi
  207. if [ -d "${HADOOP_HDFS_HOME}/conf" ]; then
  208. CLASSPATH=${CLASSPATH}:${HADOOP_HDFS_HOME}/conf
  209. fi
  210. for f in $HADOOP_HDFS_HOME/hadoop-hdfs-*.jar; do
  211. CLASSPATH=${CLASSPATH}:$f;
  212. done
  213. # add libs to CLASSPATH
  214. for f in $HADOOP_HDFS_HOME/lib/*.jar; do
  215. CLASSPATH=${CLASSPATH}:$f;
  216. done
  217. if [ -d "$HADOOP_HDFS_HOME/build/classes" ]; then
  218. CLASSPATH=${CLASSPATH}:$HADOOP_HDFS_HOME/build/classes
  219. fi
  220. fi
  221. # cygwin path translation
  222. if $cygwin; then
  223. HADOOP_HDFS_HOME=`cygpath -w "$HADOOP_HDFS_HOME"`
  224. fi
  225. # set mapred home if mapred is present
  226. if [ "$HADOOP_MAPRED_HOME" = "" ]; then
  227. if [ -d "${HADOOP_HOME}/mapred" ]; then
  228. HADOOP_MAPRED_HOME=$HADOOP_HOME/mapred
  229. #echo Found MAPRED installed at $HADOOP_MAPRED_HOME
  230. fi
  231. fi
  232. if [ -d "${HADOOP_MAPRED_HOME}" ]; then
  233. if [ -d "$HADOOP_MAPRED_HOME/webapps" ]; then
  234. CLASSPATH=${CLASSPATH}:$HADOOP_MAPRED_HOME
  235. fi
  236. if [ -d "${HADOOP_MAPRED_HOME}/conf" ]; then
  237. CLASSPATH=${CLASSPATH}:${HADOOP_MAPRED_HOME}/conf
  238. fi
  239. for f in $HADOOP_MAPRED_HOME/hadoop-mapred-*.jar; do
  240. CLASSPATH=${CLASSPATH}:$f
  241. done
  242. for f in $HADOOP_MAPRED_HOME/lib/*.jar; do
  243. CLASSPATH=${CLASSPATH}:$f
  244. done
  245. if [ -d "$HADOOP_MAPRED_HOME/build/classes" ]; then
  246. CLASSPATH=${CLASSPATH}:$HADOOP_MAPRED_HOME/build/classes
  247. fi
  248. if [ -d "$HADOOP_MAPRED_HOME/build/tools" ]; then
  249. CLASSPATH=${CLASSPATH}:$HADOOP_MAPRED_HOME/build/tools
  250. fi
  251. for f in $HADOOP_MAPRED_HOME/hadoop-mapred-tools-*.jar; do
  252. TOOL_PATH=${TOOL_PATH}:$f;
  253. done
  254. for f in $HADOOP_MAPRED_HOME/build/hadoop-mapred-tools-*.jar; do
  255. TOOL_PATH=${TOOL_PATH}:$f;
  256. done
  257. fi
  258. # cygwin path translation
  259. if $cygwin; then
  260. HADOOP_MAPRED_HOME=`cygpath -w "$HADOOP_MAPRED_HOME"`
  261. TOOL_PATH=`cygpath -p -w "$TOOL_PATH"`
  262. fi