立即注册 登录
About云-梭伦科技 返回首页

jixianqiuxue的个人空间 https://www.aboutyun.com/?331 [收藏] [复制] [分享] [RSS]

日志

Spark处理多少数据是否需要多少内存

已有 1985 次阅读2019-4-30 12:40 |系统分类:Spark

Spark处理1Tb数据不需要1Tb的内存。
具体需要多少内存是根据executor的core数量和每次读取数据集的block大小决定的。以读取hdfs上1tb大文件为例:若每个block大小为128mb,则一共有8192个block,产生的task也有8192个。假如executor的core为2,内存为1g,则executor同时可运行2个task,此时每个task可获得的堆内存最大约为127.2m,这个配置下去处理一个block的数据会出现oom: java heap space。此时我们把内存加大到2g,则每个task最大可用堆内存约为500mb,基本满足一个block的处理需求(当然这里只是做一些简单的操作说明,不做一些程序使得oom的操作)。

此时spark程序只有一个executor,同一时间处理2个task,其他8190个task一直pendding等待直到这2个task计算完毕再计算其他task。数据只有在task在executor运行时才会加载到executor的内存中,所以处理1tb的数据并不需要1tb的内存。

记录至About云铁粉群


路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

关闭

推荐上一条 /2 下一条