【问题标题】:Is there any way to get informative errors from python scripts in hadoop streaming?有没有办法从 hadoop 流中的 python 脚本中获取信息错误?
【发布时间】:2023-03-10 17:39:01
【问题描述】:

我正在使用带有 hadoop 流的 python。尽管进行了仔细的单元测试,错误还是不可避免地蔓延开来。当它们发生时,这个错误消息就是 hadoop 给出的全部:

java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1
    at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:362)
    at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:576)
...

该消息对调试非常无益。

有没有办法从 hadoop 流中的 python 脚本中获取 informative 错误?

【问题讨论】:

  • 你找到解决办法了吗?

标签: python debugging error-handling hadoop hadoop-streaming


【解决方案1】:

如果您有权访问正在运行的集群的作业跟踪器,则可以通过查找作业并查找失败的任务来访问脚本的 stderr/stdout。

【讨论】:

  • 我应该在哪里查看?我在 EC2 上运行我自己的集群,但要么它没有报告 stderr/stdout,要么我找错了地方。
  • 您是否知道为集群运行 jobtracker 的节点的 IP 和/或主机名?通常,您可以通过端口 50030 的浏览器访问它,尽管防火墙有时会阻止该端口。另一种选择是,如果您知道给定任务失败的节点,您可以 sssh 到该节点并查找您的作业日志。确切的目录取决于您使用的 hadoop 包。
  • 我可以在 50030 端口进入 jobtracker。我可以看到管理页面、作业页面甚至任务页面,但它不会加载日志。
  • 可能是防火墙问题。您可以通过登录到运行失败任务的节点来通过 ssh 访问日志。该位置取决于您的操作系统和您使用的发行版,但您可以检查 /var/logs/hadoop 或其他内容。否则,如果您有管理员,您可以与他交谈。如果您能够重新创建,您可以做的另一件事就是在样本输入上运行 python 脚本,如 unix 管道。它通常类似于'cat input | python mapper.py |排序 | python减速器.py'。这将帮助您捕获应用级错误,但不会帮助您捕获集群问题。
猜你喜欢
  • 2014-05-30
  • 1970-01-01
  • 1970-01-01
  • 2012-06-27
  • 2022-07-18
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多