以前的版本检测当天的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. [TJOI2011]构造矩阵

    考虑优化贪心,不回溯,对于每一位,你都判一下放0的话后面是否有解,用网络流判是否可以完美匹配就行了. 但这样时间复杂是错的,所以不必每次都重新建图,现在原来的图中看一下该行列是否已经匹配,若没有,则强 ...

  2. Huawei运维记录

    Huawei运维记录 01 Huawei运维记录-AC6005-8AP设备启动界面 02 Huawei运维记录-AC6005-8AP添加授权码 03 Huawei运维记录-AC6005版本升级步骤

  3. 【Luogu4723】线性递推(常系数齐次线性递推)

    [Luogu4723]线性递推(常系数齐次线性递推) 题面 洛谷 题解 板子题QwQ,注意多项式除法那里每个多项式的系数,调了一天. #include<iostream> #include ...

  4. hdu3072 Intelligence System (最小树形图?)

    题意:给一个有向图,问要从0号点能到达所有点所需要经过路径的最小权值和是多少,然而,若两点强联通,则这两点互相到达不需要花费.保证0号点能到达所有点 tarjan缩点以后直接取每个点入边中花费最小的即 ...

  5. luogu4182 [USACO18JAN] Lifeguards P (单调队列优化dp)

    显然可以先把被覆盖掉的区间去掉,然后排个序,左.右端点就都是单调的 设f[i][j]表示前i个区间中删掉j个,而且钦定i不能删的最大覆盖长度 (如果不钦定,就要有一个删掉的状态,那我无法确定前面的到底 ...

  6. 代码大片出现报错,请重新编译——Clean

    工作空间中项目莫名大片报错,可能是各种意外原因导致的代码编译错误,可以选 菜单栏的 Project,Clean一下全部项目,系统会自动重新编译所有项目,有时会有奇效.

  7. byteify

    byteify函数 Python自带的Json库会把json文件load成Unicode对象. 如果想要变成str对象的话,就要自己去encode. def byteify(input): if is ...

  8. java代码示例(4)

    /** * 需求分析:计算100以内的和,用while * @author chenyanlong * 日期:2017/10/14 */ package com.hp.test04; public c ...

  9. es6小记

    let, const, class, extends, super, arrow functions, template string, destructuring, default, rest ar ...

  10. xvfb-run: error: xauth command not found 解决方式

    解决方式转于:http://tokanao.com/blog/2016/07/13/blog.html 错误提示 array(2) { [0]=> string(27) "which: ...