以前的版本检测当天的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

升级版updateOozie.sh的更多相关文章

  1. Kubernetes Master节点灾备恢复操作指南---升级版

    本文档简述了Kubernetes主节点灾备恢复的相关步骤,供在发生k8s master崩溃时操作. 就算是在k8s里部署了etcd群集, 主节点控制组件的高可用节点,灾备恢复也是必须要实现的操作,才能 ...

  2. 数据库备份并分离日志表(按月)sh 脚本

    #!/bin/sh year=`date +%Y` month=`date +%m` day=`date +%d` hour=`date +%H` dir="/data/dbbackup/f ...

  3. Linux下如何查找.sh后缀的文件

    find / -name *.sh或locate *.shfind 与locate的区别:locate 配合数据库查看文件位置 find 实际搜寻硬盘查询文件名称

  4. sh 测试网段在线主机

    yum install nmap nmap -sP  192.168.21.1/24 查看网段在线主机 grep -vwf file1 file2 文件内容比较 #!/bin/bash # day=` ...

  5. Maven打包生成可运行bat/sh脚本文件

    利用Maven的appassembler-maven-plugin插件,就可以实现自动打包可运行的脚本,还可以跨平台.   <plugin>      <groupId>org ...

  6. 记一个简单的保护if 的sh脚本

    真是坑爹,就下面的sh,竟然也写了很久! if [ `pwd` != '/usr/xx/bin/tomcat' ] then echo "rstall is not allowed in c ...

  7. 主机巡检脚本:OSWatcher.sh

    主机巡检脚本:OSWatcher.sh 2016-09-26更新,目前该脚本只支持Linux操作系统,后续有需求可以继续完善. 注意: 经测试,普通用户执行脚本可以顺利执行前9项检查: 第10项,普通 ...

  8. Oracle巡检脚本:ORAWatcher.sh

    Oracle巡检脚本:ORAWatcher.sh #!/usr/bin/ksh echo "" echo "ORAWatcher Version:1.0.1" ...

  9. 解决:/bin/sh: 1: /home/**/custom_app.sh: Permission denied错误

    出现如下错误,一般是执行权限不够. /bin/sh: : /home/custom_app.sh: Permission denied 解决方法是:cd 到此文件目录,对提示的文件赋予可执行权限或读写 ...

随机推荐

  1. FFT/NTT总结+洛谷P3803 【模板】多项式乘法(FFT)(FFT/NTT)

    前言 众所周知,这两个东西都是用来算多项式乘法的. 对于这种常人思维难以理解的东西,就少些理解,多背板子吧! 因此只总结一下思路和代码,什么概念和推式子就靠巨佬们吧 推荐自为风月马前卒巨佬的概念和定理 ...

  2. 【CF960G】Bandit Blues(第一类斯特林数,FFT)

    [CF960G]Bandit Blues(第一类斯特林数,FFT) 题面 洛谷 CF 求前缀最大值有\(a\)个,后缀最大值有\(b\)个的长度为\(n\)的排列个数. 题解 完完全全就是[FJOI] ...

  3. luogu3195/bzoj1010 玩具装箱(斜率优化dp)

    推出来式子然后斜率优化水过去就完事了 #include<cstdio> #include<cstring> #include<algorithm> #include ...

  4. pyinstaller模块使用

    目前pip install pyinstaller已经成熟 但是还是有一些坑,郁闷了好久,记一下注意点吧. 将py脚本打包成exe文件时,如果导入了非python自带库,则需要将导入的库从site-p ...

  5. 离线安装.NET 3.5

    最近为系统新增一个功能,写完以后进行部署,发现在IIS7上部署没有问题,但是IIS6上部署会出现未知情况,具体表现为取不到数据,估计是IIS6和IIS7直接的差异导致程序异常退出. 为了重现异常,在本 ...

  6. EFCodeFirst快速搭建入门

    EFCodeFirst快速搭建入门 1.新建Model类库项目. 添加EntityFramework.dll的引用. 编写实体类Course,Student. namespace EFCodeFirs ...

  7. Asp: 解决脚本输出网页出现乱码情况

    很久没碰asp,都有点生疏了,唉... 今天写一个小程序,发现网页静态部分输出不会乱码,asp脚本部分输出在360浏览器上会显示乱码,但在firefox和chrome上测试却不会显示乱码,我已经在代码 ...

  8. 11:SSM框架下各个层的解释说明

    具体见网址:http://blog.csdn.net/lutianfeiml/article/details/51864160

  9. pascal,c,c++使用大于2^32整型的注意要点

    如果在你的电脑出现以下这种现象,则说明这篇文章适合你,否则不必理会. 适用于取余 比如求n!除以1000000007(被除数较大)的余数. pascal: pascal输出不需要说明格式,而若式子运算 ...

  10. poj 1759(二分)

    传送门:Problem 1759 https://www.cnblogs.com/violet-acmer/p/9793209.html 题意: 有N个彩灯关在同一条绳上,给出第一个彩灯的高度A,并给 ...