0


xsync和myhadoop.sh中shell脚本的解释

myhadoop.sh

代码

#!/bin/bashif[ $# -lt 1 ]
then
    echo"No Args Input..."exit;
fi

case $1 in
"start")echo" =================== 启动 hadoop集群 ==================="echo" --------------- 启动 hdfs ---------------"
        ssh node01 "/usr/local/src/hadoop/sbin/start-dfs.sh"echo" --------------- 启动 yarn ---------------"
        ssh node01 "/usr/local/src/hadoop/sbin/start-yarn.sh"echo" --------------- 启动 historyserver ---------------"
        ssh node01 "/usr/local/src/hadoop/bin/mapred --daemon start historyserver";;"stop")echo" =================== 关闭 hadoop集群 ==================="echo" --------------- 关闭 historyserver ---------------"
        ssh node01 "/usr/local/src/hadoop/bin/mapred --daemon stop historyserver"echo" --------------- 关闭 yarn ---------------"
        ssh node01 "/usr/local/src/hadoop/sbin/stop-yarn.sh"echo" --------------- 关闭 hdfs ---------------"
        ssh node01 "/usr/local/src/hadoop/sbin/stop-dfs.sh";;*)echo"Input Args Error...";;
esac

解释

  1. #!/bin/bash:这是脚本文件的 Shebang,指定了脚本要使用的解释器。在这里,使用的是 Bash 解释器。
  2. if [ $# -lt 1 ]:这是一个条件语句,用于检查用户是否提供了参数。$# 表示参数的数量,-lt 是一个比较运算符,表示小于。所以这行代码的意思是,如果提供的参数数量小于 1,则执行下面的代码块。
  3. echo “No Args Input…”:如果没有提供参数,则输出 “No Args Input…”。
  4. exit ;:这个命令用于退出脚本。
  5. case $1 in:这是一个 case 语句,用于根据参数的不同值执行不同的代码块。$1 是用户提供的第一个参数。
  6. “start”):这是 case 语句中的一个选项,表示当用户提供的第一个参数是 “start” 时,执行下面的代码块。
  7. echo " =================== 启动 hadoop集群 ===================":输出启动 Hadoop 集群的提示信息。
  8. ssh node01 “/usr/local/src/hadoop/sbin/start-dfs.sh”:通过 SSH 连接到名为 “node01” 的主机,并执行指定的命令 /usr/local/src/hadoop/sbin/start-dfs.sh,用于启动 HDFS。
  9. ssh node01 “/usr/local/src/hadoop/sbin/start-yarn.sh”:通过 SSH 连接到 “node01” 主机,并执行指定的命令 /usr/local/src/hadoop/sbin/start-yarn.sh,用于启动 YARN。
  10. ssh node01 “/usr/local/src/hadoop/bin/mapred --daemon start historyserver”:通过 SSH 连接到 “node01” 主机,并执行指定的命令 /usr/local/src/hadoop/bin/mapred --daemon start historyserver,用于启动 MapReduce HistoryServer。
  11. “stop”):这是 case 语句中的另一个选项,表示当用户提供的第一个参数是 “stop” 时,执行下面的代码块。
  12. echo " =================== 关闭 hadoop集群 ===================":输出关闭 Hadoop 集群的提示信息。
  13. ssh node01 “/usr/local/src/hadoop/bin/mapred --daemon stop historyserver”:通过 SSH 连接到 “node01” 主机,并执行指定的命令 /usr/local/src/hadoop/bin/mapred --daemon stop historyserver,用于关闭 MapReduce HistoryServer。
  14. ssh node01 “/usr/local/src/hadoop/sbin/stop-yarn.sh”:通过 SSH 连接到 “node01” 主机,并执行指定的命令 /usr/local/src/hadoop/sbin/stop-yarn.sh,用于关闭 YARN。
  15. ssh node01 “/usr/local/src/hadoop/sbin/stop-dfs.sh”:通过 SSH 连接到 “node01” 主机,并执行指定的命令 /usr/local/src/hadoop/sbin/stop-dfs.sh,用于关闭 HDFS。
  16. *):这是 case 语句中的一个通配符,表示如果用户提供的第一个参数不是 “start” 或 “stop”,则执行下面的代码块。
  17. echo “Input Args Error…”:输出 “Input Args Error…”,表示输入的参数错误。 整个脚本的作用是根据用户提供的参数来启动或关闭 Hadoop 集群,并通过 SSH 在远程主机上执行相应的命令。

xsync

代码

#!/bin/bash#1. 判断参数个数if[ $# -lt 1 ]
then
  echo Not Enough Arguement!
  exit;
fi

#2. 遍历集群所有机器for host in node01 node02 node03
doecho ====================  $host  ====================
  #3. 遍历所有目录,挨个发送for file in $@
  do#4 判断文件是否存在if[-e $file]
    then
      #5. 获取父目录
      pdir=$(cd -P $(dirname $file);pwd)#6. 获取当前文件的名称
      fname=$(basename $file)
      ssh $host"mkdir -p $pdir"
      rsync -av $pdir/$fname$host:$pdirelseecho$file does not exists!
    fi
  done
done

解释

  1. #!/bin/bash:这是脚本文件的 Shebang,指定了脚本要使用的解释器。在这里,使用的是 Bash 解释器。
  2. if [ $# -lt 1 ]:这是一个条件语句,用于检查用户是否提供了参数。$# 表示参数的数量,-lt 是一个比较运算符,表示小于。所以这行代码的意思是,如果提供的参数数量小于 1,则执行下面的代码块。
  3. echo Not Enough Arguement!:如果没有提供参数,则输出 “Not Enough Arguement!”。
  4. exit;:这个命令用于退出脚本。
  5. for host in node01 node02 node03:这是一个循环语句,用于遍历集群中所有的机器。node01 node02 node03 是被遍历的主机名。
  6. echo ==================== $host ====================:在循环中输出当前主机的名称。
  7. for file in @ :这是一个嵌套的循环语句,用于遍历脚本执行时传入的所有文件。 @:这是一个嵌套的循环语句,用于遍历脚本执行时传入的所有文件。 @:这是一个嵌套的循环语句,用于遍历脚本执行时传入的所有文件。@ 是一个特殊的 Bash 变量,用于获取脚本或函数的所有参数。它表示所有传递给脚本或函数的参数列表。在脚本中,$@ 表示所有的位置参数,即在执行脚本时提供的所有参数。这些参数可以是文件名、目录名、选项等等。
  8. if [ -e $file ]:这是一个条件语句,用于检查文件是否存在。-e 表示文件存在。
  9. pdir=$(cd -P $(dirname $file); pwd):这一行命令用于获取文件的父目录,并将其赋值给变量 pdir。dirname 命令用于获取文件所在的目录,cd -P 用于规范化路径,pwd 用于获取当前工作目录的绝对路径。
  10. fname=$(basename $file):这一行命令用于获取文件的名称,并将其赋值给变量 fname。basename 命令用于获取文件的基本名称(不包括路径部分)。
  11. ssh $host “mkdir -p $pdir”:这个命令通过 SSH 连接到目标主机,并在目标主机上创建与原始文件相同的父目录。mkdir -p 命令用于创建目录,-p 选项表示如果目录不存在,则创建目录及其父目录。
  12. rsync -av p d i r / pdir/ pdir/fname h o s t : host: host:pdir:这个命令使用 rsync 工具将文件从本地主机复制到目标主机上的相同目录。-av 选项表示以归档模式复制文件,并且显示详细的进度和状态信息。
  13. else:如果文件不存在,则执行下面的代码块。
  14. echo $file does not exists!:输出文件不存在的提示信息。 整个脚本的作用是遍历指定的文件,并将每个文件分发到 Hadoop 集群中的所有机器上的相同目录。
标签: linux 运维

本文转载自: https://blog.csdn.net/DylanGong/article/details/136778595
版权归原作者 DylanGong 所有, 如有侵权,请联系我们删除。

“xsync和myhadoop.sh中shell脚本的解释”的评论:

还没有评论