以前的版本检测当天的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. 自学Linux Shell3.4-文件处理命令touch cp mv rm

    点击返回 自学Linux命令行与Shell脚本之路 3.4-文件处理命令touch cp mv rm 1. touch命令 一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将 ...

  2. JAVA8给我带了什么——Optional和CompletableFuture

    不管是JAVA,还是.NET.我们常常会看到空异常(NullPointerException).这种异常都是在运行的过程中出现.往往是变量是一个null值.但是你引用这个变量的后继字段或是方法.所以我 ...

  3. STL总结

    容器类放入的都是元素的拷贝,而非引用.所以如果需要对元素做出改动,最好是把元素存在data[N]数组中,而仅仅在容器中存放数组下标. 函数传递容器类参数时,需要传引用,否则会超时. vector ve ...

  4. A1039. Course List for Student

    Zhejiang University has 40000 students and provides 2500 courses. Now given the student name lists o ...

  5. django---APIView源码分析

    django---APIView源码分析 前言:APIView基于View 看这部分内容一定要懂django-CBV里的内容 在django-CBV源码分析中,我们是分析的from django.vi ...

  6. react与fetch

    JavaScript 中的 ajax 很早之前就有一个诟病----复杂业务下的 callback 嵌套的问题.promise 正是 js 中解决这一问题的钥匙. 接下来我们在react项目中应用到的f ...

  7. CentOS/Linux下设置IP地址

    CentOS/Linux下设置IP地址 1:临时修改:1.1:修改IP地址# ifconfig eth0 192.168.100.100 1.2:修改网关地址# route add default g ...

  8. jdbc操作数据库(详细)

    JDBC是由java编程语言编写的类及接口组成,同时它为程序开发人员提供了一组用于实现对数据库访问的JDBC API,并支持SQL语言.利用JDBC可以将JAVA代码连接到oracle.DB2.SQL ...

  9. (stringstream toupper 空格) 词组缩写 hdu2564

    词组缩写 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  10. C#.Net 持久化对象为XML文件

    </pre><pre code_snippet_id="613717" snippet_file_name="blog_20150307_1_57950 ...