2010-07-08 55 views

回答

53

其實stdout只顯示的非地圖縮減類的System.out.println()

地圖和縮小階段的System.out.println()可以在日誌中看到。輕鬆訪問日誌的方法是:

http://localhost:50030/jobtracker.jsp->點擊完成的作業 - >點擊地圖或減少任務 - >點擊任務數量 - >任務日誌 - >標準輸出日誌。

希望這有助於

+0

同樣的方法也適用於在Hue下使用Oozie。Oozie安排MR2地圖作業,但不會正確顯示日誌。要看到它們,你應該去jobtracker.jsp。 – 2016-07-01 09:19:55

+0

JobTracker不支持Hadoop 2 – 2017-12-02 03:50:20

21

另一種方式是通過終端:

1)進入您Hadoop_Installtion目錄,然後進入「日誌/ userlogs」
2)打開您的job_id目錄。
3)檢查目錄與_ M_如果你想映射器輸出或 _r_如果你正在尋找減速

:在Hadoop的20.2.0:

 
> ls ~/hadoop-0.20.2/logs/userlogs/attempt_201209031127_0002_m_000000_0/ 
log.index stderr  stdout  syslog 

上述手段:
Hadoop_Installation:〜/ Hadoop的0.20.2
JOB_ID:job_201209031127_0002
_m_:地圖任務,「地圖編號「:_000000_

4) open stdout如果您使用「system.out.println」或stderr如果您使用了「system.err.append」。

PS。其他hadoop版本可能具有不同的層次結構,但它們都應該在$ Hadoop_Installtion/logs/userlogs下。

8

要在控制檯上獲得標準輸出和日誌消息,您可以使用Apache公共日誌記錄框架將其映射到您的映射器和簡化器。

public class MyMapper extends Mapper<..,...,..,...> { 

    public static final Log log = LogFactory.getLog(MyMapper.class) 

    public void map() throws Exception{ 
     // Log to stdout file 
     System.out.println("Map key "+ key); 

     //log to the syslog file 
     log.info("Map key "+ key); 

     if(log.isDebugEanbled()){ 
      log.debug("Map key "+ key); 
     } 

     context.write(key,value); 
    } 
} 
12

在有yarn Hadoop集羣,你可以獲取日誌,包括標準輸出,具有:

yarn logs -applicationId application_1383601692319_0008 

出於某種原因,我發現這是比我在看到比較完整的web界面。 web界面沒有列出我輸出的System.out.println()

+3

感謝您爲hadoop2提供答案。你能告訴我爲什麼我在執行該命令後得到這個錯誤? '日誌在/ tmp/logs/hadoopuser/logs/application_1441282624447_3854'上不可用並且'日誌聚合尚未完成或未啓用' – 2015-11-23 16:25:09