Hadoop中的日志记录

2 投票
1 回答
1678 浏览
提问于 2025-04-18 02:45

我正在尝试运行一个map reduce任务。但是当我运行这个任务时,找不到我的日志文件。我使用的是hadoop streaming来执行map reduce,并且我用的是Python。我用Python的日志模块来记录信息。当我通过“cat”命令在一个文件上运行时,日志文件是会被创建的。

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 个回答

1

我觉得你是在用 stdout 记录信息,对吧?如果是这样的话,你应该改用 stderr 来记录,或者自己创建一个专门的输出流。

在使用 hadoop-streaming 的时候,stdout 是用来在处理数据的过程中传递键值对和输出结果的,所以你不应该在里面记录任何信息。

撰写回答