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

时间:2019-10-01 19:54:52

标签: python hadoop-streaming google-cloud-dataproc

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

类似的问题hadoop streaming: where are application logs?hadoop streaming: how to see application logs?使用Python的logging模块,此处不推荐使用,因为Python已经记录了错误,因此我们不必这样做。

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

#!/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)

应该{​​{1}}行 创建一个x = 1 / random.randint(0,99),确实该作业失败,但是对日志文件进行grep操作不会显示错误。我们需要在某个地方设置一个特殊的标志吗?

我们已经遍历了Google Dataproc文档和Hadoop Streaming文档。

1 个答案:

答案 0 :(得分:1)

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

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

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