论文部分内容阅读
Spark是基于MapReduce的新型大数据计算框架,在继承了 MapReduce的线性扩展性和容错性的同时也做了重量级的扩展,它的弹性分布式数据集RDD可将计算的中间结果保存在内存,有效的减少了从磁盘读写数据的IO时间,Spark非常适用于执行涉及大量迭代的算法,也能同时兼顾批处理和实时数据分析。Spark已经形成完善的生态系统,支持的应用有Spark Streaming 流式计算、DataFrame、SparkSQL、MLlib、GraphX、SparkR 等。PF_Ring是由Luca Deri设计开发的新型网络socket。具备优化计算机内核收发数据包效率的功能,结合应用程序能够有效的提升数据包捕获速度。PF_Ring通过减少内存拷贝数据包的次数,把接收到的数据分发到不同的环形缓冲区等方式来增加系统捕获数据包的性能。论文提出并证明了分布式计算框架Spark Streaming在处理大量TCP数据包时,网络性能方面存在瓶颈。证明了导致Spark Streaming网络利用率偏低的原因。针对问题原因从PF_Ring零拷贝技术、数据与系统命令分层、多核绑定负载均衡和系统无锁操作方面作为主要切入点,提出定制系统框架的优化方案,证明优化方案达到了预期的效果。文章通过三个步骤来实现对Spark Streaming流式计算框架的优化,首先根据实验数据结果排除参数配置对Spark Streaming网络性能的影响,证明其网络性能方面存在瓶颈。然后通过优化Linux系统网卡到CPU内核、CPU内核到线程之间的数据调度,减少切换和locality开销,证明单纯网络优化对提升Spark Streaming网络性能具有提升空间,但也存在局限性。最后结合实际应用场景分析Spark底层数据模块处理机制和源代码,将问题原因确定为Spark Streaming在单位时间内处理大量网络IO中断造成内核系统开销过大、冗余的数据拷贝和多核切换带来的性能损耗,提出通过结合PF_Ring开源技术优化底层架构将数据流的收发操作跳过系统内核态,从而既减少系统管理开销又可以避免额外的数据移动。实验数据结果表明,与当前的Spark-1.4.0开源版本相比,利用PF_Ring零拷贝技术优化Spark Streaming能有效降低系统时延、减少系统开销、提高Worker节点网络带宽利用率,能较好地满足接收处理大量TCP数据包的实时计算需求。