【问题标题】:Spark Executors RAM and file SizeSpark Executors RAM 和文件大小
【发布时间】:2017-04-10 18:56:37
【问题描述】:

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

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

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

wholetextfile API 有 2 个分区..

2 个执行程序有 4GB,每个执行程序总共 8GB 内存。但我的文件有 8.2GB。

谁能解释一下这 2 个 8GB 内存的执行器是如何拥有 8.2GB 文件的?

我的工作已成功完成。

【问题讨论】:

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


    【解决方案1】:

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

    所以一条 RDD 记录是一个完整的文件内容,分区数等于文件数。 要拥有多个分区,您可以使用函数 textFile

    【讨论】:

      【解决方案2】:

      每个执行程序都有内存开销 [这是分配内存的 10% 或至少 384 M]。

      您可以从 YARN Running Jobs 中查看实际分配的内存。

      另外,还有一种叫做容器内存[最小和最大限制]分配的东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-25
        • 1970-01-01
        • 2016-07-20
        • 2021-04-19
        • 2019-11-20
        • 2019-11-10
        • 2016-09-05
        • 1970-01-01
        相关资源
        最近更新 更多