如何清理hadoop客户机上的jar作业

xzlaal3s  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(321)

问题是作业完成后,/tmp目录(我的客户机)中的jar文件没有被清理。我有以下(简化)代码:

public void run() throws IOException {
    PigServer pigServer = null;
    try {
        StringBuilder sb = new StringBuilder();
        // ... some methods that add to the sb ...

        pigServer = new PigServer(ExecType.MAPREDUCE);
        pigServer.setBatchOn();
        pigServer.registerQuery(sb.toString());                     

        // execute and discard the batch
        pigServer.executeBatch();
        pigServer.discardBatch();
    } finally {
        if (pigServer != null) {
            pigServer.shutdown();
        }
    }
}

据我所知,pigserver.shutdown()应该删除/tmp中的所有临时文件。但是,作业完成后,my/tmp目录中充满了job9196419177728780689.jar文件和一个空pig8776538161976852388tmp子目录。
调试时,我看到(远程)hadoop集群上的很多作业都被删除了,还有一次尝试删除/tmp/temp207120241(本地)。这似乎不是我本地系统上的现有目录。
文件确实会在我关闭虚拟机后被删除,但这显然不是我每次作业后都想做的。我错过什么了吗?
编辑:我不是唯一一个有这个问题的人,这个问题是根据https://issues.apache.org/jira/browse/pig-3338
编辑2:可能的解决方案(不是由我):http://www.lopakalogic.com/articles/hadoop-articles/pig-keeps-temp-files/

ni65a41a

ni65a41a1#

你的分析是正确的。pig创建一个临时文件 File.createTempFile 使用 File.deleteOnExit 在vm关闭时删除它。请看这里的代码。
为每个pig脚本启动一个vm怎么样?

相关问题