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 <jar> run a jar file"
34 echo " checknative [-a|-h] check native hadoop and compression libraries availability"
35 echo " distcp <srcurl> <desturl> copy file or directories recursively"
36 echo " archive -archiveName NAME -p <parent path> <src>* <dest> 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

理解Hadoop脚本hadoop-2.5.0/bin/hadoop的更多相关文章

  1. 【hadoop】 eclipse中的“run on hadoop”和打包成jar提交任务的区别

    eclipse中的 调试运行 及 “run on hadoop”默认只是运行在单机上的,因为要想在集群中让程序分布式运行还要经历上传类文件.分发到各个节点等过程, 一个简单的“run on hadoo ...

  2. Hadoop环境搭建--Docker完全分布式部署Hadoop环境(菜鸟采坑吐血整理)

    系统:Centos 7,内核版本3.10 本文介绍如何从0利用Docker搭建Hadoop环境,制作的镜像文件已经分享,也可以直接使用制作好的镜像文件. 一.宿主机准备工作 0.宿主机(Centos7 ...

  3. 【Hadoop离线基础总结】CDH版本Hadoop 伪分布式环境搭建

    CDH版本Hadoop 伪分布式环境搭建 服务规划 步骤 第一步:上传压缩包并解压 cd /export/softwares/ tar -zxvf hadoop-2.6.0-cdh5.14.0.tar ...

  4. failed to launch: nice -n 0 /home/hadoop/spark-2.3.3-bin-hadoop2.7/bin/spark-class org.apache.spark.deploy.worker.Worker --webui-port 8081 spark://namenode1:7077

    spark2.3.3安装完成之后启动报错: [hadoop@namenode1 sbin]$ ./start-all.shstarting org.apache.spark.deploy.master ...

  5. hadoop源码剖析--$HADOOP_HOME/bin/hadoop脚本文件分析

    1. $HADOOP_HOME/bin/ hadoop #!/usr/bin/env bash# Licensed to the Apache Software Foundation (ASF) un ...

  6. 大数据时代之hadoop(二):hadoop脚本解析

    “兵马未动,粮草先行”,要想深入的了解hadoop,我觉得启动或停止hadoop的脚本是必须要先了解的.说到底,hadoop就是一个分布式存储和计算框架,但是这个分布式环境是如何启动,管理的呢,我就带 ...

  7. 【大数据系列】hadoop脚本分析

    一.start-all.sh hadoop安装目录/home/hadoop/hadoop-2.8.0/ libexec/hadoop-config.sh     ---设置变量 sbin/start- ...

  8. Hadoop系列(二)hadoop2.2.0伪分布式安装

    一.环境配置 安装虚拟机vmware,并在该虚拟机机中安装CentOS 6.4: 修改hostname(修改配置文件/etc/sysconfig/network中的HOSTNAME=hadoop),修 ...

  9. Hadoop 2.6.0-cdh5.4.0集群环境搭建和Apache-Hive、Sqoop的安装

    搭建此环境主要用来hadoop的学习,因此我们的操作直接在root用户下,不涉及HA. Software: Hadoop 2.6.0-cdh5.4.0 Apache-hive-2.1.0-bin Sq ...

随机推荐

  1. 四.idea本地调试hadoop程序

    目录: 目录见文章1 1.先上案例代码 WordCount.java: import java.io.IOException; import java.util.StringTokenizer; im ...

  2. 20165323《Java程序设计》第九周学习总结

    一.教材内容学习总结 URL类 1.URL 类是 java.net 包中的一个重要的类,使用 URL 创建对象的应用程序称为客户端程序. 2.一个 URL 对象通常包含最基本的三部分信息:协议.地址和 ...

  3. webpack学习笔记--配置总结

    从前面的配置看来选项很多,Webpack 内置了很多功能. 你不必都记住它们,只需要大概明白 Webpack 原理和核心概念去判断选项大致属于哪个大模块下,再去查详细的使用文档. 通常你可用如下经验去 ...

  4. MVC异常处理(异常捕获)

    1.cshtml页面异常 2.Controller异常 3.路由参数异常. 4.页面不存在404 页面不存在404,可以通过配置config来处理 <customErrors mode=&quo ...

  5. 【Android】Android 广播大全

    [Android]Android 广播大全 String ADD_SHORTCUT_ACTION 动作:在系统中添加一个快捷方式. String ALL_APPS_ACTION 动作:列举所有可用的应 ...

  6. 网页安全政策"(Content Security Policy,缩写 CSP)

    作者:阿里聚安全链接:https://www.zhihu.com/question/21979782/answer/122682029来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

  7. POJ1330Nearest Common Ancestors

    去博客园看该题解 题意 第一行输入T,有T组数据. 对于每组数据,给出一棵树,先输入n,然后n-1行,每行两个数a,b,表示a是b的父亲:第n行输入两个数A,B表示询问A和B的最近公共祖先. 题解 L ...

  8. Python交互图表可视化Bokeh:7. 工具栏

    ToolBar工具栏设置 ① 位置设置② 移动.放大缩小.存储.刷新③ 选择④ 提示框.十字线 1. 位置设置 import numpy as np import pandas as pd impor ...

  9. 006 python操作符

    一:数值操作符 1.操作符 2.不同点 上面有了一个说法,这个 / 与其他的编程不同. 这个是精确的除法. 3.连续赋值 这种用法,第一次遇见,就记录下来. 4.注意点 重要的是要注意优先级的问题 二 ...

  10. Flume的概述和安装部署

    一.Flume概述 Flume是一种分布式.可靠且可用的服务,用于有效的收集.聚合和移动大量日志文件数据.Flume具有基于流数据流的简单灵活的框架,具有可靠的可靠性机制和许多故障转移和恢复机制,具有 ...