话不多说,直接上脚本。
启动hadoop:
#!/bin/sh
#start hdfs
echo "hdfs is starting..."
ssh hadoop102 "/opt/module/hadoop-2.7.2/sbin/start-dfs.sh"
#start yarn
echo "yarn is starting..."
ssh hadoop103 "/opt/module/hadoop-2.7.2/sbin/start-yarn.sh"
这里需要注意我的主节点是hadoop102,子节点是hadoop103和hadoop104 hdfs在102上,yarn在103上。
关闭hadoop:
#!/bin/sh
#stop yarn
echo "yarn is stoping..."
ssh hadoop103 "/opt/module/hadoop-2.7.2/sbin/stop-yarn.sh"
#stop hdfs
echo "hdfs is stoping..."
ssh hadoop102 "/opt/module/hadoop-2.7.2/sbin/stop-dfs.sh"
echo "hadoop is stopped"
启动zookeeper
#!/bin/sh
for i in root@hadoop102 root@hadoop103 root@hadoop104
do
echo "the zookeeper in $i is start..."
ssh $i "source /etc/profile;/opt/module/zookeeper-3.4.10/bin/zkServer.sh start"
done
关闭zookeeper
#!/bin/bash
for i in root@hadoop102 root@hadoop103 root@hadoop104
do
echo "the zookeeper in $i is stop..."
ssh $i "source /etc/profile;/opt/module/zookeeper-3.4.10/bin/zkServer.sh stop"
done
这里需要注意必须要source一下/etc/profile,因为zookeeper依赖于jdk,但是ssh登录并不读取jdk环境变量所在文件,所以source一下可以读取到JAVA_HOME.
一键查看所有节点的进程
#!/bin/sh
for i in root@hadoop102 root@hadoop103 root@hadoop104
do
echo "===================== $i ======================="
ssh $i '/opt/module/jdk1.8.0_144/bin/jps'
done
我们可以echo一下PATH
/usr/local/bin已经是在path里面的,所以我们可以将以上所有的脚本都放在这里目录下,这样不管我们在哪个目录执行都可以运行这些脚本了。
文件或目录同步脚本 xsync.sh : (注意此脚本使用之前需要下载rsync,yum install rsync -y )
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if ((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for host in 主机1 主机2 主机n
do
echo ------------------- $host --------------
rsync -av $pdir/$fname $user@$host:$pdir
done
使用时直接xsync.sh xx文件或者xx目录就可以将本机上的文件同步到其他机器上。