我嘗試使用System.out.println()打印輸出值,但它們不會出現在控制檯上。如何使用Hadoop打印出map/reduce應用程序中的值以進行調試?調試hadoop應用程序
感謝, 迪帕克。
我嘗試使用System.out.println()打印輸出值,但它們不會出現在控制檯上。如何使用Hadoop打印出map/reduce應用程序中的值以進行調試?調試hadoop應用程序
感謝, 迪帕克。
行打印出來使用System.out.println和通信System.err.println去那的Hadoop上的每個作業寫日誌。您可以通過單擊各個任務來使用Web UI查看它們。
請參閱從Cloudera的這篇博客上測試了很多建議和調試Hadoop作業:http://www.cloudera.com/blog/2009/07/advice-on-qa-testing-your-mapreduce-jobs/
我想補充一點,您可以使用Counters
Hadoop JavaDoc進行調試。例如。如果你想檢查,你的程序中的特定行通過的頻率。
System.out.println不直接指向終端,而是寫入日誌文件。日誌文件默認位於Hadoop目錄中。所以你可以輸入終端 cat /hadoop-homedirectory/logs/userlogs/jobID/attemptID/stdout
你也可以通過網頁界面進入。輸入ip:50070/logs/userlogs。
如果使用MRUnit & ApprovalTests是很容易打印出圖的過程中減少工作。 有一個關於它在這裏的視頻:
HadoopApprovals.verifyMapReduce(new WordCountMapper(),
new WordCountReducer(), 0, "cat cat dog");
時會產生輸出http://t.co/leExFVrf
例如代碼:
[cat cat dog]
-> maps via WordCountMapper to ->
(cat, 1)
(cat, 1)
(dog, 1)
-> reduces via WordCountReducer to ->
(cat, 2)
(dog, 1)
這裏指的https://stackoverflow.com/questions/23235343/debugging -hadoop-in-eclipse – Mash 2015-07-28 10:29:27