Spark分布式计算框架

写在前面

Spark是分布式计算领域中继Hadoop之后,又一个比较流行的框架,最近研究了Spark的基本内容,这里稍微总结下,并与Hadoop进行对比。

什么是Spark?

Spark是伯克利大学AMP实验室在09年提出的开源的通用分布式计算框架,使用的也是类似Hadoop的计算模型,但是在设计理念上有较多地改进。概括来说,Spark是一种快速的集群计算技术:

  • 基于Hadoop Map Reduce,扩展了Map Reduce的模型
  • 提供了更多的分布式计算场景,包括交互式查询和流处理
  • 基于内存的集群计算,大大提高了计算速度
  • 更为高效的容错机制

就目前Spark发展趋势来讲,使用Spark的企业将会越来越多,在开源社区Spark代码的活跃度也已经赶超了Hadoop,以下为目前Spark的企业用户,以及2015年报告中Spark的代码活跃度。

Spark里的关键结构:RDD

RDD(Resilient Distributed Datasets),中文称为弹性分布式数据集,是在分布式文件系统之上的一种只读的、分区的记录集合。RDD存储在内存中,Spark的计算任务中的操作也是基于RDD的。RDD的只读性指其状态不可变,一般不可修改,一个新的RDD只能由原始的硬盘数据或者其它的RDD经过一系列变换生成。“分区”的含义是RDD中的元素是根据key来进行分区的,保存到多个节点上,还原时只会重新计算丢失分区的数据,不会影响整个系统。Spark基于RDD进行计算的设计,一些中间数据存储在内存里,相比于Hadoop,节省了从本地硬盘里存取数据的时间,有效提高了计算速度,因此Spark特别适用于迭代式计算的场景。

Spark的容错机制

容错是分布式计算里一个不容忽视的问题。Spark在容错机制上也有所突破,主要是基于RDD的特性。RDD容错称为loneage机制,指的是RDD里存储足够的lineage信息能还原出它在stable storage里数据分区。这里的lineage指的是粗粒度地作用于特定数据的一系列的变换操作序列,比如filter,map,join等,记录了一个RDD是如何通过其他dataset变换而生成的。

Spark VS Hadoop

时间: 2024-10-12 05:21:00

Spark分布式计算框架的相关文章

[转]分布式计算框架综述

本来是发表到科技论在线的,谁知道被退稿了,那就发到这里来吧. 0      引言 随着互联网的发展,web2.0时期[1]的到来,人类正式进入了信息爆炸时期的.海量的信息在很多应用都会出现,比如一些社交网络应用中记录用户行为日志通常都是以GB甚至是TB为单位的.常规的单机计算模式已经不能支撑如此巨大的数据量.所以,计算必须以分布式的把巨大的计算任务分成小的单机可以承受的计算任务,在这种情况下分布式计算框架与云计算[2]出现. 1      分布式计算框架背景介绍 我们的互联网从Web 1.0迈入

分布式计算框架综述

最近在写本科的毕业论文,题目是有关于MapReduce的并行化处理,老师给出修改意见中提到了关于分布式计算框架的的国内外研究现状,一开始并没有搞懂分布式计算机框架,以为是MapReduce.MapReduce只是一种并行编程模式,也可以是一种并行框架,并不是分布式计算框架.百度得知,比如Hadoop,storm,Spark等才是分布式计算框架,随后又查看了一篇博客,写得不错,如下: 以下是转载内容:http://blog.csdn.net/zwan0518/article/details/177

Spark分布式计算和RDD模型研究

1背景介绍 现今分布式计算框架像MapReduce和Dryad都提供了高层次的原语,使用户不用操心任务分发和错误容忍,非常容易地编写出并行计算程序.然而这些框架都缺乏对分布式内存的抽象和支持,使其在某些应用场景下不够高效和强大.RDD(Resilient Distributed Datasets弹性分布式数据集)模型的产生动机主要来源于两种主流的应用场景: Ø  迭代式算法:迭代式机器学习.图算法,包括PageRank.K-means聚类和逻辑回归(logistic regression) Ø 

大数据时代之hadoop(五):hadoop 分布式计算框架(MapReduce)

hadoop的核心分为两块,一是分布式存储系统-hdfs,这个我已经在上一章节大致讲了一下,另一个就是hadoop的计算框架-mapreduce. mapreduce其实就是一个移动式的基于key-value形式的分布式计算框架. 其计算分为两个阶段,map阶段和reduce阶段,都是对数据的处理,由于其入门非常简单,但是若想理解其中各个环节及实现细节还是有一定程度的困难,因此我计划在本文中只是挑几个mapreduce的核心来进行分析讲解. 1.MapReduce驱动程序默认值 编写mapred

如何在spark中读写cassandra数据 ---- 分布式计算框架spark学习之六

由于预处理的数据都存储在cassandra里面,所以想要用spark进行数据分析的话,需要读取cassandra数据,并把分析结果也一并存回到cassandra:因此需要研究一下spark如何读写cassandra. 话说这个单词敲起来好累,说是spark,其实就是看你开发语言是否有对应的driver了. 因为cassandra是datastax主打的,所以该公司也提供了spark的对应的driver了,见这里. 我就参考它的demo,使用scala语言来测试一把. 1.执行代码 //Cassa

hadoop-MapReduce分布式计算框架

计算框架: MapReduce:主要用于离线计算 Storm:流式计算框架,更适合做实时计算 stack:内存计算框架,快速计算 MapReduce设计理念: --何为分布式计算 --移动计算,而不是移动数据 4个步骤: 1.Splitting 2.Mapping:Map步骤有可能有多个Map task线程并发同时执行 3.Shuffing:合并和排序 4.Reducing Hadoop计算框架Shuffler 在mapper和reducer中间的一个步骤 可以把mapper的输出按照某种key

Spark技术内幕:Spark Pluggable框架详解,你怎么开发自己的Shuffle Service?

首先介绍一下需要实现的接口.框架的类图如图所示(今天CSDN抽风,竟然上传不了图片.如果需要实现新的Shuffle机制,那么需要实现这些接口. 1.1.1  org.apache.spark.shuffle.ShuffleManager Driver和每个Executor都会持有一个ShuffleManager,这个ShuffleManager可以通过配置项spark.shuffle.manager指定,并且由SparkEnv创建.Driver中的ShuffleManager负责注册Shuffl

分布式计算框架MapReduce

MapReduce概述 MapReduce源自Google的MapReduce论文,论文发表于2004年12月.Hadoop MapReduce可以说是Google MapReduce的一个开源实现.MapReduce优点在于可以将海量的数据进行离线处理,并且MapReduce也易于开发,因为MapReduce框架帮我们封装好了分布式计算的开发.而且对硬件设施要求不高,可以运行在廉价的机器上.MapReduce也有缺点,它最主要的缺点就是无法完成实时流式计算,只能离线处理. MapReduce属

常见分布式计算框架特点

Hadoop: Hadoop在使用原理上基本上遵照了Map.Reduce这样的一种模式进行项目的实际开发与交互,将一个个任务分解成映射与合并两种方式,然而通过映射进行分类与简化,从而产生部分归并结果,然后对同类结果进行归并计算: 由于Hadoop的中间结果需要依托于hdfs,从而需要经历硬盘及网络io的过程所以在实时性方面表现稍差: Hadoop主要处理hdfs上的文本文件,而文本文件内容本身也是半结构化的: 之前的资源调度就是靠其中的master,之后hadoop2.0之后引入yarn进行资源