【问题标题】:flink on yarn use table api read from hive ,many hive file caused flink used all resource(cpu,memory)flink on yarn use table api 从 hive 读取,许多 hive 文件导致 flink 使用了所有资源(cpu,内存)
【发布时间】:2021-11-05 23:46:58
【问题描述】:

当我使用 flink 执行一个从 hive 读取的作业时,hive 包含大约 1000 个文件,flink 显示并行度为 1000,flink 请求资源使用了我集群的所有资源导致其他作业请求槽失败,其他作业执行失败。1000 个文件的每个文件都很小。作业可能不需要占用所有资源。如何调整使用较少资源来执行作业的 flink 参数

【问题讨论】:

    标签: hive apache-flink hadoop-yarn


    【解决方案1】:

    纱线透视

    我不推荐使用 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 类型的指标自动扩大/缩小算子来减轻工人的压力。

    您需要发现此类功能并找到满足您需求的最佳解决方案。

    【讨论】:

    • 谢谢,我已经解决了这个问题。我使用 table api 从 hive 读取,Table config 可以设置参数来限制 hive 源并行度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    相关资源
    最近更新 更多