2013-07-01 57 views
0

問題是在作業完成後,(/我的客戶機)/ tmp目錄中的jar文件未被清理。 我有以下的(簡化)代碼:如何清理我的hadoop客戶機上的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中我所有的臨時文件。但是,作業完成後,我的/ tmp目錄中充滿了Job9196419177728780689.jar文件和一個空的pig8776538161976852388tmp子目錄。

調試時,我看到(遠程)hadoop羣集上的大量作業正在被刪除,再加上一次嘗試刪除/ tmp/temp2071202241(本地)。 這似乎並不是我本地系統上的現有目錄。

關閉虛擬機之後,文件會被刪除,但這顯然不是我在完成每項工作後所要做的。 我錯過了什麼嗎?

編輯:我不是唯一一個有這個問題,這個問題在https://issues.apache.org/jira/browse/PIG-3338

編輯2日提交的:可能的解決方法(不是我):http://www.lopakalogic.com/articles/hadoop-articles/pig-keeps-temp-files/

回答

1

你的分析是正確的。 Pig創建臨時文件File.createTempFile並使用File.deleteOnExit在VM關閉時將其刪除。請參閱代碼here

如何爲每個Pig腳本啓動VM?

+0

謝謝。爲每個腳本啓動一個新的虛擬機並不是我期待的。至少現在我會繼續使用我的解決方法,這是一個cron作業,每隔一段時間就會清空/ tmp。 –

相關問題