hadoop-setup-conf.sh 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494
  1. #!/usr/bin/env bash
  2. # Licensed to the Apache Software Foundation (ASF) under one or more
  3. # contributor license agreements. See the NOTICE file distributed with
  4. # this work for additional information regarding copyright ownership.
  5. # The ASF licenses this file to You under the Apache License, Version 2.0
  6. # (the "License"); you may not use this file except in compliance with
  7. # the License. You may obtain a copy of the License at
  8. #
  9. # http://www.apache.org/licenses/LICENSE-2.0
  10. #
  11. # Unless required by applicable law or agreed to in writing, software
  12. # distributed under the License is distributed on an "AS IS" BASIS,
  13. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. # See the License for the specific language governing permissions and
  15. # limitations under the License.
  16. bin=`dirname "$0"`
  17. bin=`cd "$bin"; pwd`
  18. this="${BASH_SOURCE-$0}"
  19. export HADOOP_PREFIX=`dirname "$this"`/..
  20. usage() {
  21. echo "
  22. usage: $0 <parameters>
  23. Optional parameters:
  24. --auto Setup path and configuration automatically
  25. --default Setup configuration as default
  26. --conf-dir=/etc/hadoop Set configuration directory
  27. --datanode-dir=/var/lib/hadoop/hdfs/datanode Set datanode directory
  28. --group=hadoop Set Hadoop group name
  29. -h Display this message
  30. --hdfs-user=hdfs Set HDFS user
  31. --jobtracker-host=hostname Set jobtracker host
  32. --namenode-host=hostname Set namenode host
  33. --secondarynamenode-host=hostname Set secondary namenode host
  34. --kerberos-realm=KERBEROS.EXAMPLE.COM Set Kerberos realm
  35. --kinit-location=/usr/kerberos/bin/kinit Set kinit location
  36. --keytab-dir=/etc/security/keytabs Set keytab directory
  37. --log-dir=/var/log/hadoop Set log directory
  38. --pid-dir=/var/run/hadoop Set pid directory
  39. --hdfs-dir=/var/lib/hadoop/hdfs Set HDFS directory
  40. --hdfs-user-keytab=/home/hdfs/hdfs.keytab Set HDFS user key tab
  41. --mapred-dir=/var/lib/hadoop/mapred Set mapreduce directory
  42. --mapreduce-user=mr Set mapreduce user
  43. --mapreduce-user-keytab=/home/mr/hdfs.keytab Set mapreduce user key tab
  44. --namenode-dir=/var/lib/hadoop/hdfs/namenode Set namenode directory
  45. --replication=3 Set replication factor
  46. --taskscheduler=org.apache.hadoop.mapred.JobQueueTaskScheduler Set task scheduler
  47. --datanodes=hostname1,hostname2,... SET the datanodes
  48. --tasktrackers=hostname1,hostname2,... SET the tasktrackers
  49. "
  50. exit 1
  51. }
  52. check_permission() {
  53. TARGET=$1
  54. OWNER="0"
  55. RESULT=0
  56. while [ "$TARGET" != "/" ]; do
  57. if [ "`uname`" = "Darwin" ]; then
  58. OWNER=`stat -f %u $TARGET`
  59. else
  60. OWNER=`stat -c %u $TARGET`
  61. fi
  62. if [ "$OWNER" != "0" ]; then
  63. RESULT=1
  64. break
  65. fi
  66. TARGET=`dirname $TARGET`
  67. done
  68. return $RESULT
  69. }
  70. template_generator() {
  71. REGEX='(\$\{[a-zA-Z_][a-zA-Z_0-9]*\})'
  72. if [ -e $2 ]; then
  73. mv -f $2 "$2.bak"
  74. fi
  75. cat $1 |
  76. while read line ; do
  77. while [[ "$line" =~ $REGEX ]] ; do
  78. LHS=${BASH_REMATCH[1]}
  79. RHS="$(eval echo "\"$LHS\"")"
  80. line=${line//$LHS/$RHS}
  81. done
  82. echo $line >> $2
  83. done
  84. }
  85. OPTS=$(getopt \
  86. -n $0 \
  87. -o '' \
  88. -l 'auto' \
  89. -l 'java-home:' \
  90. -l 'conf-dir:' \
  91. -l 'default' \
  92. -l 'group:' \
  93. -l 'hdfs-dir:' \
  94. -l 'namenode-dir:' \
  95. -l 'datanode-dir:' \
  96. -l 'mapred-dir:' \
  97. -l 'namenode-host:' \
  98. -l 'secondarynamenode-host:' \
  99. -l 'jobtracker-host:' \
  100. -l 'log-dir:' \
  101. -l 'pid-dir:' \
  102. -l 'replication:' \
  103. -l 'taskscheduler:' \
  104. -l 'hdfs-user:' \
  105. -l 'hdfs-user-keytab:' \
  106. -l 'mapreduce-user:' \
  107. -l 'mapreduce-user-keytab:' \
  108. -l 'keytab-dir:' \
  109. -l 'kerberos-realm:' \
  110. -l 'kinit-location:' \
  111. -l 'datanodes:' \
  112. -l 'tasktrackers:' \
  113. -o 'h' \
  114. -- "$@")
  115. if [ $? != 0 ] ; then
  116. usage
  117. fi
  118. # Make sure the HADOOP_LOG_DIR is not picked up from user environment.
  119. unset HADOOP_LOG_DIR
  120. eval set -- "${OPTS}"
  121. while true ; do
  122. case "$1" in
  123. --auto)
  124. AUTOSETUP=1
  125. AUTOMATED=1
  126. shift
  127. ;;
  128. --java-home)
  129. JAVA_HOME=$2; shift 2
  130. AUTOMATED=1
  131. ;;
  132. --conf-dir)
  133. HADOOP_CONF_DIR=$2; shift 2
  134. AUTOMATED=1
  135. ;;
  136. --default)
  137. AUTOMATED=1; shift
  138. ;;
  139. --group)
  140. HADOOP_GROUP=$2; shift 2
  141. AUTOMATED=1
  142. ;;
  143. -h)
  144. usage
  145. ;;
  146. --hdfs-dir)
  147. HADOOP_HDFS_DIR=$2; shift 2
  148. AUTOMATED=1
  149. ;;
  150. --namenode-dir)
  151. HADOOP_NN_DIR=$2; shift 2
  152. AUTOMATED=1
  153. ;;
  154. --datanode-dir)
  155. HADOOP_DN_DIR=$2; shift 2
  156. AUTOMATED=1
  157. ;;
  158. --mapred-dir)
  159. HADOOP_MAPRED_DIR=$2; shift 2
  160. AUTOMATED=1
  161. ;;
  162. --namenode-host)
  163. HADOOP_NN_HOST=$2; shift 2
  164. AUTOMATED=1
  165. ;;
  166. --secondarynamenode-host)
  167. HADOOP_SNN_HOST=$2; shift 2
  168. AUTOMATED=1
  169. ;;
  170. --jobtracker-host)
  171. HADOOP_JT_HOST=$2; shift 2
  172. AUTOMATED=1
  173. ;;
  174. --log-dir)
  175. HADOOP_LOG_DIR=$2; shift 2
  176. AUTOMATED=1
  177. ;;
  178. --pid-dir)
  179. HADOOP_PID_DIR=$2; shift 2
  180. AUTOMATED=1
  181. ;;
  182. --replication)
  183. HADOOP_REPLICATION=$2; shift 2
  184. AUTOMATED=1
  185. ;;
  186. --taskscheduler)
  187. HADOOP_TASK_SCHEDULER=$2; shift 2
  188. AUTOMATED=1
  189. ;;
  190. --hdfs-user)
  191. HADOOP_HDFS_USER=$2; shift 2
  192. AUTOMATED=1
  193. ;;
  194. --mapreduce-user)
  195. HADOOP_MR_USER=$2; shift 2
  196. AUTOMATED=1
  197. ;;
  198. --keytab-dir)
  199. KEYTAB_DIR=$2; shift 2
  200. AUTOMATED=1
  201. ;;
  202. --hdfs-user-keytab)
  203. HDFS_KEYTAB=$2; shift 2
  204. AUTOMATED=1
  205. ;;
  206. --mapreduce-user-keytab)
  207. MR_KEYTAB=$2; shift 2
  208. AUTOMATED=1
  209. ;;
  210. --kerberos-realm)
  211. KERBEROS_REALM=$2; shift 2
  212. SECURITY_TYPE="kerberos"
  213. AUTOMATED=1
  214. ;;
  215. --kinit-location)
  216. KINIT=$2; shift 2
  217. AUTOMATED=1
  218. ;;
  219. --datanodes)
  220. DATANODES=$2; shift 2
  221. AUTOMATED=1
  222. DATANODES=$(echo $DATANODES | tr ',' ' ')
  223. ;;
  224. --tasktrackers)
  225. TASKTRACKERS=$2; shift 2
  226. AUTOMATED=1
  227. TASKTRACKERS=$(echo $TASKTRACKERS | tr ',' ' ')
  228. ;;
  229. --)
  230. shift ; break
  231. ;;
  232. *)
  233. echo "Unknown option: $1"
  234. usage
  235. exit 1
  236. ;;
  237. esac
  238. done
  239. AUTOSETUP=${AUTOSETUP:-1}
  240. JAVA_HOME=${JAVA_HOME:-/usr/java/default}
  241. HADOOP_GROUP=${HADOOP_GROUP:-hadoop}
  242. HADOOP_NN_HOST=${HADOOP_NN_HOST:-`hostname`}
  243. HADOOP_SNN_HOST=${HADOOP_SNN_HOST:-`hostname`}
  244. HADOOP_NN_DIR=${HADOOP_NN_DIR:-/var/lib/hadoop/hdfs/namenode}
  245. HADOOP_DN_DIR=${HADOOP_DN_DIR:-/var/lib/hadoop/hdfs/datanode}
  246. HADOOP_JT_HOST=${HADOOP_JT_HOST:-`hostname`}
  247. HADOOP_HDFS_DIR=${HADOOP_HDFS_DIR:-/var/lib/hadoop/hdfs}
  248. HADOOP_MAPRED_DIR=${HADOOP_MAPRED_DIR:-/var/lib/hadoop/mapred}
  249. HADOOP_LOG_DIR=${HADOOP_LOG_DIR:-/var/log/hadoop}
  250. HADOOP_PID_DIR=${HADOOP_PID_DIR:-/var/log/hadoop}
  251. HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-/etc/hadoop}
  252. HADOOP_REPLICATION=${HADOOP_RELICATION:-3}
  253. HADOOP_TASK_SCHEDULER=${HADOOP_TASK_SCHEDULER:-org.apache.hadoop.mapred.JobQueueTaskScheduler}
  254. HADOOP_HDFS_USER=${HADOOP_HDFS_USER:-hdfs}
  255. HADOOP_MR_USER=${HADOOP_MR_USER:-mr}
  256. KEYTAB_DIR=${KEYTAB_DIR:-/etc/security/keytabs}
  257. HDFS_KEYTAB=${HDFS_KEYTAB:-/home/hdfs/hdfs.keytab}
  258. MR_KEYTAB=${MR_KEYTAB:-/home/mr/mr.keytab}
  259. KERBEROS_REALM=${KERBEROS_REALM:-KERBEROS.EXAMPLE.COM}
  260. SECURITY_TYPE=${SECURITY_TYPE:-simple}
  261. KINIT=${KINIT:-/usr/kerberos/bin/kinit}
  262. if [ "${SECURITY_TYPE}" = "kerberos" ]; then
  263. TASK_CONTROLLER="org.apache.hadoop.mapred.LinuxTaskController"
  264. HADOOP_DN_ADDR="0.0.0.0:1019"
  265. HADOOP_DN_HTTP_ADDR="0.0.0.0:1022"
  266. SECURITY="true"
  267. HADOOP_SECURE_DN_USER=${HADOOP_HDFS_USER}
  268. else
  269. TASK_CONTROLLER="org.apache.hadoop.mapred.DefaultTaskController"
  270. HADOOP_DN_ADDR="0.0.0.0:50010"
  271. HADOOP_DN_HTTP_ADDR="0.0.0.0:50075"
  272. SECURITY="false"
  273. HADOOP_SECURE_DN_USER=""
  274. fi
  275. #unset env vars
  276. unset HADOOP_CLIENT_OPTS HADOOP_NAMENODE_OPTS HADOOP_JOBTRACKER_OPTS HADOOP_TASKTRACKER_OPTS HADOOP_DATANODE_OPTS HADOOP_SECONDARYNAMENODE_OPTS HADOOP_JAVA_PLATFORM_OPTS
  277. if [ "${AUTOMATED}" != "1" ]; then
  278. echo "Setup Hadoop Configuration"
  279. echo
  280. echo -n "Where would you like to put config directory? (${HADOOP_CONF_DIR}) "
  281. read USER_HADOOP_CONF_DIR
  282. echo -n "Where would you like to put log directory? (${HADOOP_LOG_DIR}) "
  283. read USER_HADOOP_LOG_DIR
  284. echo -n "Where would you like to put pid directory? (${HADOOP_PID_DIR}) "
  285. read USER_HADOOP_PID_DIR
  286. echo -n "What is the host of the namenode? (${HADOOP_NN_HOST}) "
  287. read USER_HADOOP_NN_HOST
  288. echo -n "Where would you like to put namenode data directory? (${HADOOP_NN_DIR}) "
  289. read USER_HADOOP_NN_DIR
  290. echo -n "Where would you like to put datanode data directory? (${HADOOP_DN_DIR}) "
  291. read USER_HADOOP_DN_DIR
  292. echo -n "What is the host of the jobtracker? (${HADOOP_JT_HOST}) "
  293. read USER_HADOOP_JT_HOST
  294. echo -n "Where would you like to put jobtracker/tasktracker data directory? (${HADOOP_MAPRED_DIR}) "
  295. read USER_HADOOP_MAPRED_DIR
  296. echo -n "Where is JAVA_HOME directory? (${JAVA_HOME}) "
  297. read USER_JAVA_HOME
  298. echo -n "Would you like to create directories/copy conf files to localhost? (Y/n) "
  299. read USER_AUTOSETUP
  300. echo
  301. JAVA_HOME=${USER_USER_JAVA_HOME:-$JAVA_HOME}
  302. HADOOP_NN_HOST=${USER_HADOOP_NN_HOST:-$HADOOP_NN_HOST}
  303. HADOOP_NN_DIR=${USER_HADOOP_NN_DIR:-$HADOOP_NN_DIR}
  304. HADOOP_DN_DIR=${USER_HADOOP_DN_DIR:-$HADOOP_DN_DIR}
  305. HADOOP_JT_HOST=${USER_HADOOP_JT_HOST:-$HADOOP_JT_HOST}
  306. HADOOP_HDFS_DIR=${USER_HADOOP_HDFS_DIR:-$HADOOP_HDFS_DIR}
  307. HADOOP_MAPRED_DIR=${USER_HADOOP_MAPRED_DIR:-$HADOOP_MAPRED_DIR}
  308. HADOOP_TASK_SCHEDULER=${HADOOP_TASK_SCHEDULER:-org.apache.hadoop.mapred.JobQueueTaskScheduler}
  309. HADOOP_LOG_DIR=${USER_HADOOP_LOG_DIR:-$HADOOP_LOG_DIR}
  310. HADOOP_PID_DIR=${USER_HADOOP_PID_DIR:-$HADOOP_PID_DIR}
  311. HADOOP_CONF_DIR=${USER_HADOOP_CONF_DIR:-$HADOOP_CONF_DIR}
  312. AUTOSETUP=${USER_AUTOSETUP:-y}
  313. echo "Review your choices:"
  314. echo
  315. echo "Config directory : ${HADOOP_CONF_DIR}"
  316. echo "Log directory : ${HADOOP_LOG_DIR}"
  317. echo "PID directory : ${HADOOP_PID_DIR}"
  318. echo "Namenode host : ${HADOOP_NN_HOST}"
  319. echo "Namenode directory : ${HADOOP_NN_DIR}"
  320. echo "Datanode directory : ${HADOOP_DN_DIR}"
  321. echo "Jobtracker host : ${HADOOP_JT_HOST}"
  322. echo "Mapreduce directory : ${HADOOP_MAPRED_DIR}"
  323. echo "Task scheduler : ${HADOOP_TASK_SCHEDULER}"
  324. echo "JAVA_HOME directory : ${JAVA_HOME}"
  325. echo "Create dirs/copy conf files : ${AUTOSETUP}"
  326. echo
  327. echo -n "Proceed with generate configuration? (y/N) "
  328. read CONFIRM
  329. if [ "${CONFIRM}" != "y" ]; then
  330. echo "User aborted setup, exiting..."
  331. exit 1
  332. fi
  333. fi
  334. if [ "${AUTOSETUP}" == "1" -o "${AUTOSETUP}" == "y" ]; then
  335. if [ -d ${KEYTAB_DIR} ]; then
  336. chmod 700 ${KEYTAB_DIR}/*
  337. chown ${HADOOP_MR_USER}:${HADOOP_GROUP} ${KEYTAB_DIR}/[jt]t.service.keytab
  338. chown ${HADOOP_HDFS_USER}:${HADOOP_GROUP} ${KEYTAB_DIR}/[dns]n.service.keytab
  339. fi
  340. chmod 755 -R ${HADOOP_PREFIX}/sbin/*hadoop*
  341. chmod 755 -R ${HADOOP_PREFIX}/bin/hadoop
  342. chmod 755 -R ${HADOOP_PREFIX}/libexec/hadoop-config.sh
  343. mkdir -p /home/${HADOOP_MR_USER}
  344. chown ${HADOOP_MR_USER}:${HADOOP_GROUP} /home/${HADOOP_MR_USER}
  345. HDFS_DIR=`echo ${HADOOP_HDFS_DIR} | sed -e 's/,/ /g'`
  346. mkdir -p ${HDFS_DIR}
  347. if [ -e ${HADOOP_NN_DIR} ]; then
  348. rm -rf ${HADOOP_NN_DIR}
  349. fi
  350. DATANODE_DIR=`echo ${HADOOP_DN_DIR} | sed -e 's/,/ /g'`
  351. mkdir -p ${DATANODE_DIR}
  352. MAPRED_DIR=`echo ${HADOOP_MAPRED_DIR} | sed -e 's/,/ /g'`
  353. mkdir -p ${MAPRED_DIR}
  354. mkdir -p ${HADOOP_CONF_DIR}
  355. check_permission ${HADOOP_CONF_DIR}
  356. if [ $? == 1 ]; then
  357. echo "Full path to ${HADOOP_CONF_DIR} should be owned by root."
  358. exit 1
  359. fi
  360. mkdir -p ${HADOOP_LOG_DIR}
  361. #create the log sub dir for diff users
  362. mkdir -p ${HADOOP_LOG_DIR}/${HADOOP_HDFS_USER}
  363. mkdir -p ${HADOOP_LOG_DIR}/${HADOOP_MR_USER}
  364. mkdir -p ${HADOOP_PID_DIR}
  365. chown ${HADOOP_HDFS_USER}:${HADOOP_GROUP} ${HDFS_DIR}
  366. chown ${HADOOP_HDFS_USER}:${HADOOP_GROUP} ${DATANODE_DIR}
  367. chmod 700 -R ${DATANODE_DIR}
  368. chown ${HADOOP_MR_USER}:${HADOOP_GROUP} ${MAPRED_DIR}
  369. chown ${HADOOP_HDFS_USER}:${HADOOP_GROUP} ${HADOOP_LOG_DIR}
  370. chmod 775 ${HADOOP_LOG_DIR}
  371. chmod 775 ${HADOOP_PID_DIR}
  372. chown root:${HADOOP_GROUP} ${HADOOP_PID_DIR}
  373. #change the permission and the owner
  374. chmod 755 ${HADOOP_LOG_DIR}/${HADOOP_HDFS_USER}
  375. chown ${HADOOP_HDFS_USER}:${HADOOP_GROUP} ${HADOOP_LOG_DIR}/${HADOOP_HDFS_USER}
  376. chmod 755 ${HADOOP_LOG_DIR}/${HADOOP_MR_USER}
  377. chown ${HADOOP_MR_USER}:${HADOOP_GROUP} ${HADOOP_LOG_DIR}/${HADOOP_MR_USER}
  378. template_generator ${HADOOP_PREFIX}/share/hadoop/common/templates/conf/core-site.xml ${HADOOP_CONF_DIR}/core-site.xml
  379. template_generator ${HADOOP_PREFIX}/share/hadoop/common/templates/conf/hdfs-site.xml ${HADOOP_CONF_DIR}/hdfs-site.xml
  380. template_generator ${HADOOP_PREFIX}/share/hadoop/common/templates/conf/mapred-site.xml ${HADOOP_CONF_DIR}/mapred-site.xml
  381. template_generator ${HADOOP_PREFIX}/share/hadoop/common/templates/conf/hadoop-env.sh ${HADOOP_CONF_DIR}/hadoop-env.sh
  382. template_generator ${HADOOP_PREFIX}/share/hadoop/common/templates/conf/hadoop-policy.xml ${HADOOP_CONF_DIR}/hadoop-policy.xml
  383. template_generator ${HADOOP_PREFIX}/share/hadoop/common/templates/conf/commons-logging.properties ${HADOOP_CONF_DIR}/commons-logging.properties
  384. template_generator ${HADOOP_PREFIX}/share/hadoop/common/templates/conf/mapred-queue-acls.xml ${HADOOP_CONF_DIR}/mapred-queue-acls.xml
  385. template_generator ${HADOOP_PREFIX}/share/hadoop/common/templates/conf/taskcontroller.cfg ${HADOOP_CONF_DIR}/taskcontroller.cfg
  386. template_generator ${HADOOP_PREFIX}/share/hadoop/templates/conf/capacity-scheduler.xml ${HADOOP_CONF_DIR}/capacity-scheduler.xml
  387. template_generator ${HADOOP_PREFIX}/share/hadoop/templates/conf/log4j.properties ${HADOOP_CONF_DIR}/log4j.properties
  388. template_generator ${HADOOP_PREFIX}/share/hadoop/templates/conf/hadoop-metrics2.properties ${HADOOP_CONF_DIR}/hadoop-metrics2.properties
  389. #set the owner of the hadoop dir to root
  390. chown root ${HADOOP_PREFIX}
  391. chown root:${HADOOP_GROUP} ${HADOOP_CONF_DIR}/hadoop-env.sh
  392. chmod 755 ${HADOOP_CONF_DIR}/hadoop-env.sh
  393. #set taskcontroller
  394. chown root:${HADOOP_GROUP} ${HADOOP_CONF_DIR}/taskcontroller.cfg
  395. chmod 400 ${HADOOP_CONF_DIR}/taskcontroller.cfg
  396. chown root:${HADOOP_GROUP} ${HADOOP_PREFIX}/bin/task-controller
  397. chmod 6050 ${HADOOP_PREFIX}/bin/task-controller
  398. #generate the slaves file and include and exclude files for hdfs and mapred
  399. echo '' > ${HADOOP_CONF_DIR}/slaves
  400. echo '' > ${HADOOP_CONF_DIR}/dfs.include
  401. echo '' > ${HADOOP_CONF_DIR}/dfs.exclude
  402. echo '' > ${HADOOP_CONF_DIR}/mapred.include
  403. echo '' > ${HADOOP_CONF_DIR}/mapred.exclude
  404. for dn in $DATANODES
  405. do
  406. echo $dn >> ${HADOOP_CONF_DIR}/slaves
  407. echo $dn >> ${HADOOP_CONF_DIR}/dfs.include
  408. done
  409. for tt in $TASKTRACKERS
  410. do
  411. echo $tt >> ${HADOOP_CONF_DIR}/mapred.include
  412. done
  413. echo "Configuration setup is completed."
  414. if [[ "$HADOOP_NN_HOST" =~ "`hostname`" ]]; then
  415. echo "Proceed to run hadoop-setup-hdfs.sh on namenode."
  416. fi
  417. else
  418. template_generator ${HADOOP_PREFIX}/share/hadoop/common/templates/conf/core-site.xml ${HADOOP_CONF_DIR}/core-site.xml
  419. template_generator ${HADOOP_PREFIX}/share/hadoop/common/templates/conf/hdfs-site.xml ${HADOOP_CONF_DIR}/hdfs-site.xml
  420. template_generator ${HADOOP_PREFIX}/share/hadoop/common/templates/conf/mapred-site.xml ${HADOOP_CONF_DIR}/mapred-site.xml
  421. template_generator ${HADOOP_PREFIX}/share/hadoop/common/templates/conf/hadoop-env.sh ${HADOOP_CONF_DIR}/hadoop-env.sh
  422. template_generator ${HADOOP_PREFIX}/share/hadoop/common/templates/conf/hadoop-policy.xml ${HADOOP_CONF_DIR}/hadoop-policy.xml
  423. template_generator ${HADOOP_PREFIX}/share/hadoop/common/templates/conf/commons-logging.properties ${HADOOP_CONF_DIR}/commons-logging.properties
  424. template_generator ${HADOOP_PREFIX}/share/hadoop/common/templates/conf/mapred-queue-acls.xml ${HADOOP_CONF_DIR}/mapred-queue-acls.xml
  425. template_generator ${HADOOP_PREFIX}/share/hadoop/common/templates/conf/taskcontroller.cfg ${HADOOP_CONF_DIR}/taskcontroller.cfg
  426. template_generator ${HADOOP_PREFIX}/share/hadoop/common/templates/conf/hadoop-metrics2.properties ${HADOOP_CONF_DIR}/hadoop-metrics2.properties
  427. template_generator ${HADOOP_PREFIX}/share/hadoop/templates/conf/capacity-scheduler.xml ${HADOOP_CONF_DIR}/capacity-scheduler.xml
  428. template_generator ${HADOOP_PREFIX}/share/hadoop/templates/conf/log4j.properties ${HADOOP_CONF_DIR}/log4j.properties
  429. template_generator ${HADOOP_PREFIX}/share/hadoop/templates/conf/hadoop-metrics2.properties ${HADOOP_CONF_DIR}/hadoop-metrics2.properties
  430. chown root:${HADOOP_GROUP} ${HADOOP_CONF_DIR}/hadoop-env.sh
  431. chmod 755 ${HADOOP_CONF_DIR}/hadoop-env.sh
  432. #set taskcontroller
  433. chown root:${HADOOP_GROUP} ${HADOOP_CONF_DIR}/taskcontroller.cfg
  434. chmod 400 ${HADOOP_CONF_DIR}/taskcontroller.cfg
  435. chown root:${HADOOP_GROUP} ${HADOOP_PREFIX}/bin/task-controller
  436. chmod 6050 ${HADOOP_PREFIX}/bin/task-controller
  437. #generate the slaves file and include and exclude files for hdfs and mapred
  438. echo '' > ${HADOOP_CONF_DIR}/slaves
  439. echo '' > ${HADOOP_CONF_DIR}/dfs.include
  440. echo '' > ${HADOOP_CONF_DIR}/dfs.exclude
  441. echo '' > ${HADOOP_CONF_DIR}/mapred.include
  442. echo '' > ${HADOOP_CONF_DIR}/mapred.exclude
  443. for dn in $DATANODES
  444. do
  445. echo $dn >> ${HADOOP_CONF_DIR}/slaves
  446. echo $dn >> ${HADOOP_CONF_DIR}/dfs.include
  447. done
  448. for tt in $TASKTRACKERS
  449. do
  450. echo $tt >> ${HADOOP_CONF_DIR}/mapred.include
  451. done
  452. echo
  453. echo "Configuration file has been generated in:"
  454. echo
  455. echo "${HADOOP_CONF_DIR}/core-site.xml"
  456. echo "${HADOOP_CONF_DIR}/hdfs-site.xml"
  457. echo "${HADOOP_CONF_DIR}/mapred-site.xml"
  458. echo "${HADOOP_CONF_DIR}/hadoop-env.sh"
  459. echo "${HADOOP_CONF_DIR}/hadoop-policy.xml"
  460. echo "${HADOOP_CONF_DIR}/commons-logging.properties"
  461. echo "${HADOOP_CONF_DIR}/taskcontroller.cfg"
  462. echo "${HADOOP_CONF_DIR}/capacity-scheduler.xml"
  463. echo "${HADOOP_CONF_DIR}/log4j.properties"
  464. echo "${HADOOP_CONF_DIR}/hadoop-metrics2.properties"
  465. echo
  466. echo " to ${HADOOP_CONF_DIR} on all nodes, and proceed to run hadoop-setup-hdfs.sh on namenode."
  467. fi