Oozie:在lib文件夹下放置更新的jar之后有什么需要做的吗?

时间:2017-01-02 08:07:31

标签: oozie

我正在尝试在lib路径下放置一个更新的jar并删除旧jar。不幸的是,我看到oozie控制台中的旧日志存在于旧罐子中。出于保密目的,我无法在此显示日志。但我正在做以下步骤:

  1. 替换workkflow.xml中提到的lib文件夹下的jar(mycode.jar)

  2. 使用oozie job -oozie http://host -config job.properties -run

  3. 提交了oozie作业
  4. 当我在控制台中看到日志时,即使更换了jar,我也可以看到旧jar(较旧版本的mycode.jar)日志。

2 个答案:

答案 0 :(得分:1)

如果您正在讨论oozie工作流应用程序中的lib目录,那么您无需执行任何操作。下一次执行工作流程将自动选择新的(更新的)jar。

要将jar更新为共享库/user/oozie/share/lib/lib_*/*,则在更换jar后,需要执行以下命令将共享库更新为oozie服务器。

oozie admin -sharelibupdate

希望这会有所帮助。感谢。

答案 1 :(得分:0)

为确保问题相同,我将叙述一下所面临的问题:

  1. 创建了一个MapReduce JAR并将其放置在lib文件夹中。

  2. Ran oozie(MapReduce操作)工作并按预期选择了JAR,并运行良好。

  3. 我在代码(JAR)中进行了一些功能更改,因此添加了新的日志语句以确保选择了新的JAR。构建了JAR,并用lib文件夹(hdfs)中的新建JAR替换了旧的JAR

  4. 再次执行oozie作业,由于未显示新的日志语句,因此执行了旧JAR中的代码。

经过几次搜索,我发现了以下提示:

  1. 清除纱线缓存:在HortonWorks网站(https://community.hortonworks.com/articles/92339/how-to-clear-local-file-cache-and-user-cache-for-y.html)中找到了它-在下面粘贴内容以供参考

简短说明: 要使用具有相同名称的不同版本的jar文件,请清除所有NodeManager主机上的缓存,以防止应用程序使用旧的jar

a. Find out the cache location by checking the value of the yarn.nodemanager.local-dirs property 

< property >       
< name >yarn.nodemanager.local-dirs< /name>       
< value>/hadoop/yarn/local</value> 
< /property>

b。删除位于yarn.nodemanager.local-dirs中指定的文件夹内的filecache和usercache文件夹。

[yarn@node2 ~]$ cd /hadoop/yarn/local/ 

[yarn@node2 local]$ ls filecache  nmPrivate  spark_shuffle  usercache 

[yarn@node2 local]$ rm -rf filecache/ usercache/

c。重新启动YARN服务。

我无法清除缓存,因为我没有必要的访问权限。因此,我遵循以下解决方法

  1. 重命名程序包或类,因为此程序包/类是我编写的,所以我可以自由地简单地重命名该类,因此在oozie中,当查找新的类名时,将自动执行新功能。

选项2对于许多人来说可能并不可行,并且关于oozie为什么不选择New JAR / Class的问题仍然悬而未决。