spark 导入性能 集群模式下partition 与 cores的关系

  • 部署方式(分布式 / 单机 / Docker / DBaaS):分布式
  • 是否为线上版本:Y / N Y
  • 硬件信息
    • 磁盘( 推荐使用 SSD) 500G SSD
    • CPU、内存信息 350核100G
  • 问题的具体描述
    通过spark connector 插入数据。
    单机模式下,新建space 的时候 paration选择为2000,spark集群提供的cores 约为1000(paration)。
    现改为集群模式下, 每台机器的paration都为2000, show hosts 显示 total 为6000, 这种模式下如果想达到最佳性能,spark集群的cores 是原有的1000 设置合适还是 3000左右合适,谢谢!
  1. 首先Spark-connector中的partition参数配置的是Spark应用程序的partition,不是Nebula中的partition。
  2. 以读取数据为例,如何配置spark-connector的partition,要考虑Nebula Space的partition 和 集群的cores:
    2.1 根据Nebula Space的part数来设置,如果Nebula Space的part数为100,建议spark-connector的partition也设置100,这样Spark的每个partition会读取Nebula Space的一个part。 如果Spark的partition设置更高,则会有partition闲置; 如果Spark的partition设置更低,则读完Nebula的part后闲置的Spark partition会继续读取Nebula的其他part。 类似于多线程和任务的关系。
    2.2 同时也要考虑集群的cores。 你可以理解Spark 的partition数为任务数,cores为线程数。 Spark官方建议 Spark的partition数设置成 分配的 cores数的2-3倍。

不好意思 ,我没表达清除。我想问的是 spark 的cores 数目 与 nebula partition 之间的关系。 在集群模式下 spark 的cores 是按照nebula每个 storage 的 partition 数目的一半左右配置还是按照 total 的partition 数目的 一半左右配置,谢谢。 比如 每个storage 的partition 为 2000,total 显示的partition 为 6000, 那么我应该怎么配置spark 的cores 数目。

  1. spark 的cores和nebula partition没关系
  2. cores和spark的partition有关系,类比线程池中线程和任务的关系。 spark的partition和nebula的Space的partition的关系如二楼描述。
  3. 不要看Nebula的total partition,只看你要操作的Nebula space的partition数。
1 个赞