2014-04-15 21 views
2

我試圖運行圖減少工作。但是當我運行這個工作時,我無法找到我的日誌文件。我正在使用hadoop streaming作業來執行map reduce,而我正在使用Python。我正在使用python的日誌記錄模塊來記錄消息。當我通過使用「cat」命令在一個文件上運行它時,會創建日誌文件。記錄在Hadoop

cat file | ./mapper.py 

但是當我通過hadoop運行這個工作時,我無法找到日誌文件。

import os,logging 

logging.basicConfig(filename="myApp.log", level=logging.INFO) 
logging.info("app start") 

## 
##logic with log messages 
## 

logging.info("app complete") 

但我無法在任何地方找到myApp.log文件。日誌數據是否存儲在任何地方,或者hadoop是否忽略應用程序日誌記錄完成。我也在userlogs文件夾中搜索了我的日誌項目,但它看起來不像我的日誌項目那樣。

我有大量其中隨機的項目不進行到下一階段的數據的工作,這是在我們的身邊有非常大的問題,所以我試圖找到一種方法,使用日誌來調試我的應用程序。

任何幫助表示讚賞。

+1

你可以嘗試這裏描述添加標準輸出處理程序到你的記錄? http://stackoverflow.com/questions/14058453/making-python-loggers-output-all-messages-to-stdout-in-addition-to-log – jaynp

回答

1

我相信你在stdout登錄?如果是這樣,那麼您應該登錄stderr,或者創建自己的自定義流。

使用hadoop-streaming,stdout是專用於在mappers/reducers之間傳遞鍵值並輸出結果的流,因此您不應該記錄任何內容。