scala - 如何确保火花作业正在利用所有可用资源(利用所有容器)
问题描述
我有一个火花流作业,它从 kafka 读取数据并放入数据仓库。
它运行得非常好,但问题是当我监控日志时,我注意到来自我的应用程序的日志只在一个容器上,而容器的其余部分只显示 GC(分配失败)。尝试过使用 -num-executors 和 --executor-memory 的不同组合。是真的在利用集群的全部可用资源,还是只有一个工作节点在完成所有工作。
我正在使用 AWS EMR 来部署我的工作。集群有 1 个主节点(m5xLarge)和 2 个数据节点(m5xLarge)。每个节点上的可用内存 16 GB,4 个 vcpu。
来自其中一个容器的日志
2021-03-25T17:30:30.539+0000:[GC(分配失败)2021-03-25T17:30:30.539+0000:[ParNew:73307K->6385K(74944K),0.0072151 秒]161323K->95020KK2 ), 0.0073002 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] 2021-03-25T17:30:31.249+0000:[GC(分配失败)2021-03-25T17:30:31.249+0000:[ParNew:73009K->4636K(74944K),0.0065039 秒] 161644K->94637KK2 ), 0.0065701 secs] [Times: user=0.01 sys=0.01, real=0.01 secs] 2021-03-25T17:30:31.457+0000:[GC(分配失败)2021-03-25T17:30:31.457+0000:[ParNew:71260K->3970K(74944K),0.0040602 秒] 161261K->93971KK2 ), 0.0041415 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] 2021-03-25T17:30:31.700+0000:[GC(分配失败)2021-03-25T17:30:31.700+0000:[ParNew:70594K->5094K(74944K),0.0044768 秒]160595K->95095K(4 ), 0.0045439 秒] [时间:用户=0.02 系统=0.00,真实=0.00 秒] 2021-03-25T17:30:33.044+0000:[GC(分配失败)2021-03-25T17:30:33.044+0000:[ParNew:71718K->7049K(74944K),0.0131990 秒]161719K536->97050KK2 ), 0.0132825 secs] [Times: user=0.04 sys=0.00, real=0.02 secs] 2021-03-25T17:30:35.042+0000: [GC (分配失败) 2021-03-25T17:30:35.042+0000: [ParNew: 73673K->7211K(74944K), 0.0063486 秒] 163674K->97868KK2 ), 0.0064325 secs] [Times: user=0.03 sys=0.00, real=0.01 secs] 2021-03-25T17:30:35.202+0000:[GC(分配失败)2021-03-25T17:30:35.202+0000:[ParNew:73835K->8320K(74944K),0.0125162 秒]164492K->103499KK2( ), 0.0125880 secs] [Times: user=0.04 sys=0.00, real=0.02 secs] 2021-03-25T17:30:35.340+0000: [GC (分配失败) 2021-03-25T17:30:35.340+0000: [ParNew: 74904K->8320K(74944K), 0.0165272 秒] 170084K->116030K2( ), 0.0166063 secs] [Times: user=0.05 sys=0.01, real=0.02 secs] 2021-03-25T17:30:37.309+0000:[GC(分配失败)2021-03-25T17:30:37.309+0000:[ParNew:74944K->8319K(74944K),0.0116421 秒]182654K->117918K2( ), 0.0117176 secs] [Times: user=0.04 sys=0.00, real=0.01 secs] 2021-03-25T17:30:37.441+0000:[GC(分配失败)2021-03-25T17:30:37.441+0000:[ParNew:74943K->6171K(74944K),0.0188051 秒] 184542K->120606K26( ), 0.0188938 secs] [Times: user=0.05 sys=0.00, real=0.02 secs] 2021-03-25T17:30:37.652+0000:[GC(分配失败)2021-03-25T17:30:37.652+0000:[ParNew:72674K->8320K(74944K),0.0080351 秒]187109K->124677K2( ), 0.0081014 secs] [Times: user=0.03 sys=0.00, real=0.01 secs]
Spark 2.4.0 版 Scala 2.11.12 版
谢谢
解决方案
推荐阅读
- python - 有没有办法在 linux 应用程序中注入一个字符串,所以我以后可以以某种方式读取它?
- javascript - 不进行react路由返回App组件
- java - java或jvm如何处理/渲染图形
- docker - Docker 正在运行,但收到错误消息说恶魔没有运行
- updates - GroIP 停产
- database - 如何在laravel中使用一种形式将数据插入两个表中
- python - 如果匹配项不存在,如何匹配正则表达式中可能存在或不存在但具有占位符的字符串
- java - 使用 JSch 时出现“无效的私钥”
- javascript - 将数字字符串格式化为价格
- python - 一页上的多个表单 Python FLASK