Spark:Cluster Computing with Working Sets 论文阅读笔记

本文是2010年UCB发表的Spark论文阅读笔记,对比了Spark与MR在迭代计算、交互式查询和高容错方面的性能。论文指出Spark在迭代计算如逻辑回归和最小二乘法上有显著优势,通过RDD的持久化减少了重复磁盘读取。Spark的高容错性通过RDD血缘关系实现数据丢失后的重建。论文对未来的研究方向包括RDD的优化和提供SQL等高级接口,这些在后续Spark发展中得到实现和发展。
摘要由CSDN通过智能技术生成

1、本文背景:

本文由UCB发表于2010年,10年也是MR还处盛行的时候,因此文中会频繁将Spark与MR对比。关注两个框架对比的也可以看博主的另一篇博文:Spark学习笔记之(一):MR与Spark的区别
https://blog.csdn.net/u010737756/article/details/118406700?spm=1001.2014.3001.5501
从计算速度、资源、容错、功能适用、生态、运行环境六个角度简述了二者的区别。

回到论文,该文章介绍了基于RDD的分布式计算模型以及早期Spark的实现。文中通过与MR对比,提到了Spark与MR类似,提供了较强的可扩展性与高容错。此外,Spark提出框架优于MR的场景,例如:在同一数据处于反复迭代计算的场景下,MR需要重复从磁盘读取数据,而Spark可通过多级别的持久化机制,将数据存在内存或分布式文件系统中,进行RDD的重用等等。

这篇论文阅读笔记会从文中描述的Spark适用场景例子入手,简要介绍一下2010年设计之初的Spark的设计目的,以及这十年来,令Spark一直保持分布式计算框架核心竞争力的部分特性。

2、内容概述

在Abstract中,作者提出Spark这个新框架是针对数据集在并行计算操作场景下,更适用于需要迭代计算的机器学习场景,以及交互式查询、分析场景这两种使用场景。于此同时,Spark框架也保持了MR的可扩展性与高容错。

而Spark在这两个用途的高性能、可扩展性、高容错,也正是Spark贯穿本文的,设计之初的最大目的。

2.1 迭代计算的机器学习算法:

文中举例了两种,一种是逻辑回归、一种是交替最小二乘法。

2.1.1 逻辑回归的实现:

背景:给定一组点集,通过迭代分类算法,试图找到一个超平面w把两个点集合分隔开。
该算法采用梯度下降法,开始给w赋一个随机值。
在每次迭代中对w的结果进行修正,移动w的方向对结果进行优化。
首先创建一个名为points的RDD节点,我们通过运行一个循环来处理它。
for关键字是Scala里面用于表示调用循环的语法,里面的循环体类似于foreach方法。
代码"for(p <- points){body}“等同于"points.foreach(p =>{body})”,在此调用了Spark的并行foreach操作。
其次定义了一个名为grad的梯度累加器(类型为Vector)。需要注意的是,循环体中的累加是并行执行的。

2.1.2 逻辑回归的性能提升

处理29GB的数据。采用20个"m1.xlarge” EC2节点,每个节点有4个处理器核,进行逻辑回归计算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值