数据仓库-shell脚本-集群用

Shell 脚本

1、远程拷贝脚本

  • 注:SERS="chust01 chust02"为集群节点
  • 使用时传入两个参数:1为本机要传入的目录,2位要拷贝到的地方的目录
#!/bin/bash

if [ $# -lt 2 ]
then
	echo "please input 2 agrs : source and dest path"
fi

SERS="master01 master02 slave01 slave02"

echo "start to scp distribute : $1 ..."	
for i in $SERS
do
	if [ $i != $HOSTNAME ]
	then 
		echo -n "---- $i ---- "
		if [ -f $1 ]
		then
			CMD=`scp $1 root@$i:/$2`
		elif [ -d $1 ]
		then
			CMD=`scp -r $1 root@$i:/$2`
		fi
		echo ok
	fi
done

2、远程循环执行命令(比如JPS)

  • 注:SERS="chust01 chust02"为集群节点
  • 使用时传入一个参数 jps,如提示commond not found,需要在jps前加上jdk/bin目录的路径:@JAVA_HOME/bin/jps

2.1 简单命令执行

缺陷:不能执行带有空格的命令,比如“zkServer.sh start”

#!/bin/bash

if [ $# -ne 1 ]
then
    echo "please input one sys cmd (like 'jps' etc)"
    exit 0
fi

SERS="master01 master02 slave01 slave02"

for i in $SERS
do
    echo "---------------[ $1 ] $i-------------------"
    CMD=`ssh root@$i "$1"`
    echo $CMD
done

2.2 带有空格的命令执行——优化版

#!/bin/bash

if [ $# -ne 1 ]
then
	echo "please input one sys cmd or key (like 'jps' or 'kfkStart' etc)"
fi

FILE=~/start.cmd
LINE=$1

if [ -e $FILE -a -f $FILE ]
then
	CMD=`cat $FILE|GREP "$LINE"`
	if [ "$CMD" ]
	then
		CMD=(${CMD//=/ })
	fi
fi

SERS="master01 master02 slave01 slave02"
for i in $SERS
do
	echo "------[ $LINE ] $i"------
	ssh root@$i "${LINE//_/ }"
done

在根目录下新建文件start.cmd,里面放带有空格的命令

zkStart=zkServer.sh_start
zkStop=zkServer.sh_stop
zkStat=zkServer.sh_status
kfkStart=kafka-server-start.sh_-daemon_/opt/software/spark/kafka241/config/server.properties
kfkStop=kafka-server-stop.sh_stop

3、环境变量转移到/etc/profile.d/目录下,方便远程发送

  • 原理:/etc/profile在底边的for循环,本身就会执行/etc/profile.d/目录下的所有.sh文件,因此转移出去没有任何影响!
  • cd /etc/profile.d/
  • vi my.sh,复制以下内容(原/etc/profile内的环境变量),保存即可
  • 不需要对my.sh增加x权限
  • 以下为转移的内容案例
export JAVA_HOME=/opt/software/jdk180
export HADOOP_HOME=/opt/software/hadoop/hadoop260
export HIVE_HOME=/opt/software/hadoop/hive110
export ZK_HOME=/opt/software/hadoop/zookeeper345
export HBASE_HOME=/opt/software/hadoop/hbase120
export SQOOP_HOME=/opt/software/hadoop/sqoop146
export PHOENIX_HOME=/opt/software/hadoop/phoenix414
export SPARK_HOME=/opt/software/hadoop/spark244
export PATH=$HIVE_HOME/bin:$HIVE_HOME/lib:$PHOENIX_HOME/bin:$SQOOP_HOME/bin:$HBASE_HOME/bin:$ZK_HOME/bin:$ZK_HOME/sbin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SPARK_HOME/bin:$JAVA_HOME/bin:$PATH
export CLASS_PATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export LOGDIR=$SQOOP_HOME/mylog/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值