hadoop-daemon.sh 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #!/bin/sh
  2. #
  3. # Runs a Hadoop command as a daemon.
  4. #
  5. # Environment Variables
  6. #
  7. # HADOOP_CONF_DIR Alternate conf dir. Default is ${HADOOP_HOME}/conf.
  8. # HADOOP_LOG_DIR Where log files are stored. PWD by default.
  9. # HADOOP_MASTER host:path where hadoop code should be rsync'd from
  10. # HADOOP_PID_DIR The pid files are stored. /tmp by default.
  11. # HADOOP_IDENT_STRING A string representing this instance of hadoop. $USER by default
  12. # HADOOP_NICENESS The scheduling priority for daemons. Defaults to 0.
  13. ##
  14. usage="Usage: hadoop-daemon.sh [--config <conf-dir>] (start|stop) <hadoop-command> <args...>"
  15. # if no args specified, show usage
  16. if [ $# -le 1 ]; then
  17. echo $usage
  18. exit 1
  19. fi
  20. bin=`dirname "$0"`
  21. bin=`cd "$bin"; pwd`
  22. . "$bin"/hadoop-config.sh
  23. # get arguments
  24. startStop=$1
  25. shift
  26. command=$1
  27. shift
  28. if [ -f "${HADOOP_CONF_DIR}/hadoop-env.sh" ]; then
  29. . "${HADOOP_CONF_DIR}/hadoop-env.sh"
  30. fi
  31. # get log directory
  32. if [ "$HADOOP_LOG_DIR" = "" ]; then
  33. export HADOOP_LOG_DIR="$HADOOP_HOME/logs"
  34. fi
  35. mkdir -p "$HADOOP_LOG_DIR"
  36. if [ "$HADOOP_PID_DIR" = "" ]; then
  37. HADOOP_PID_DIR=/tmp
  38. fi
  39. if [ "$HADOOP_IDENT_STRING" = "" ]; then
  40. export HADOOP_IDENT_STRING="$USER"
  41. fi
  42. # some variables
  43. export HADOOP_LOGFILE=hadoop-$HADOOP_IDENT_STRING-$command-`hostname`.log
  44. export HADOOP_ROOT_LOGGER="INFO,DRFA"
  45. log=$HADOOP_LOG_DIR/hadoop-$HADOOP_IDENT_STRING-$command-`hostname`.out
  46. pid=$HADOOP_PID_DIR/hadoop-$HADOOP_IDENT_STRING-$command.pid
  47. # Set default scheduling priority
  48. if [ "$HADOOP_NICENESS" == "" ]; then
  49. export HADOOP_NICENESS=0
  50. fi
  51. case $startStop in
  52. (start)
  53. if [ -f $pid ]; then
  54. if kill -0 `cat $pid` > /dev/null 2>&1; then
  55. echo $command running as process `cat $pid`. Stop it first.
  56. exit 1
  57. fi
  58. fi
  59. if [ "$HADOOP_MASTER" != "" ]; then
  60. echo rsync from $HADOOP_MASTER
  61. rsync -a -e ssh --delete --exclude=.svn $HADOOP_MASTER/ "$HADOOP_HOME"
  62. fi
  63. echo starting $command, logging to $log
  64. nohup nice -n $HADOOP_NICENESS "$HADOOP_HOME"/bin/hadoop --config $HADOOP_CONF_DIR $command "$@" > "$log" 2>&1 < /dev/null &
  65. echo $! > $pid
  66. sleep 1; head "$log"
  67. ;;
  68. (stop)
  69. if [ -f $pid ]; then
  70. if kill -0 `cat $pid` > /dev/null 2>&1; then
  71. echo stopping $command
  72. kill `cat $pid`
  73. else
  74. echo no $command to stop
  75. fi
  76. else
  77. echo no $command to stop
  78. fi
  79. ;;
  80. (*)
  81. echo $usage
  82. exit 1
  83. ;;
  84. esac