应用程序错误日志在哪里?



由于预期必须通过查找日志文件中的错误消息来调试我们的 Python 代码,我创建了一个 Hadoop 流作业,该作业会引发异常,但我找不到错误消息(或堆栈跟踪(。

类似的问题 hadoop streaming:应用程序日志在哪里?和 hadoop streaming:如何查看应用程序日志?使用 Python 的logging模块,这在这里是不可取的,因为 Python 已经记录了错误,所以我们不应该这样做。

这是映射器代码;我们使用Hadoop的内置reduceraggregate

#!/usr/bin/python
import sys, re
import random
def main(argv):
line = sys.stdin.readline()
pattern = re.compile("[a-zA-Z][a-zA-Z0-9]*")
try:
while line:
for word in pattern.findall(line):
print "LongValueSum:" + word.lower() + "t" + "1"
x = 1 / random.randint(0,99)
line = sys.stdin.readline()
except "end of file":
return None
if __name__ == "__main__":
main(sys.argv)

x = 1 / random.randint(0,99)应该创建一个ZeroDivisionError,并且作业确实失败了,但 greping 日志文件不会显示错误。我们需要在某个地方设置一个特殊的标志吗?

我们已经浏览了Google Dataproc文档以及Hadoop Streaming文档。

当您运行 Cloud Dataproc 作业时,作业驱动程序输出将流式传输到 GCP 控制台,显示在命令终端窗口中(对于从命令行提交的作业(,并存储在 Cloud Storage 中,请参阅访问作业驱动程序输出。您还可以在 StackDriver 中找到名为dataproc.job.driver的日志。

您还可以在创建集群时启用 YARN 容器日志,并在 StackDriver 中查看它们,请参阅说明。

除此之外,StackDriver 中的yarn-userlogs也可能很有用。

最新更新