Spark Executors RAM和文件大小

时间:2017-04-07 23:20:54

标签: apache-spark apache-spark-sql spark-streaming

我正在使用WholeTextFiles方法读取大小为8.2 GB的文本文件(文件夹中的所有文件)。

读取文件的作业有3个执行器,每个执行器有4个核心和4GB内存,如图所示..

虽然作业页面显示了3个执行程序,但只有2个执行程序正在处理数据。(我可以理解,从stderr日志中可以打印出正在读取的文件)。第三执行者没有任何跟踪它正在处理文件。

整个文本文件API有两个分区..

2个执行器每个共有8GB内存4GB。但我的文件有8.2GB。

任何人都可以解释一下8GB ram的2个执行器是如何拥有8.2GB文件的?

我的工作已经完成了。

enter image description here

2 个答案:

答案 0 :(得分:0)

在函数WholeTextFiles的spark文档中:  每个文件都作为单个记录读取,并以键值对的形式返回,其中键是每个文件的路径,值是每个文件的内容。

因此RDD记录是整个文件内容,num分区等于文件数。 要拥有多个分区,可以使用函数textFile

答案 1 :(得分:0)

每个执行程序都有内存开销[占分配内存的10%或最小为384 M]。

您可以从YARN正在运行的作业中看到实际分配的内存。

此外,有一种称为容器内存[最小和最大限制]分配。