Spark原理概述

本文介绍了Spark的出现背景,对比了与MapReduce的区别,详细阐述了Spark的系统架构,包括Driver、SparkContext、Worker、Executor等组件的作用,并解析了Spark Job的执行流程和RDD的概念。Spark以其内存计算和弹性分布式数据集(RDD)特性,提供了高效的计算性能。此外,文章还讨论了Spark的缓存机制和不同的持久化策略。
摘要由CSDN通过智能技术生成

原文来自我的个人网站:http://www.itrensheng.com/archives/Spark_basic_knowledge

一. Spark出现的背景

在Spark出现之前,大数据计算引擎主要是MapReduce。HDFS + MapReduce的组合几乎可以实现所有的大数据应用场景。MR框架抽象程度比较高,需要我们编写Map和Reduce两个步骤(MapReduce 框架其实包含5 个步骤:Map、Sort、Combine、Shuffle以及Reduce)

image.png

每个Map和Reduce之间需要进行Shuffle(这步操作会涉及数量巨大的网络传输,需要耗费大量的时间)。由于 MapReduce 的框架限制,一个 MapReduce 任务只能包含一次 Map 和一次 Reduce,计算完成之后,MapReduce会将运算中间结果写回到磁盘中,供下次计算使用。

二.Spark简介

Spark是由加州大学伯克利分校AMP实验室开源的分布式大规模数据处理通用引擎,具有高吞吐、低延时、通用易扩展、高容错等特点。Spark内部提供了丰富的开发库,集成了数据分析引擎Spark SQL、图计算框架GraphX、机器学习库MLlib、流计算引擎Spark Streaming

image.png

相比于MapReduce的计算模型,Spark是将数据一直缓存在内存中,直到计算得到最后的结果,再将结果写入到磁盘,所以多次运算的情况下,Spark省略了多次磁盘IO。

对比 MapReduce Spark
速度 处理数据需要连续的读写磁盘 是MapReduce的10到100倍
编码难度 程序员来赋值每一步 RDD高可用,失败重试
及时性 不适合做OLAP,只适合批处理 能兼顾批处理和OLAP
调度 使用外部的调度,如Oozie 自带调度,也可使用外部调度
编程语言 Java Scala
SQL支持 本身不提供,需要外部查询引擎,如Hive 自带Spark SQL
可扩展性 最大支持14000个节点 最大8000节点
机器学习 外部依赖Mahout 自带Spark MLlib
缓存 能不缓存到内存中 可以缓存到内存中
安全性 安全特性比Spark广泛 不如MapReduc
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值