java作业给出的oom错误不一致

lb3vh1jj  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(406)

我已经在linux box上安排了一个jar文件(cron)。jar通过jdbc与hive服务器连接并运行selectquery,然后将所选数据写入csv文件。每日数据量约为1.5亿条记录,csv文件大小约为30gb。
现在,这个作业并不是每次被调用时都完成,而是导致写入部分数据。我检查了pid是否有错误 dmesg | grep -E 31866 我可以看到:

[1208443.268977] Out of memory: Kill process 31866 (java) score 178 or sacrifice child
[1208443.270552] Killed process 31866 (java) total-vm:25522888kB, anon-rss:11498464kB, file-rss:104kB, shmem-rss:0kB

我使用如下内存选项调用jar: java -Xms5g -Xmx20g -XX:+UseG1GC -cp jarFile 我想知道什么确切的错误文本的意思,有没有任何解决办法,我可以申请,以确保我的工作不会运行。问题是,工作并不是每次表现不一致时都会失败。

5vf7fwbs

5vf7fwbs1#

这个消息实际上来自linux内核,而不是您的工作。这意味着您的系统内存不足,内核已经终止了您的工作来解决问题(否则您可能会得到内核恐慌)。
您可以尝试修改应用程序以降低内存需求(例如,以增量方式加载数据或编写分布式作业,以在集群上完成所需的转换,而不仅仅是在一台计算机上)。

相关问题