spark原理介绍 分类: B8_SPARK 2015-04-28 12:33 1039人阅读 评论(0) 收藏



一、spark是一个基于内存计算的开源的集群计算系统,目的是让数据分析更加快速。所以运行spark的机器应该尽可能的大内存,如96G以上。
二、spark全部操做均基于RDD,操做主要分红2大类:transformation与action。
三、spark提供了交互处理接口,相似于shell的使用。
四、spark能够优化迭代工做负载,由于中间数据均保存于内存中。
五、spark 是在 Scala 语言中实现的,它可使用scala、python进行交互式操做,还可使用scala、python、java进行编程。
六、spark能够经过mesos运行在hdfs上,但hadoop2.x提供了YARN,这更方便于spark运行在hdfs,YARN还提供了内存、CPU的集群管理功能。
七、Spark提供的数据集操做类型有不少种,不像Hadoop只提供了Map和Reduce两种操做。好比 map,filter, flatMap,sample, groupByKey, reduceByKey, union,join, cogroup,mapValues, sort,partionBy等多种操做类型,他们把这些操做称为Transformations。同时还提供Count,collect, reduce, lookup, save等多种actions。这些多种多样的数据集操做类型,给上层应用者提供了方便。各个处理节点之间的通讯模型再也不像Hadoop那样就是惟一的 Data Shuffle一种模式。用户能够命名,物化,控制中间结果的分区等。能够说编程模型比Hadoop更灵活.


==========================================================

 如下内容摘自:http://www.itpub.net/thread-1864721-3-1.html

一、   Spark VSHadoop有哪些异同点?

       Hadoop:分布式批处理计算,强调批处理,经常使用于数据挖掘、分析

       Spark:是一个基于内存计算的开源的集群计算系统,目的是让数据分析更加快速, Spark 是一种与 Hadoop 类似的开源集群计算环境,可是二者之间还存在一些不一样之处,这些有用的不一样之处使 Spark 在某些工做负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了可以提供交互式查询外,它还能够优化迭代工做负载。

Spark 是在 Scala 语言中实现的,它将 Scala 用做其应用程序框架。与 Hadoop 不一样,Spark 和 Scala 可以紧密集成,其中的 Scala 能够像操做本地集合对象同样轻松地操做分布式数据集。

尽 管建立 Spark 是为了支持分布式数据集上的迭代做业,可是实际上它是对 Hadoop 的补充,能够在 Hadoop 文件系统中并行运行。经过名为Mesos的第三方集群框架能够支持此行为。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms,Machines,and People Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。

虽然 Spark 与 Hadoop 有类似之处,但它提供了具备有用差别的一个新的集群计算框架。首先,Spark 是为集群计算中的特定类型的工做负载而设计,即那些在并行操做之间重用工做数据集(好比机器学习算法)的工做负载。为了优化这些类型的工做负 载,Spark 引进了内存集群计算的概念,可在内存集群计算中将数据集缓存在内存中,以缩短访问延迟.

在大数据处理方面相信你们对hadoop已经耳熟能详,基于GoogleMap/Reduce来实现的Hadoop为开发者提供了map、reduce原 语,使并行批处理程序变得很是地简单和优美。Spark提供的数据集操做类型有不少种,不像Hadoop只提供了Map和Reduce两种操做。好比 map,filter, flatMap,sample, groupByKey, reduceByKey, union,join, cogroup,mapValues, sort,partionBy等多种操做类型,他们把这些操做称为Transformations。同时还提供Count,collect, reduce, lookup, save等多种actions。这些多种多样的数据集操做类型,给上层应用者提供了方便。各个处理节点之间的通讯模型再也不像Hadoop那样就是惟一的 Data Shuffle一种模式。用户能够命名,物化,控制中间结果的分区等。能够说编程模型比Hadoop更灵活.



    二、Spark在容错性方面是否比其余工具更有优越性?

       从Spark的论文《Resilient Distributed Datasets: AFault-TolerantAbstraction for In-Memory Cluster Computing》中没看出容错性作的有多好。却是提到了分布式数据集计算,作checkpoint的两种方式,一个是checkpoint data,一个是loggingthe updates。貌似Spark采用了后者。可是文中后来又提到,虽而后者看似节省存储空间。可是因为数据处理模型是相似DAG的操做过程,因为图中的某 个节点出错,因为lineage chains的依赖复杂性,可能会引发所有计算节点的从新计算,这样成本也不低。他们后来讲,是存数据,仍是存更新日志,作checkpoint仍是由用 户说了算吧。至关于什么都没说,又把这个皮球踢给了用户。因此我看就是由用户根据业务类型,衡量是存储数据IO和磁盘空间的代价和从新计算的代价,选择代 价较小的一种策略。取代给中间结果进行持久化或创建检查点,Spark会记住产生某些数据集的操做序列。所以,当一个节点出现故障时,Spark会根据存 储信息从新构造数据集。他们认为这样也不错,由于其余节点将会帮助重建。


   三、Spark对于数据处理能力和效率有哪些特点?

    Spark提供了高的性能和大数据处理能力,使得用户能够快速获得反馈体验更好。另外一类应用是作数据挖掘,由于Spark充分利用内存进行缓存,利用 DAG消除没必要要的步骤,因此比较合适作迭代式的运算。而有至关一部分机器学习算法是经过屡次迭代收敛的算法,因此适合用Spark来实现。咱们把一些常 用的算法并行化用Spark实现,能够从R语言中方便地调用,下降了用户进行数据挖掘的学习成本。

Spark配 有一个流数据处理模型,与Twitter的 Storm框架相比,Spark采用了一种有趣并且独特的办法。Storm基本上是像是放入独立事务的管道,在其中事务会获得分布式的处理。相 反,Spark采用一个模型收集事务,而后在短期内(咱们假设是5秒)以批处理的方式处理事件。所收集的数据成为他们本身的RDD,而后使用Spark 应用程序中经常使用的一组进行处理。做者声称这种模式是在缓慢节点和故障状况下会更加稳健,并且5秒的时间间隔一般对于大多数应用已经足够快了。这种方法也很 好地统一了流式处理与非流式处理部分。



随着大数据相关技术和产业的逐渐成熟,单个组织内每每须要同时进行多种类型的大数据分析做业:传统Hadoop MapReduce最为擅长的批量计算、各类机器学习算法为表明的迭代型计算、流式计算、社交网络中经常使用的图计算、SQL关系查询、交互式即席查询等。在 Spark出现前,要在一个组织内同时完成以上数种大数据分析任务,就不得不与多套独立的系统打交道,一方面引入了不容小觑的运维复杂性,另外一方面还免不 了要在多个系统间频繁进行代价高昂的数据转储。

Spark是发源于美国加州大学伯克利分校AMPLab的集群计算平台,它立足于内存计算,性能超过Hadoop百倍,从多迭代批量处理出发,兼收并蓄数 据仓库、流处理和图计算等多种计算范式,是罕见的全能选手。Spark当下已成为Apache基金会的顶级开源项目,拥有着庞大的社区支持(活跃开发者人 数已超过Hadoop MapReduce),技术也逐渐走向成熟。



一、spark因为启用了内存分布数据集,充分利用了分布式内存技术使其运算效率在hadoop至少;使用Scala语言编写;另外随着hadoop 2.0的发布,Spark亦可直接运行在YARN上。
二、容错特性:Spark 引进弹性分布式数据集(RDD) 。RDD 是分布在一组节点中的只读对象集合。集合是弹性的,若是数据集一部分丢失,则能够对它们进行重建。重建部分数据集的过程依赖于容错机制,该机制能够维护 "血统"(即容许基于数据衍生过程重建部分数据集的信息)。
三、很明显采用内存计算的效率远高于具备大量磁盘IO操做的Hadoop
四、迷你书,能在最短的时间内掌握尽量多的内容,看起来不至于太累。



咱们公司如今数据的处理主要是在hadoop上   可是也搭建了10台的spark的集群   
hadoop 可使用比较廉价的PC机器    可是spark尽可能仍是使用内存配置比较高的   咱们这用的是64G内存的
网上资料说尽可能使用96G内存以上的   可是咱们这没那么好的机器作测试
相比较于hadoop   咱们使用的spark以为有几下几个优势
第一 spark基于内存计算,速度很明显 。  10台的SPARK的集群的速度能够和咱们这hadoop集群的50台的差很少  可是 hadoop 的集群内存大小不一  有8G的  有16G的  
第二  spark是基于Scala  相比较hadoop基于java    spark更适合数据挖掘       由于scala就是技术机器挖掘的
第三  hadoop 编程模式处理数据很死  只有map 和reduce   而spark编程模式更灵活
第四  听说 spark的算法比hadoop算法更厉害   这个咱们这也不知道怎么看    只知道处理数据速度确实快了不少



    一、Spark VS Hadoop有哪些异同点?
    Spark是基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具备的优势;但不一样于MapReduce的是Job中间输出和结果能够保存在内存中,从而再也不须要读写HDFS,所以Spark能更 好地适用于数据挖掘与机器学习等须要迭代的map reduce的算法。   
    二、Spark在容错性方面是否比其余工具更有优越性?
    现有的数据流系统对两种应用的处理并不高效:一是迭代式算法,这在图应用和机器学习领域很常见;二是交互式数据挖掘工具。这两种状况下,将数据保存在内存 中可以极大地提升性能。为了有效地实现容错,RDD提供了一种高度受限的共享内存,即RDD是只读的,而且只能经过其余RDD上的批量操做来建立。尽管如 此,RDD仍然足以表示不少类型的计算,包括MapReduce和专用的迭代编程模型(如Pregel)等。Spark实现的RDD在迭代计算方面比 Hadoop快二十多倍,同时还能够在5-7秒的延时内交互式地查询1TB的数据集。
    三、Spark对于数据处理能力和效率有哪些特点?
    与Hadoop进行对比,结果以下:
   (1)对于迭代式机器学习应用,Spark比Hadoop快20多倍。这种加速比是由于:数据存储在内存中,同时Java对象缓存避免了反序列化操做(deserialization)。
   (2)用户编写的应用程序执行结果很好。例如,Spark分析报表比Hadoop快40多倍。
   (3)若是节点发生失效,经过重建那些丢失的RDD分区,Spark可以实现快速恢复。
   (4)Spark可以在5-7s延时范围内,交互式地查询1TB大小的数据集。



 一、Spark VS Hadoop有哪些异同点?
做为通用的并行处理框架,Spark具备相似Hadoop的一些优势,并且Spark采用了更好的内存管理,
在迭代计算上具备比Hadoop更高的效率,Spark还提供了更为普遍的数据集操做类型,大大方便了
用户的开发,checkpoint的应用使Spark具备很强容错能力,众多优越的性能和比Hadoop更普遍
的适用面让Spark的进一步发展值得期待。
   
二、Spark在容错性方面是否比其余工具更有优越性?
在分布式数据集计算时经过checkpoint来实现容错,而checkpoint
有两种方式,一个是checkpoint data,一个是logging the updates。
用户能够控制采用哪一种方式来实现容错。

三、Spark对于数据处理能力和效率有哪些特点?
因为Spark处理数据利用内存,所以它的速度是很是快的,
Spark Streaming:大大提升Spark流处理的能力和稳定性,
使用户能够用同一套代码进行大数据流处理和批量处理。
html

版权声明:本文为博主原创文章,未经博主容许不得转载。java

相关文章
相关标签/搜索