| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
jopen
7年前发布

分布式计算 Spark 入门介绍

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

论文提出了 弹性分布式数据集(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的创始人。

 分布式计算 Spark 入门介绍

背景

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

内存上的有效容错

  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只有一种走法,不能是随机的)得到。 分布式计算 Spark 入门介绍

和内存数据库的区别

  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  分布式计算 Spark 入门介绍  分布式计算 Spark 入门介绍  分布式计算 Spark 入门介绍
  2. Spark对用户提供了三种interface: 1) RDD 2)RDD的操作 3)RDD切分的控制。主要有两种不同类型的Flow: Data Flow(对数据进行改变,例如transformation and actions)和Control Flow(并不对数据进行改变,partitioning and persistence)  分布式计算 Spark 入门介绍  分布式计算 Spark 入门介绍
来自:http://suanfazu.com/t/fen-bu-shi-ji-suan-spark-ru-men-jie-shao/243

 本文由用户 jopen 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1420684980984.html
Spark 分布式/云计算/大数据