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. Python(列表操作应用实战)方法二

    # 输入一个数据,删除一个列表中的所有指定元素# 给定的列表数据data = [1,2,3,4,5,6,7,8,9,0,5,4,3,5,"b","a",&quo ...

  2. Win10如何禁止软件运行?win10禁止软件启动的设置方法!禁止人生日历热点快讯的方法

    相信不少使用Win10系统的用户遇到过下载了一款软件进行安装后后续会有接连不断的程序安装到电脑中.他可能似乎一个大家常用的程序,在我们安装好运行的时候会通过后台偷偷下载其他应用安装到我们电脑中,导致系 ...

  3. Ubuntu下VS Code 字体设置 + 标签匹配、括号匹配插件

    Ubuntu下比较好看的字体有: Courier NewSource Code ProWenQuanYi Micro HeiWenQuanYi Micro Hei MonoUbuntuDroid Sa ...

  4. Redis cluster集群模式的原理

    redis cluster redis cluster是Redis的分布式解决方案,在3.0版本推出后有效地解决了redis分布式方面的需求 自动将数据进行分片,每个master上放一部分数据 提供内 ...

  5. #Plugin 数字滚动累加动画插件

    数字滚动累加动画插件  NumScroll 1.使用前先引入jquery2.前端学习群:814798690 下载地址 https://github.com/chaorenzeng/jquery.num ...

  6. ExceptionLess的webAPI调用

    引用 <package id="bootstrap" version="3.0.0" targetFramework="net461" ...

  7. [转] iOS9系统自带字体

    Family: Thonburi Font: Thonburi-Bold Font: Thonburi Font: Thonburi-Light 1 2 3 4 Family: Khmer Sanga ...

  8. Java第三阶段学习(七、线程池、多线程)

    一.线程池 1.概念: 线程池,其实就是一个容纳多个线程的容器,其中的线程可以重复使用,省去了频繁创建线程对象的过程,无需反复创建线程而消耗过多资源,是JDK1.5以后出现的. 2.使用线程池的方式- ...

  9. mongo 分片

    // use ebay // sh.enableSharding("ebay") // db.getCollection("ebay_total_menu_detail_ ...

  10. Bootstrap 框架、插件

    Bootstrap,前端工程师比较常用的框架.插件,根据它的定义,我们不妨这样理解,Bootstrap就是用于前端开发的一个模板,就是别人做好了我们直接可以搬过来直接使用或者根据自己需要略加修改设计自 ...