以前的版本检测当天的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. Codeforces Round #487 (Div. 2) E. A Trance of Nightfall (矩阵优化)

    题意 有一个平面 , 给你 \(n\) 个点构成一个点集 \(S\) , 一开始可以选择一个平面上任意点 \(P\) . 存在一种操作 : 1 选择一条至少 通过 \(S\) 中任意两个点以及 \(P ...

  2. BZOJ 4556: [Tjoi2016&Heoi2016]字符串(后缀数组 + 二分答案 + 主席树 + ST表 or 后缀数组 + 暴力)

    题意 一个长为 \(n\) 的字符串 \(s\),和 \(m\) 个询问.每次询问有 \(4\) 个参数分别为 \(a,b,c,d\). 要你告诉它 \(s[a...b]\) 中的所有子串 和 \(s ...

  3. Angularjs中的$q详解

    先说说什么是Promise,什么是$q吧.Promise是一种异步处理模式,有很多的实现方式,比如著名的Kris Kwal's Q还有JQuery的Deffered. 什么是Promise 以前了解过 ...

  4. java反射出字段信息和值

    /** * */ package test; import java.lang.reflect.Field; import java.lang.reflect.Modifier; /** * @aut ...

  5. ASP.NET Session的实现原理分析

    ASP.NET Session的实现原理分析 用户向服务器提交请求时,服务器都会给每个用户分配一个SessionId,保存在用户浏览器的Cookies中,SessionId是全局的,也就是说只要Coo ...

  6. (转)小谈keepalived vip漂移原理与VRRP协议

    背景:之前搭建过keepalived双机热备的集群,但对其中的原理不甚理解,看完就忘了,所有有必要深入的学习下. 简介 什么是keepalived呢?keepalived是实现高可用的一种轻量级的技术 ...

  7. ref实现输入框聚焦

    关于ref我们是怎么理解的呢? 我们可以通过React.createRef()创建一个 ref节点,并将其打印出来. 代码如下: import React,{Component} from 'reac ...

  8. javascript面向对象精要第六章对象模式整理精要

    混入是一种给对象添加功能同时避免继承的强有力的方式,混入时将一个属性从一个对象 复制到另一个,从而使得接收者在不需要继承的情况下获得其功能.和继承不同,混入之后 对象无法检查属性来源.因此混入最适宜用 ...

  9. 求n(n>=2)以内的质数/判断一个数是否质数——方法+细节优化

    #include <stdio.h> #include <stdlib.h> //判断i是否质数,需要判断i能否被(long)sqrt(i)以内的数整除 //若i能被其中一个质 ...

  10. 无法SSH服务器的解决过程(openssh-daemon is stopped)

    公司某台服务器不知为何无法ssh连接上,进入现场查看: 1.执行netstat -atnlp|grep ssh,没有找到ssh端口 2.执行ps aux|grep ssh,没找到相关进程 3.执行se ...