Hadoop集群找错bug流程与yarn 命令

将一个项目在服务器上启动提交给hadoop集群的任务上出错了,改如何调试?

总结下:如何去找错的思路。整体围绕: 数据、模型、代码三个方面。此处提下查看代码出错问题。

在服务器启动脚本,如sh train.sh后,通常会在log目录下,有运行脚本对应的log信息文件,如train_20200827.log,用vim 打开log,信息中大概60行上下会有对应application的监控hadoop的监控面板,类似

The url to track the job: http://yz70210.hadoop.data.sina.com.cn:9008/proxy/application_1594195336447_10990716/  。将http的链接复制到浏览器中,便可以看到对应正在运行的application的信息,查看任务失败的节点信息 。如图

会弹出失败的节点信息如:

进一步点击里面,去查看logs里的详细的报错信息

往下拉,可以看到具体是代码哪个地方出错了

自己主动将有节点报错的application结束.命令:

yarn application -kill applicatioID 
如:
yarn application -kill application_1594195336447_16535164

如果当整个程序已经结束,即浏览器打开的地址将失效(打不开),这个时候只能通过yarn logs 去把错误日志信息拉取下来。

案例:服务器本地的log下的train.sh_20200912_221837_11852_16202.log只能看到是否运行正常或失败的信息,看不到具体的跑的程序的报错信息。查看具体节点的报错信息需要将yarn上的日志拉取下来。

拉取格式为:

yarn logs --applicationId=TrainXXX.log里的applicationId名字(注意带着application)开头  >导入的本地文件名

如:

 yarn logs --applicationId=application_1594195336447_14561477 > yarnlogapplication_1594195336447_14561477

然后用vi 打开,到里面去搜Exception 。快捷查询(/Exception)或 error 或limits(可能内存溢出)

搜索limit 可以看到里面有

   1] is running beyond physical memory limits. Current usage: 8.0 GB of 8 GB physical memory used; 50.3 GB of 16.8 GB virtual memory used. Killing container.

即自己的内存溢出了。自己申请的只有8个G,但是实际产生的物理内存超过了内训限制,container被killing了。此即找到了代码存在的问题

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值