执行远程 Apache Pig 脚本时如何查看终端日志

Posted

技术标签:

【中文标题】执行远程 Apache Pig 脚本时如何查看终端日志【英文标题】:How to view the terminal log when executing a remote Apache Pig script 【发布时间】:2015-07-07 15:18:11 【问题描述】:

我在 Apache Pig 中编写了一个脚本,该脚本正在 Hadoop 集群上执行。它加载约 55,000 个 .gz 文件,需要 35 小时才能完成。然后它应该将结果存储在一个文件中,但它没有,所以我想调试发生了什么。

我通过键入以下内容来执行脚本:

pig script.pig

在 Ubuntu 虚拟机的终端中,我看到有关作业进度等的信息消息。即使关闭本地计算机,我如何才能查看这些消息?我真的需要让我的本地机器运行整整 35 小时才能看到这些消息吗?

我知道您可以在 Ubuntu 中键入命令并通过键入以下内容来存储响应:

command > logfile.txt

但是我觉得这里不行,因为hadoop hdfs系统和虚拟机之间的连接在关闭本地机器的过程中丢失了,所以日志消息必须存储在hadoop集群上。但是如何实现这一点,或者这是自动完成的,我根本不知道在哪里看?

【问题讨论】:

【参考方案1】:

如果你从本地机器上运行,如果进程被终止(例如通过关闭你的机器),那么 hadoop 将终止工作。这就是为什么您通常希望从集群中的机器或某个 24/7 运行的门户节点开始长时间运行的作业。

如果您可以使用它,您还可以使用 Oozie 之类的东西来运行您的作业,然后 Oozie 服务器将负责运行该作业并提供日志。

【讨论】:

感谢您的回答。由于我认为我无法从集群中的机器上运行该作业,因此我只将本地计算机保持开启了 40 小时,这也可以正常工作。

以上是关于执行远程 Apache Pig 脚本时如何查看终端日志的主要内容,如果未能解决你的问题,请参考以下文章

运行 Apache Pig 脚本时如何查找 jar 依赖项?

在 python 脚本中,如何忽略 Apache Pig 的 Python 装饰器以进行独立单元测试

如何使用 apache pig 在 hadoop 集群上加载文件?

使用 hacatalog 在 tez 模式下运行 pig 脚本时出错

在 EMR 中,与 HBase 集成的 Pig 脚本在尝试加载数据时失败

尝试使用 JAVA 启动 Pig 脚本时出错