设为首页 收藏本站
查看: 747|回复: 0

[经验分享] 理解Hadoop脚本hadoop-2.5.0/bin/hadoop

[复制链接]

尚未签到

发表于 2015-7-12 09:03:51 | 显示全部楼层 |阅读模式
  
  1 #!/usr/bin/env bash    此处为什么不是  #!/bin/bash  ?  

考虑到程序的可移植性,env的作用就是为了找到正确的脚本解释器(这里就是bash),在不同的Linux系统上该解释器可能所处的位置不同
  
    18  # This script runs the hadoop core commands.
    19
    20  bin=`which $0`                                  shell的默认赋值是字符串赋值, $0表示脚本本身的名字,which    locate the file
    21  bin=`dirname ${bin}`
    22  bin=`cd "$bin"; pwd`
    23
    24  DEFAULT_LIBEXEC_DIR="$bin"/../libexec
    25  HADOOP_LIBEXEC_DIR=${HADOOP_LIBEXEC_DIR:-$DEFAULT_LIBEXEC_DIR}
  26 . $HADOOP_LIBEXEC_DIR/hadoop-config.sh
    27
    28  function print_usage(){
    29    echo "Usage: hadoop [--config confdir] COMMAND"
    30    echo "       where COMMAND is one of:"
    31    echo "  fs                   run a generic filesystem user client"
    32    echo "  version              print the version"
    33    echo "  jar             run a jar file"
    34    echo "  checknative [-a|-h]  check native hadoop and compression libraries availability"
    35    echo "  distcp   copy file or directories recursively"
    36    echo "  archive -archiveName NAME -p  *  create a hadoop archive"
    37    echo "  classpath            prints the class path needed to get the"
    38    echo "                       Hadoop jar and the required libraries"
    39    echo "  daemonlog            get/set the log level for each daemon"
    40    echo " or"
    41    echo "  CLASSNAME            run the class named CLASSNAME"
    42    echo ""
    43    echo "Most commands print help when invoked w/o parameters."
    44  }
    45
    46  if [ $# = 0 ]; then               $#,运行脚本时所带参数的个数, 注意 [ 后和 ]前要有一个空格, 判断=左右两个变量是否相等
    47    print_usage
    48    exit
    49  fi
    50
    51  COMMAND=$1                      $1, 执行的脚本的第一个参数,$2,$3.......以此类推
  #case句法 ,每个匹配都用;;来表示结束

case ... in
...) do something here
;;
esac
  #
    52  case $COMMAND in
    53    # usage flags
    54    --help|-help|-h)
    55      print_usage
    56      exit
    57      ;;
  58
    59    #hdfs commands
    60    namenode|secondarynamenode|datanode|dfs|dfsadmin|fsck|balancer|fetchdt|oiv|dfsgroups|portmap|nfs3)
    61      echo "DEPRECATED: Use of this script to execute hdfs command is deprecated." 1>&2
    62      echo "Instead use the hdfs command for it." 1>&2
    63      echo "" 1>&2
    64      #try to locate hdfs and if present, delegate to it.
    65      shift
    66      if [ -f "${HADOOP_HDFS_HOME}"/bin/hdfs ]; then
    67        exec "${HADOOP_HDFS_HOME}"/bin/hdfs ${COMMAND/dfsgroups/groups}  "$@"
    68      elif [ -f "${HADOOP_PREFIX}"/bin/hdfs ]; then
    69        exec "${HADOOP_PREFIX}"/bin/hdfs ${COMMAND/dfsgroups/groups} "$@"
    70      else
    71        echo "HADOOP_HDFS_HOME not found!"
    72        exit 1
    73      fi
    74      ;;
    75
    76    #mapred commands for backwards compatibility
    77    pipes|job|queue|mrgroups|mradmin|jobtracker|tasktracker)
    78      echo "DEPRECATED: Use of this script to execute mapred command is deprecated." 1>&2
    79      echo "Instead use the mapred command for it." 1>&2
    80      echo "" 1>&2
    81      #try to locate mapred and if present, delegate to it.
    82      shift
    83      if [ -f "${HADOOP_MAPRED_HOME}"/bin/mapred ]; then
    84        exec "${HADOOP_MAPRED_HOME}"/bin/mapred ${COMMAND/mrgroups/groups} "$@"
    85      elif [ -f "${HADOOP_PREFIX}"/bin/mapred ]; then
    86        exec "${HADOOP_PREFIX}"/bin/mapred ${COMMAND/mrgroups/groups} "$@"
    87      else
    88        echo "HADOOP_MAPRED_HOME not found!"
    89        exit 1
  90 fi
    91      ;;
    92
    93    classpath)
    94      echo $CLASSPATH
    95      exit
    96      ;;
    97
    98    #core commands
    99    *)
   100      # the core commands
   101      if [ "$COMMAND" = "fs" ] ; then
   102        class="org".apache.hadoop.fs.FsShell
   103      elif [ "$COMMAND" = "version" ] ; then
   104        class="org".apache.hadoop.util.VersionInfo
   105      elif [ "$COMMAND" = "jar" ] ; then
   106        class="org".apache.hadoop.util.RunJar
   107      elif [ "$COMMAND" = "checknative" ] ; then
   108        class="org".apache.hadoop.util.NativeLibraryChecker
   109      elif [ "$COMMAND" = "distcp" ] ; then
   110        class="org".apache.hadoop.tools.DistCp
   111        CLASSPATH=${CLASSPATH}:${TOOL_PATH}
   112      elif [ "$COMMAND" = "daemonlog" ] ; then
   113        class="org".apache.hadoop.log.LogLevel
   114      elif [ "$COMMAND" = "archive" ] ; then
   115        class="org".apache.hadoop.tools.HadoopArchives
   116        CLASSPATH=${CLASSPATH}:${TOOL_PATH}
   117      elif [[ "$COMMAND" = -*  ]] ; then
   118          # class and package names cannot begin with a -
   119          echo "Error: No command named \`$COMMAND' was found. Perhaps you meant \`hadoop ${COMMAND#-}'"
   120          exit 1
   121      else
  122 CLASS=$COMMAND
   123      fi
   124      shift                                                      shift用来左移位置参数
   125
   126      # Always respect HADOOP_OPTS and HADOOP_CLIENT_OPTS
   127      HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"
   128
   129      #make sure security appender is turned off
   130      HADOOP_OPTS="$HADOOP_OPTS -Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,NullAppender}"
   131
   132      export CLASSPATH=$CLASSPATH
   133      exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "$@"
   134      ;;
   135
   136  esac

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-85662-1-1.html 上篇帖子: centos 6 安装Hadoop和Hbase 下篇帖子: Nutch 2.x + Hadoop 2.5.2 + Hbase 0.94.26
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表