将spark 2集群资源动态分配给正在运行的作业



我们有一个spark 2 HDInsight集群,它有650 GB和195 V内核。这是一个9个工作节点和2个头节点集群。问题是作业没有充分利用集群。例如,当我运行一个作业时,当我们有650 GB时,它只使用164 GB的内存。我通过将spark.executor.memory从10 GB增加到40 GB解决了这个问题。spark.executor.instances为16。但当我运行多个作业时,问题又来了。最先出现的作业将使用整个集群,直到它完成。其他作业将仅处于运行模式,只有3 GB内存。要求是,当只有一个作业在运行时,必须充分利用集群。如果存在多个作业,则必须在作业之间共享资源(Ram和Vcores(。

我建议您将纱线调度程序更改为Capacity调度程序。这更善于共享资源。这将帮助您确保更好地共享资源。默认情况下,hadoop是"先进先出"。我不同意HDInsight的100%利用率。将执行器增加到40GB正是3GB的新作业无法进入集群的原因。(仅仅因为你分配了40GB并不意味着你的作业会使用它。(如果你想增加集群的使用率,你可以考虑添加线程较少的执行器来充分利用集群。这与Capacity Scheduler&抢占可能是获得更多性能和灵活性的答案。

相关内容

  • 没有找到相关文章

最新更新