猪程序只是无缘无故地卡在一个阶段
Posted
技术标签:
【中文标题】猪程序只是无缘无故地卡在一个阶段【英文标题】:Pig programs just get stuck at a stage for no reason 【发布时间】:2016-05-20 13:24:09 【问题描述】:我正在处理大小为 400 MB 的数据,该脚本有 5 个不同的部分并有 5 个存储命令,如果我一次只切换一个存储命令并评论所有其他命令,猪脚本的效果非常好。 但是如果所有 5 个存储命令都打开,则作业浏览器(色调)会卡在没有特定的阶段,然后它只是不断地重新尝试一个没有进度的作业。 没有错误,日志也没有错误和警告。
我认识到的问题可能是由于环境问题,因为脚本曾经使用 -M 属性也可以正常工作,但另一次失败了。
【问题讨论】:
【参考方案1】:如果每个 STORE 数据都依赖于之前的 STORE,那么您可以在每个 STORE 之后使用 exec 命令。这将确保您的 STORE 命令在下一组命令 /STORE 之前完全执行。
A = ...
STORE A;
exec;
B = FOREACH A GENERATE ...
【讨论】:
【参考方案2】:错误是由于纱线使用的资源分配策略。 当您的磁盘已满时,它会导致您的节点变得不健康,从而减少内存。 目前,纱线调度程序(公平调度程序)只是将总可用内存平均分配给所有可用作业,并且没有检查在我的情况下确实发生的死锁。 解决方案是通过yarn改变调度,使用容量调度。
【讨论】:
以上是关于猪程序只是无缘无故地卡在一个阶段的主要内容,如果未能解决你的问题,请参考以下文章
如何在配置类路径阶段获取有关 Grails 应用程序的更多信息?
php array_key_exists, !empty 和 isset 无缘无故失败?