EMR-Flink作业显示错误“超出了GC开销限制错误”。 EMR群集是在VPC中使用默认EMR角色创建的。从高级选项中选择了Hadoop和Flink选项(我尝试了不同版本的Hadoop和Flink)
Step方法用于提交带有参数集的自定义jar。 Job从Aurora DB读取数据
问题:当读取请求中来自Aurora DB的行数较少时,作业成功执行,但是随着行数上升至数百万,我开始收到“超出了GC开销限制错误”的信息。我正在使用JDBC驱动程序进行Aurora数据库连接。在我的本地计算机上,我没有遇到任何错误,并且无论读取请求中的数据大小如何,一切都很好。
确切的错误:
java.lang.OutOfMemoryError: GC overhead limit exceeded
-XX:OnOutOfMemoryError="kill -9 %p"
Executing /bin/sh -c "kill -9 8344"...
尝试的解决方案: 1:我尝试通过使用以下链接解决问题:https://aws.amazon.com/premiumsupport/knowledge-center/emr-outofmemory-gc-overhead-limit-error/。
2:在创建集群(例如
)时,我还尝试提供flink配置taskmanager.heap.mb:13926
jobmanager.heap.mb:13926
taskmanager.memory.preallocate:true
taskmanager.memory.off-heap:true
3:我还尝试了其他选项,并添加了其他设置以进行flink配置,但没有任何帮助。
答案 0 :(得分:1)
问题出在Hadoop内存中,如下所示
=============用户hadoop的Java进程============== 8228 com.amazonaws.elasticmapreduce.statepusher.StatePusher -Dlog4j.defaultInitOverride 4522 aws157.instancecontroller.Main -Xmx1024m -XX:+ ExitOnOutOfMemoryError -XX:MinHeapFreeRatio = 10 -Dlog4j.defaultInitOverride =========================
以下配置对我有用,并解决了我的问题
[
{
"Classification": "hadoop-env",
"Properties": {
},
"Configurations": [
{
"Classification": "export",
"Properties": {
"HADOOP_HEAPSIZE":"10000"
},
"Configurations": [
]
}
]
}
]