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. 论文阅读笔记五:U-Net: Convolutional Networks for Biomedical Image Segmentation(CVPR2015)

    前面介绍了两个文本检测的网络,分别为RRCNN和CTPN,接下来鄙人会介绍语义分割的一些经典网络,同样也是论文+代码实现的过程,这里记录一下自己学到的东西,首先从论文下手吧. 英文论文原文地址:htt ...

  2. hive和hbase比较(整理)

    hive1.可以理解为一种SQL执行引擎,对SQL的支持最终转换为map/reduce任务2.不支持更新.删除操作,但可以插入3.任务不是实时执行,用时一般为数分钟到数小时4.本身可以不存储数据,只存 ...

  3. C#正则Groups高级使用方法

    正则表达式号称开发者得瑞士军刀,使用好正则表达式尤其重要. 拆分多个正则: public static string[] SplitByManyRegex(string text, string[] ...

  4. C# 把ABCD转换成数字

    每倒题得选项可能是多选或者单选. public static string LetterTransformationNum(string answer, int type) { string num ...

  5. gradle构建时跳过指定tests

    https://blog.csdn.net/u012672646/article/details/58598532

  6. std::string 是什么

    #include "stdafx.h" #include <iostream> #include <string> using std::cout; usi ...

  7. 【BZOJ2560】串珠子

    题解: 跟n个点有标号的无向连通图个数几乎一模一样 直接上代码了 代码: #include <bits/stdc++.h> using namespace std; #define ll ...

  8. 1.RN环境搭建,创建项目,使用夜神模拟调试

    1.环境搭建(Yarn.React Native 的命令行工具(react-native-cli)) npm install -g yarn react-native-cli 具体参考 参见官方(中文 ...

  9. [转]git 删除远程仓库文件

    来源:https://www.jianshu.com/p/de75a9e3d1e1 git删除远程文件夹或文件的方法 项目开发初期由于.gitignore 文件配置不正确很有可能导致某些不需要的目录上 ...

  10. 前端本地存储localStorage

    1.突破cookie 4K限制,一般浏览器支持5M 2.增 删 改 查 <!DOCTYPE html> <html lang="en"> <head& ...