sparkcore分区_root据 worker、 core和 DataFrame 大小确定最佳 spark分区数

是的,Spark应用程序只有一个驱动程序。

numWorkerNodes和numExecutors之间的关系是什么?

一个 job者可以承载多个 executor,您可以将其视为集群的机器/节点的 job者,而 executor则是在该 job者上运行的进程(在 core中执行)。

所以“numWorkerNodes<=numExecutors”。

他们有配给吗?

就我个人而言,在一个假集群中 job,我的 Notebook电脑是驱动程序,而在同一台 Notebook电脑中的虚拟机是 workers,在一个超过10万个节点的工业集群中,我不需要关心这一点,因为这似乎是由Spark负责的。

我只是使用:

--num-executors 64

当我启动/提交我的脚本时,Spark知道它需要召集多少 worker(当然,也要考虑到其他参数和机器的性质)。

因此,就我个人而言,我不知道这种比例。

numdrows与numpartitions之间是否存在已知/普遍接受/最佳的比率?

我不知道其中一个,但 root据经验,你可以用 executors的产品乘以 executors的 core,然后再乘以3或4。当然,这是一个启发式的。在pyspark中,它看起来像这样:

sc = SparkContext(appName = "smeeb-App")

total_cores = int(sc._conf.get('spark.executor.instances')) * int(sc._conf.get('spark.executor.cores'))

dataset = sc.textFile(input_path, total_cores * 3)

如何 root据 DataFrame 的大小计算“最佳”分区数?

这是个很好的问题。当然,这很难回答,这取决于您的数据、集群等,但正如我们在这里与自己讨论的那样。

分区太少,您将拥有大量的数据块,尤其是在处理大数据时,这会使应用程序内存不足。

分区太多,您的 HDFSSS将承受很大的压力,因为必须从 HDFSSS生成的所有元数据都会随着分区数量的增加而显著增加(因为它维护临时文件等)。*

因此,您也需要为分区的数量找到一个最佳位置,这是微调应用程序的一部分。:)

“经验法则”是:numPartitions=numWorkerNodes*numCpucoresPerWorker,是真的吗?

啊,在看到这个之前,我写了上面的启发式。所以这已经被回答了,但是考虑到 worker和 executors的不同。

*今天我失败了:通过python用spark准备我的bigdata,当使用太多的分区时,导致活动任务在spark ui中是负数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值