欢迎光临
xsync和myhadoop.sh中shell脚本的解释
   

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

myhadoop.sh

代码

#!/bin/bash
if [ $# -lt 1 ]
then
    echo "No Args Input..."
    exit ;
fi
case  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 in:这是一个 case 语句,用于根据参数的不同值执行不同的代码块。 是用户提供的第一个参数。
  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
do
  echo ====================  $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:$pdir
    else
      echo $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 集群中的所有机器上的相同目录。
 
 英雄联盟战力指数查询  冰心现代诗歌大全100首  最好的qq签名  郁金香可以水培种植吗  鹅掌楸木和橡木哪个好  红叶玉树的养殖方法 
打赏
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《xsync和myhadoop.sh中shell脚本的解释》
文章链接:https://goodmancom.com/wl/176123.html