我在 Amazon EMR(15 个节点,>1.5 小时)上有一个长时间运行的 Hadoop 流作业。该作业在完成度约为 75% 时失败。我将 Python 用于 mapper 和 reducer。
我做了以下优化:
sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
sys.stderr = os.fdopen(sys.stderr.fileno(), 'w', 0)
logging.getLogger().setLevel(logging.INFO)
在使用模块发布日志条目后,我还添加了以下内容logging
:
sys.stderr.flush()
time.sleep(30)
sys.exit(3)
尝试捕获错误无济于事:Hadoop 日志文件不显示我的错误 :(
如何让 Hadoop 记录我的消息而不丢弃任何消息???