hadoop-daemon.sh 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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. ##
  13. usage="Usage: hadoop-daemon.sh [--config <conf-dir>] (start|stop) <hadoop-command> <args...>"
  14. # if no args specified, show usage
  15. if [ $# -le 1 ]; then
  16. echo $usage
  17. exit 1
  18. fi
  19. bin=`dirname "$0"`
  20. bin=`cd "$bin"; pwd`
  21. source "$bin"/hadoop-config.sh
  22. # get arguments
  23. startStop=$1
  24. shift
  25. command=$1
  26. shift
  27. if [ -f "${HADOOP_CONF_DIR}/hadoop-env.sh" ]; then
  28. . "${HADOOP_CONF_DIR}/hadoop-env.sh"
  29. fi
  30. # get log directory
  31. if [ "$HADOOP_LOG_DIR" = "" ]; then
  32. export HADOOP_LOG_DIR="$HADOOP_HOME/logs"
  33. fi
  34. mkdir -p "$HADOOP_LOG_DIR"
  35. if [ "$HADOOP_PID_DIR" = "" ]; then
  36. HADOOP_PID_DIR=/tmp
  37. fi
  38. if [ "$HADOOP_IDENT_STRING" = "" ]; then
  39. export HADOOP_IDENT_STRING="$USER"
  40. fi
  41. # some variables
  42. export HADOOP_LOGFILE=hadoop-$HADOOP_IDENT_STRING-$command-`hostname`.log
  43. export HADOOP_ROOT_LOGGER="INFO,DRFA"
  44. log=$HADOOP_LOG_DIR/hadoop-$HADOOP_IDENT_STRING-$command-`hostname`.out
  45. pid=$HADOOP_PID_DIR/hadoop-$HADOOP_IDENT_STRING-$command.pid
  46. case $startStop in
  47. (start)
  48. if [ -f $pid ]; then
  49. if kill -0 `cat $pid` > /dev/null 2>&1; then
  50. echo $command running as process `cat $pid`. Stop it first.
  51. exit 1
  52. fi
  53. fi
  54. if [ "$HADOOP_MASTER" != "" ]; then
  55. echo rsync from $HADOOP_MASTER
  56. rsync -a -e ssh --delete --exclude=.svn $HADOOP_MASTER/ "$HADOOP_HOME"
  57. fi
  58. echo starting $command, logging to $log
  59. nohup "$HADOOP_HOME"/bin/hadoop --config $HADOOP_CONF_DIR $command "$@" > "$log" 2>&1 < /dev/null &
  60. echo $! > $pid
  61. sleep 1; head "$log"
  62. ;;
  63. (stop)
  64. if [ -f $pid ]; then
  65. if kill -0 `cat $pid` > /dev/null 2>&1; then
  66. echo stopping $command
  67. kill `cat $pid`
  68. else
  69. echo no $command to stop
  70. fi
  71. else
  72. echo no $command to stop
  73. fi
  74. ;;
  75. (*)
  76. echo $usage
  77. exit 1
  78. ;;
  79. esac