zoukankan      html  css  js  c++  java
  • 经验|如何设置Spark资源

    640?wx_fmt=png

    经常有人在微信群里问浪尖,到底应该如何配置yarn集群的资源,如何配置spark executor数目,内存及cpu。今天浪尖在这里大致聊聊这几个问题。

    640?wx_fmt=png

    640?wx_fmt=png资源调优

    Spark和YARN管理的两个主要资源是CPU和内存。磁盘和网络I / O也会影响Spark性能,但Spark和YARN都不会主动管理它们。

    应用程序中的每个Spark executor都具有相同的固定数量的核心和相同的固定堆大小。使用--executor-cores命令行参数或通过设置spark.executor.cores属性指定核心数。同样,使用--executor-memory参数或spark.executor.memory属性配置堆大小。 cores属性控制执行程序可以运行的并发任务数。例如,为每个执行程序设置--executor-cores 5,同时运行最多五个任务。 memory属性控制Spark可以缓存的数据量,以及用于分组,聚合和join的shuffle数据结构的内存的最大大小。

    还要考虑Spark请求的资源如何适应YARN可用的资源。相关的YARN属性是:

    申请五个executor核心意思就是向YARN请求五个核心。 YARN请求的内存更复杂,原因有两个:

    下图(不按默认值缩放)显示Spark和YARN中内存属性的层次结构:

    640?wx_fmt=png

    调整Spark executor的内存大小时,请记住以下几点:

    640?wx_fmt=png资源调优示例

    假设一个集群有六台机器运行nodemanager,每个主机配备16个内核和64 GB内存。

    NodeManager容量yarn.nodemanager.resource.memory-mb和yarn.nodemanager.resource.cpu-vcores应分别设置为63 * 1024=64512(兆字节)和15。避免将100%的资源分配给YARN容器,因为主机需要一些资源来运行操作系统和Hadoop守护程序。在这种情况下,中老年品牌为这些系统进程留下一个GB和一个核心,对于有hbase共存的需要预留更多的内存和cpu。

    可以考虑使用--num-executors 6 --executor-cores 15 --executor-memory 63G。但是,这种方法不行的:

    相反,使用--num-executors 17 --executor-cores 5 --executor-memory 19G:

    其实,资源配置调优全靠经验和自己对集群,分布式,数据量,业务及自己代码的理解,然后多加测试,这样形成自己的经验认知。

    希望对大家有帮助。

    更多大数据经验,技巧,案例,可以加入浪尖知识星球。

    [完]

    推荐阅读:

    戳破 | hive on spark 调优点

    关于Spark Streaming感知kafka动态分区的问题

    640?wx_fmt=jpeg


    文章来源:https://blog.csdn.net/rlnLo2pNEfx9c/article/details/81844218

  • 相关阅读:
    heartbeat 心跳技术
    国产数据库有哪些?
    Redis(1.9)Redis主从复制
    Redis(1.8)Redis与mysql的数据库同步(缓存穿透与缓存雪崩)
    分布式系统/NoSQL
    Redis(1.7)Redis高可用架构与数据库交互(理论篇)
    Redis(1.6)Redis发布订阅
    Redis(1.5)Redis配置文件(4.0.14)
    (5.3.4)数据库迁移——数据对比(结构、数据类型)
    【基本优化实践】【1.5】如何在线稳定的删除/更新大量数据?
  • 原文地址:https://www.cnblogs.com/mazhujun/p/9633713.html
Copyright © 2011-2022 走看看