对Spark的那些【魔改】

本文介绍了如何在不修改Spark源码的情况下,通过添加新代码来增强Spark的功能。作者分享了两个主要的改进点:一是实现二层RPC支持,允许直接操作Executor并加载资源文件;二是优化本地模式下的闭包序列化,减少任务调度的开销。这两个‘魔改’方法展示了在Spark中进行定制化开发的可能性。
摘要由CSDN通过智能技术生成

原文链接:https://blog.csdn.net/D55dffdh/article/details/82423831

前言

这两年做 streamingpro 时,不可避免的需要对Spark做大量的增强。就如同我之前吐槽的,Spark大量使用了new进行对象的创建,导致里面的实现基本没有办法进行替换。

对Spark的那些【魔改】

比如SparkEnv里有个属性叫closureSerializer,是专门做任务的序列化反序列化的,当然也负责对函数闭包的序列化反序列化。我们看看内部是怎么实现的:

 

这里直接new了一个JavaSerializer,并不能做配置。如果不改源码,你没有任何办法可以替换掉掉这个实现。同理,如果我想替换掉Executor的实现,基本也是不可能的。

今年有两个大地方涉及到了对Spark的【魔改】,也就是不通过改源码,使用原有发型包,通过添加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值