赞
踩
目录
方便
在 root/bin 目录下创建脚本 (在这个目录下方便全局使用)
vim myhadoop.sh
把以下代码粘贴进去,一定要修改主机名,按照自己的需求修改,比如我的NameNode在第二台主机上启动,那启动hdfs时主机名就填第二台主机
- #!/bin/bash
- if [ $# -lt 1 ]
- then
- echo "No Args Input..."
- exit ;
- fi
- case $1 in
- "start")
- echo " =================== 启动 hadoop 集群 ==================="
- echo " --------------- 启动 hdfs ---------------"
- ssh hadoop02 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
- echo " --------------- 启动 yarn ---------------"
- ssh hadoop01 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
- echo " --------------- 启动 historyserver ---------------"
- ssh hadoop01 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
- ;;
- "stop")
- echo " =================== 关闭 hadoop 集群 ==================="
- echo " --------------- 关闭 historyserver ---------------"
- ssh hadoop01 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
- echo " --------------- 关闭 yarn ---------------"
- ssh hadoop01 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
- echo " --------------- 关闭 hdfs ---------------"
- ssh hadoop02 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
- ;;
- *)
- echo "Input Args Error..."
- ;;
- esac
脚本保存退出后并不是绿色的可执行文件,要给脚本加上执行权限
chmod +x /root/bin/myhadoop.sh
变成绿色后就可以执行了:
- myhadoop.sh start #启动集群
-
-
- myhadoop.sh stop #关闭集群
想查看每台主机上的进程,不用再来回切换,jpsall可以同时列出三台主机进程
在 root/bin 目录下创建脚本 (在这个目录下方便全局使用)
vim jpsall
粘贴以下代码:
- #!/bin/bash
- for host in hadoop01 hadoop02 hadoop03
- do
- echo =============== $host ===============
- ssh $host jps
- done
脚本保存退出后并不是绿色的可执行文件,要给脚本加上执行权限
- chmod +x jpsall
-
- #在jpsall的上级目录执行
如果报错:jps找不到命令....
可能缺少依赖,三台主机执行命令:
sudo yum install java-1.8.0-openjdk-devel.x86_64
如果还是报错可能是java版本低或者软连接问题,可自行搜索解决。
完成后可试验一下jpsall能展示出Hadoop集群的结点:
在 root/bin 目录下创建脚本 (在这个目录下方便全局使用)
vim xsync
粘贴以下代码:
- #!/bin/bash
- #1. 判断参数个数
- if [ $# -lt 1 ]
- then
- echo Not Enough Arguement!
- exit;
- fi
- #2. 遍历集群所有机器
- for host hadoop01 hadoop02 hadoop03
- 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
脚本保存退出后并不是绿色的可执行文件,要给脚本加上执行权限
- chmod +x xsync
- #在xsync的上级目录执行
执行命令:
- #比如要分发 /opt/module/abc.txt
- xsync /opt/module/abc.txt
如果报错:bash:rsync找不到命令
在三台主机上安装rsync:
yum -y install rsync
over!!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。