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

Shell 脚本

1、远程拷贝脚本

  • 注:SERS="master01 master02 slave01 slave02"为集群节点
  • 使用时传入两个参数: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="master01 master02 slave01 slave02"为集群节点
  • 使用时传入一个参数 jps,如提示commond not found,需要在jps前加上jdk/bin目录的路径:@JAVA_HOME/bin/jps
#!/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

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/
上一篇:删除此电脑里多余的第三方软件图标


下一篇:理解Semantic Version