Spark — 不仅仅是基础:处理100GB数据所需的Spark内存
2024/10/12 21:02:37
本文主要是介绍Spark — 不仅仅是基础:处理100GB数据所需的Spark内存,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
当你核心少但任务多时,就会出现这种情况哦,手忙脚乱的 🤷
贪多不一定是好事!不相信吗?问问数据工程师,他一接到任务就揽下来,从不会拒绝。(哎呀,不好意思,是不是冒犯到你了🙈🤐?)
你也可以问问那个刚刚多了5个新任务的家伙,因为他搞不定你的Spark作业需要多少核心! 🙃
但是,说真的,假设你被交给一个任务,即搭建一个能“高效”处理100GB数据的Spark集群。
你准备怎么开始呢?
我来给你展示一下老板他是怎么做的。😏
第一步:需要多少执行核心?我们先决定需要多少执行核心 🤔
- 默认情况下,每个分区大小是128MB__— 重要牢记
- 为了计算所需的内核数量,你需要计算最终将会有多少个分区
- 100GB 可以转换为 100*1024 MB,也就是 102400MB
- 分区数量是 102400 除以 128,结果是 800
- 因此,总共需要 800 个执行器核心
既然我们知道了核心数量,接下来我们就得确定需要多少执行器。
-
平均来说,一般建议在一个executor中拥有2到5个执行核心
-
如果一个executor中的核心数量是4,那么总共的executor数量 = 800/4 = 200
- 所以,我们需要200个executor来完成这个任务
显然地,这个数字会根据你在一个执行器里保留了多少执行核心而变化 😄
步骤 3:所需的总执行内存?重要的一点!给每个执行器分配多少内存?🤔
执行器核心的总内存通常
默认分区内存的4倍 = 4×128 = 512 MB
所以,总执行内存 = 核心数 512 = 4 512 = 2GB
总结:处理100GB数据总共需要多少内存我们来了!🥳让我们确认处理100GB数据所需的总内存吧
- 每个执行器都有2GB的内存
- 总共有200个这样的执行器
因此,要处理100GB的数据,需要至少400GB的总内存来实现完全并行处理。
也就是说,所有任务都会一起运行 😲
另外一步:驱动程序内存应该设置为多少?说,运行一个任务要花5分钟,处理100GB的数据量需要多久?——答案还是5分钟!! 因为所有任务都并行运行
- 这取决于您的用例。
- 如果您调用
df.collect()
,则需要 100GB 的驱动器内存,因为所有执行器的数据都会被发送到驱动器。 - 如果您只是将输出导出到云或磁盘,则驱动器内存最好设置为执行器内存的两倍,也就是 4GB。
伙计,这就是高效处理100GB数据的方法 😉
需要注意的一点是,这是一个理想的方案,可以很容易地调整以适应项目的预算需求完全没问题
如果项目预算比较紧张,你可以将人员数量减半或减至原来的四分之三。不过这样做的话,处理的时间肯定会因此变长。
如果你喜欢,请点赞 👏,让更多数据工程师看到它。
谢谢你的阅读, 😁
这篇关于Spark — 不仅仅是基础:处理100GB数据所需的Spark内存的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-14使用AWS Lambda和S3打造智能文件整理器 - (动手搭建系列)
- 2024-11-14Netflix简化营收基础设施中的合同管理工具
- 2024-11-142024年必备的6款开源Terraform神器
- 2024-11-14Spin 3.0来啦:全新功能让你的无服务器Wasm应用开发更上一层楼
- 2024-11-14如何高效管理项目?小团队到大企业的多功能项目管理工具推荐
- 2024-11-1333 张高清大图,带你玩转 KubeSphere 4.1.2 部署与扩展组件安装
- 2024-11-11Spark 新作《循序渐进 Spark 大数据应用开发》简介
- 2024-11-11KubeSphere 社区双周报| 2024.10.25-11.07
- 2024-11-11云原生周刊:Istio 1.24.0 正式发布
- 2024-11-10一个故事,为你理清云开发服务的选择思路