升级版updateOozie.sh

以前的版本检测当天的Tar包,并只能选择1个Tar包进行更新代码,当天生成多个版本时需修改脚本中配置,并不方便。

升级版兼容目录下存在一个或者多个Tar包的情况:
1.单个Tar包时,直接解压缩到当前目录,并更新代码到HDFS;
2.多个Tar包并存时,创建各个Tar包对应的文件夹,将Tar包解压缩到各自的文件夹中。同时上传Oozie的脚本不自动执行,拷贝至各个文件夹中,供选择版本进行执行。

v2updateOozie.sh

#!/bin/bash

#Modify:
tardir=/home/yang
tarnum=4
alterjtIP=192.168.0.101
alternnIP=ns1

#Cannot Modify:
date=`date +%Y%m%d`
jtIP=192.168.0.212
nnIP=192.168.0.211:8020
hdfsdir=/user/root/


filecount=`ls *.tar | wc -l`

if [ ${filecount} -le 1 ]; then
	rm -rf oozie jars
	tarfile=`ls *.tar`
	tar xvf ${tarfile}

 	cd oozie
 	sed "s/${nnIP}/${alternnIP}/g" workflow.xml > wftmp1.xml
 	sed "s/${jtIP}/${alterjtIP}/g" wftmp1.xml > wftmp2.xml
 	cat wftmp2.xml > workflow.xml
 	rm -f wftmp*

 	echo -e "\033[32mReplace config completed.\033[0m"

 	cd ${tardir}
 	chown -R hdfs:hadoop oozie

 	su hdfs -c "hadoop fs -test -e ${hdfsdir}"
 	if [ $? -ne 0 ]; then
 		su hdfs -c "hadoop fs -mkdir ${hdfspath}"
 	fi
 	su hdfs -c "hadoop fs -test -e ${hdfsdir}/oozie"
 	if [ $? -ne 0 ]; then
 		su hdfs -c "hadoop fs -put oozie ${hdfsdir}"
 		echo -e "\033[32mUpload to hdfs completed.\033[0m"
 		su hdfs -c "hadoop fs -ls ${hdfsdir}/oozie/"
 	else
 		su hdfs -c "hadoop fs -rm -r ${hdfsdir}/oozie"
 		su hdfs -c "hadoop fs -put oozie ${hdfsdir}"
 		echo -e "\033[32mUpdate oozie completed.\033[0m"
 		su hdfs -c "hadoop fs -ls ${hdfsdir}/oozie/"
 	fi
else
    for i in $(ls *.tar 2>/dev/null)
    do
	    echo $i
		dirname=`echo ${i:11:10}`
		echo ${dirname}
		rm -rf ${dirname}
		mkdir ${dirname}
		rm -rf oozie jars
		tar xvf $i -C ${dirname}/
		cp uploadOozie.sh ${dirname}/

		cd ${dirname}
		cd oozie
		sed "s/${nnIP}/${alternnIP}/g" workflow.xml > wftmp1.xml
		sed "s/${jtIP}/${alterjtIP}/g" wftmp1.xml > wftmp2.xml
		cat wftmp2.xml > workflow.xml
		rm -f wftmp*

		echo -e "\033[32mReplace config completed.\033[0m"

		cd ..
		chown -R hdfs:hadoop oozie
		cd ..
	done
fi

搭配uploadOozie.sh

#!/bin/bash
hdfsdir=/user/root/

su hdfs -c "hadoop fs -test -e ${hdfsdir}"
if [ $? -ne 0 ]; then
	su hdfs -c "hadoop fs -mkdir ${hdfspath}"
fi
su hdfs -c "hadoop fs -test -e ${hdfsdir}/oozie"
if [ $? -ne 0 ]; then
	su hdfs -c "hadoop fs -put oozie ${hdfsdir}"
	echo -e "\033[32mUpload to hdfs completed.\033[0m"
	su hdfs -c "hadoop fs -ls ${hdfsdir}/oozie/"
else
	su hdfs -c "hadoop fs -rm -r ${hdfsdir}/oozie"
	su hdfs -c "hadoop fs -put oozie ${hdfsdir}"
	echo -e "\033[32mUpdate oozie completed.\033[0m"
	su hdfs -c "hadoop fs -ls ${hdfsdir}/oozie/"
fi
posted @ 2017-05-26 16:58  bamboo233  阅读(193)  评论(0)    收藏  举报