十分钟了解分布式计算:Spark

Spark是一个通用的分布式内存计算框架,本文主要研讨Spark的核心数据结构RDD,及其在内存上的容错,内容基于论文

Zaharia, Matei, et al. "Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing" Proceedings of the 9th USENIX conference on Networked Systems Design and Implementation. USENIX Association, 2012. [PDF] [PPT][中文翻译]

论文提出了弹性分布式数据集(RDD,Resilient Distributed Datasets),这是一种分布式的内存抽象,允许在大型集群上执行基于内存的计算(In-Memory Computing),与此同时还保持了MapReduce等数据流模型的容错特性。

现有的数据流系统对两种应用的处理并不高效:一是迭代式算法,这在图应用和机器学习领域很常见;二是交互式数据挖掘工具。这两种情况下,将数据保存在内存中能够极大地提高性能。为了有效地实现容错,RDD提供了一种高度受限的共享内存,即RDD是只读的,并且只能通过其他RDD上的批量操作来创建。尽管如此,RDD仍然足以表示很多类型的计算,包括MapReduce和专用的迭代编程模型(如Pregel)等。论文中实现的RDD在迭代计算方面比Hadoop快二十多倍,同时还可以在5-7秒的延时内交互式地查询1TB的数据集。

第一作者Matei ZahariaUC Berkeley AMP Lab的PHD,MIT讲师,Spark母公司Databricks的创始人。

背景

  1. 迭代式算法的特点在于,它是给定问题y=f(x),已知x和y,想要得到的是f的参数。所以需要从一个参数的initial值开始,扫描很多遍数据,比如说迭代100次,去逼近参数(类似数值分析中牛顿迭代法解方程的做法)。
  2. Hadoop对迭代式问题没有很好的解决,Disk-IO花费时间太多。Spark针对复杂分布式计算任务中,HDFS的反复读写特别耗时的问题,给常用数据一种共享的状态(内存的读写是TB级别的),特别适合交互式数据分析任务(对时间忍受很差),以及复杂的图算法(pagerank)

内存上的有效容错

  1. RDD是一种抽象数据集,中间数据不用的时候不需要具象化,对RDD使用persist()/cached()函数可以使其持久化。
  2. 主流的容错方法有两种 1)logging(记录细粒度update)2)快照(缺点就是代价太大)。
  3. Hadoop采用数据持久化的方式进行容错,HDFS每次读写都要做replica,代价是很大的。
  4. 对于Spark,内存是易失的,某个机器down掉了,内存中的RDD就没了。因此我们需要知道如果一个点failed,这个点的数据从哪里来。其采用记录RDD的血统(lineage)这种方式来进行容错,可以根据lineage来重新计算缺少的部分。lineage有五点信息,包括数据在哪,操作,优先使用什么,hash策略等。
  5. 为了做容错,RDD这种数据结构有两种限制:1) immutable(只需记录lineage就可以恢复)2) 是一种paritioned collections of record,只能从coarse-grained deterministic transformations(相当于从A到B只有一种走法,不能是随机的)得到。

和内存数据库的区别

  1. 数据库是细粒度的,每一条record的价值都很大,通常不需要统计群体的情况
  2. spark是粗粒度的,是“apply same operation to many items”,一次操作中大批数据都要参与进来。对于大数据来说任意一条数据是没有意义的,群体特征才有意义。
  3. 检索任务(细粒度)涉及到剪枝,分析任务(粗粒度)涉及到全盘扫描或下采样。
  4. RAMCloud适合transaction事务级别(内存数据库Redis),而Spark适合做batch批处理

Spark实例:PageRank

  1. Spark可以方便地做Join操作(link和rank两张表),而join的容错恢复是比较难的,不是narrow dependence,而是wide dependence
  2. Spark对用户提供了三种interface: 1) RDD 2)RDD的操作 3)RDD切分的控制。主要有两种不同类型的Flow: Data Flow(对数据进行改变,例如transformation and actions)和Control Flow(并不对数据进行改变,partitioning and persistence)

十分钟了解分布式计算:Spark

时间: 2024-08-04 14:36:40

十分钟了解分布式计算:Spark的相关文章

十分钟了解分布式计算:Google Dataflow

介绍 Google Cloud Dataflow是一种构建.管理和优化复杂数据处理流水线的方法,集成了许多内部技术,如用于数据高效并行化处理的Flume和具有良好容错机制流处理的MillWheel.Dataflow当前的API还只有Java版本(其实Flume本身是提供Java/C++/Python多种接口的). 相比原生的map-reduce模型,Dataflow有几个优点: 可以构建复杂的pipeline,在这不妨引用Google云平台的产品营销总监Brian Goldfarb的话 Clou

十分钟了解分布式计算:GraphX

GraphX是Spark中用于图(e.g., Web-Graphs and Social Networks)和图并行计算(e.g., PageRank and Collaborative Filtering)的API,可以认为是GraphLab(C++)和Pregel(C++)在Spark(Scala)上的重写及优化,跟其他分布式图计算框架相比,GraphX最大的贡献是,在Spark之上提供一栈式数据解决方案,可以方便且高效地完成图计算的一整套流水作业. GraphX最先是伯克利AMPLAB的一

十分钟了解分布式计算:Petuum

Petuum是一个分布式机器学习专用计算框架,本文介绍其架构,并基于文章 More Effective Distributed ML via a Stale Synchronous Parallel Parameter Server,NIPS 2013 重点探讨其核心内容SSP协议. 主要思想 Parameter server提供了一个易于读写Global模型参数的接口,而SSP协议允许distributed workers读写本地缓存中stale版本的参数(而不是每次都花大量时间时间等待cen

十分钟了解分布式计算:GraphLab

GraphLab是一个面向大规模机器学习/图计算的分布式内存计算框架,由CMU在2009年开始做,这里的内容是基于论文 Low, Yucheng, et al. "Distributed GraphLab: A Framework for Machine Learning in the Cloud" Proceedings of the VLDB Endowment 5.8 (2012)[ppt] 后续会介绍GraphLab加强版PowerGraph (v. 2.2)的内容 Graph

【时序数据库】十分钟系列

参考文档: 十分钟看懂时序数据库(I)-存储 十分钟看懂时序数据库(II)- 预处理 十分钟看懂时序数据库(III)- 压缩 十分钟看懂时序数据库(IV)- 分级存储 十分钟看懂时序数据库(V)- 分布式计算 原文地址:https://www.cnblogs.com/badboy200800/p/10986467.html

Orange's 自己动手写操作系统 第一章 十分钟完成的操作系统 U盘启动 全记录

材料: 1 nasm:编译汇编源代码,网上很多地方有下 2  WinHex:作为windows系统中的写U盘工具,需要是正版(full version)才有写的权限,推荐:http://down.liangchan.net/WinHex_16.7.rar 步骤: 1 编译得到引导程序的机器代码.用命令行编译汇编源代码:name boot.asm -o boot.bin,其中boot.bin文件产生在命令行的当前目录中. 2 将引导程序写入到U盘引导盘的第一个扇区的第一个字节处(后),即主引导区.

[转]教你十分钟下载并破解IntelliJ IDEA(2017)

来源:http://www.itwendao.com/article/detail/400687.html 之前都是用myeclipse,但是最近发现看的很多教学视频都是使用 IntelliJ IDEA,于是决定换个软件开始新的学习征程! 下面讲讲我是如何在十分钟之内安装并破解该软件. 1.首先,我找到了 IntelliJ IDEA的官网:www.jetbrains.com 然后找到下载的地方,选择自己电脑所匹配的下载安装包,这里我们选择收费版的下载,因为免费版的功能并没有收费版的强悍. 2.接

十分钟学会Markdown(younghz原创)

younghz原创,转载请注明:http://blog.csdn.net/u012150179/article/details/26503779 原内容及代码托管在GitHub上,并持续更新,欢迎交流:https://github.com/younghz/Markdown 主要内容 MARKDOWN是什么? 谁发明可这么个牛X的东西? 为什么要使用它? 怎么使用? 都谁在用?没人用的东西我可不用. 感觉有意思?趁热打铁,推荐几个工具. 正文 1. MARKDOWN是什么? MARKDOWN是一种

【NLP】十分钟学习自然语言处理

十分钟学习自然语言处理概述 作者:白宁超 2016年9月23日00:24:12 摘要:近来自然语言处理行业发展朝气蓬勃,市场应用广泛.笔者学习以来写了不少文章,文章深度层次不一,今天因为某种需要,将文章全部看了一遍做个整理,也可以称之为概述.关于这些问题,博客里面都有详细的文章去介绍,本文只是对其各个部分高度概括梳理.(本文原创,转载注明出处:十分钟学习自然语言处理概述  ) 1 什么是文本挖掘? 文本挖掘是信息挖掘的一个研究分支,用于基于文本信息的知识发现.文本挖掘的准备工作由文本收集.文本分