apache-spark - 在内存受限的设置中运行 Spark
问题描述
我对在内存非常有限的环境中运行 Spark 的任何提示/技巧或配置选项感兴趣。对于可用内存较小的部署,最重要的注意事项是什么?
解决方案
良好的数据处理基础会让你走得很远。
- 避免在不需要的列周围拖动。
- 使用内存效率高的类型,如 int 而不是字符串。
- 避免需要在内存中实现大量数据的操作,例如连接、排序和分组。
- 考虑将您的查询分解为多个较小的查询。例如,对每小时而不是每天的数据集运行查询。
- 确保您拥有合理数量的分区,以便每个分区的数据量较低。
- 确保您正确处理倾斜。这可能会导致单个任务的内存利用率飙升。
- 每个执行程序运行更多的 cpus 以获得更大的内存池以在任务之间共享。
- 确保内存与 CPU 的比例合理。您甚至可能希望保留一些未充分利用的 CPU,并为每个任务分配更多内存。
- 最后,您还可以在内存不足时使用快速磁盘。Spark 在进行排序和连接时能够溢出到磁盘。
推荐阅读
- c++ - 如何根据文件自动生成唯一的 c++ 类
- c# - 在 C# 中关闭括号之前禁用 Visual Studio 插入单个空格
- clickonce - 通过 ClickOnce 进行的软件更新会改变已安装应用程序的路径吗?
- python - Python selenium:如何单击 span 元素?
- passwords - encfs:不小心丢弃了 .encfs6.xml 文件,但我知道密码。如何重置?
- sed - sed - 连接两个命令,数字行
- spring - 在两个日期之间从数据库中获取记录,并且日期字段之一可以使用 spring jpa 具有空值
- python - Python - Tensorflow.lite.interpreter.set_tensors 音频输入推理错误
- email - Mailerlite 自动化未在完成条件下发送电子邮件
- asp.net-mvc - 在 asp.net mvc Web 应用程序中用于第三方应用程序的 SAML SSO 集成