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. web和servlet一样的用法但是有区别

  2. python datetime.datetime is not JSON serializable

    1.主要是python  list转换成json时对时间报错:datetime.datetime(2014, 5, 23, 9, 33, 3) is not JSON serializable. 2. ...

  3. 010-Python-socket编程

    客户端/服务器的架构 物理层:网卡,光缆,双绞线 数据链路层:包含源mac地址和目标的mac地址,通过广播通讯 网络层:跑的IP协议,IP地址可以定义到一个子网:通过ARP协议可以解析为mac地址: ...

  4. Senparc.Weixin微信开发(3) 自定义菜单与获取用户组

    自定义菜单 代码参考:http://www.cnblogs.com/szw/p/3750517.html 还可以使用他们官网的自定义:https://neuchar.senparc.com/User/ ...

  5. 安装好ubuntu 18.10之后,屏幕一直在自动旋转,怎么办?

    sudo apt-get install okular dia gimp Gparted sudo add-apt-repository universesudo apt install gnome- ...

  6. rabbitmq3.7.5 centos7 集群部署笔记

    1. 准备3台 centos服务器  192.168.233.128    192.168.233.130    192.168.233.131 防火墙放开 集群端口, 这里一并把所有rabbitmq ...

  7. JSP基础知识➣语法整理(二)

    A.脚本程序 脚本程序可以包含任意量的Java语句.变量.方法或表达式,只要它们在脚本语言中是有效的. 脚本程序的语法格式:<% 代码片段 %>,但是不能包含文件的方法和变量的声明 B.J ...

  8. .net core 中的 DependencyInjection - IOC

    概要:因为不知道写啥,所以随便找个东西乱说几句,嗯,就这样,就是这个目的. 1.IOC是啥呢? IOC - Inversion of Control,即控制反转的意思,这里要搞明白的就是,它是一种思想 ...

  9. centos环境gcc版本升级

    今天项目需要做node.js项目的性能测试,通过在centos上搭建nodejs环境 安装过程中提示:

  10. Flink--3种分区方式

    partitionByHash //TODO partitionByHash val data = new mutable.MutableList[(Int, Long, String)] data. ...