【发布时间】:2021-11-05 23:46:58
【问题描述】:
当我使用 flink 执行一个从 hive 读取的作业时,hive 包含大约 1000 个文件,flink 显示并行度为 1000,flink 请求资源使用了我集群的所有资源导致其他作业请求槽失败,其他作业执行失败。1000 个文件的每个文件都很小。作业可能不需要占用所有资源。如何调整使用较少资源来执行作业的 flink 参数
【问题讨论】:
标签: hive apache-flink hadoop-yarn
当我使用 flink 执行一个从 hive 读取的作业时,hive 包含大约 1000 个文件,flink 显示并行度为 1000,flink 请求资源使用了我集群的所有资源导致其他作业请求槽失败,其他作业执行失败。1000 个文件的每个文件都很小。作业可能不需要占用所有资源。如何调整使用较少资源来执行作业的 flink 参数
【问题讨论】:
标签: hive apache-flink hadoop-yarn
纱线透视
我不推荐使用 Yarn 的内存管理。当容器超过限制时,纱线会立即杀死容器。通常你需要禁用内存检查来解决这类问题。
"yarn.nodemanager.vmem-check-enabled":"false",
"yarn.nodemanager.pmem-check-enabled":"false"
Flink 视角
您无法限制插槽资源的使用。您必须根据需要调整任务管理器。通过减少插槽或在每个节点上运行多个任务管理器。您可以通过taskmanager.memory.process.size设置任务管理器资源使用限制。
您也可以在 kubernetes 上使用 flink。您可以创建Flink clusters for each job,这将为您提供更大的灵活性。它将为每个作业创建任务管理器,并在作业完成时销毁它们。
还有stateful functions,您可以将作业管道操作员部署到单独的容器中。这将允许您在任务管理器旁边单独管理每个功能资源。这可以让您减轻任务经理的压力。
Flink 也支持Reactive Mode。这也可以通过根据 cpu 类型的指标自动扩大/缩小算子来减轻工人的压力。
您需要发现此类功能并找到满足您需求的最佳解决方案。
【讨论】: