前言

本系列的Spark相关内容大部分来自于尚硅谷的Spark课程,及许利杰、方亚芬老师所著的《大数据处理框架 Apache Spark 设计与实现》。

一、Spark VS Hadoop

1.Hadoop

Hadoop有着自己的生态系统,其结构在随着时间的推移变得更加丰富和完善,而Hadoop最重要的模块则是HDFS和MasoReduce。

  • HDFS:是Hadoop的分布式文件系统,处于Hadoop生态圈的最下层,负责存储所有的数据;
  • MapReduce:是一种编程模型,作为Hadoop的分布式计算模型,也是Hadoop的核心,负责处理海量数据。

MapReduce其实分为两部分,即Map和Reduce。在用户提交一个计算任务后,这个任务被拆分成n个Map映射任务,将前一个Map的输出作为下一个Map的输入,这个过程中数据也在分割后传输到集群中的各节点并行处理,经过一系列的转换后,将结果reduce聚合得到一个结果并输出。

Hadoop作为一种分布式的计算框架,采用“分治–聚合”的策略来处理海量数据,也因此Hadoop更适合用来处理批量数据。

2.Spark

对于数据可复用的应用场景以及流式数据处理的情况下,MapReduce显然有不足之处。Spark就是在传统的MapReduce基础上做了优化,不光解决了这些问题,在计算速度上,Spark在内存中的运行速度比Hadoop快100倍,在磁盘上的运行速度快 10倍。

Spark的几个核心模块:

  • Spark Core:提供了 Spark 最基础与最核心的功能,Spark 其他的功能如:Spark SQL,Spark Streaming,GraphX, MLlib 都是在 Spark Core 的基础上进行扩展的
  • Spark SQL:用来操作结构化数据的组件。通过 Spark SQL,用户可以使用 SQL或者 Apache Hive 版本的 SQL 方言(HQL)来查询数据。
  • Spark Streaming:针对实时数据进行流式计算的组件,提供了丰富的处理数据流的 API。
  • Spark MLlib:一个机器学习算法库。MLlib 不仅提供了模型评估、数据导入等额外的功能,还提供了一些更底层的机器学习原语。
  • Spark GraphX:面向图计算提供的框架与算法库。

3.对比

Hadoop Spark
开发语言 Java Scala
Task启动方式 创建新进程 fork线程
作业间的数据通信方式 基于磁盘 基于内存
缓存效率 较低 较高

Spark只有在shuffle的时候将数据写入磁盘,而Hadoop的多个MapReduce作业之间的数据交互都需要依赖磁盘。通常情况下Spark会比Hadoop得到更好的效果,但是由于Spark是基于内存执行计算的,也因此容易受到内存空间的限制,在这种情况下仍然需要MapReduce来解决问题,完成比完美更重要。

二、Spark系统架构

1.Spark的几种部署方式

  • Standalone模式:资源管理和任务调度由Spark系统本身负责,而不必依赖第三方框架,独立性很强;
  • Yarn模式:Yarn是一个通用的资源管理系统,是Hadoop生态系统中的一部分,但也支持Spark,在工业界这种部署方式比较常见;
  • Mesos模式:Apache Mesos是一个更强大的分布式资源管理框架,负责集群资源的分配,它允许多种不同的框架部署在其上,包括YARN。它被称为是分布式系统的内核。

另外还有一种local模式,可以在编写Saprk用户代码后,不需要部署到集群中,直接在本机上执行,此时所有的 Spark 任务和 main() 函数都在本地运行,通常用来调试程序。

2.相关概念

这三种部署模式都是采用Master-Worker的主从式结构,如图所示:

  • Master节点:常驻Master进程,该进程负责管理所有的Worker节点,如将任务分配给Worker节点、收集Worker节点上的任务运行信息、监控Worker节点的存活状态等;
  • Worker节点:常驻Worker进程,负责与Master节点的通信与管理Spark任务的运行,如启动Executor来执行具体的Spark任务,监控任务运行状态等;
  • Application:一个可运行的Spark程序,该程序包含main()函数,包含一些配置参数如所需CPU个数、Executor内存大小等;
  • Driver:Spark的驱动程序,指实际在运行main()函数的进程。Driver进程独立于Master进程,但如果是Yarn集群,Driver也可能被调度到Worker节点上运行;
  • Executor:Spark执行器,是Spark计算资源的一个单位。由于Spark是由Scala语言编写的,Executor在物理上是一个JVM进程,可以运行多个线程(计算任务)。Worker进程实际上只负责启停和观察Executor的执行情况;
  • Task:Spark应用的计算任务,是Spark中最小的计算单位,不能再拆分。task以线程方式运行在Executor进程中,通常一个task使用一个CPU,当Executor具有多个CPU时可以运行多个task,多个task共享Executor的内存空间。

为了数据共享和提高执行效率,Spark以线程作为最小的执行单位,但缺点是线程间会有资源竞争。

每个Worker节点上可以有多个Executor,每个Spark应用启动一个Driver和多个Executor(这些Executor可能存在于不同节点上),每个Executor中运行的task都属于同一个Saprk应用。

【Spark学习笔记(二)】相关推荐

  1. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...

  2. [转载]dorado学习笔记(二)

    原文地址:dorado学习笔记(二)作者:傻掛 ·isFirst, isLast在什么情况下使用?在遍历dataset的时候会用到 ·dorado执行的顺序,首先由jsp发送请求,调用相关的ViewM ...

  3. PyTorch学习笔记(二)——回归

    PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...

  4. tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数

    tensorflow学习笔记二--建立一个简单的神经网络 2016-09-23 16:04 2973人阅读 评论(2) 收藏 举报  分类: tensorflow(4)  目录(?)[+] 本笔记目的 ...

  5. Scapy学习笔记二

    Scapy学习笔记二 Scapy Sniffer的用法: http://blog.csdn.net/qwertyupoiuytr/article/details/54670489 Scapy Snif ...

  6. Ethernet/IP 学习笔记二

    Ethernet/IP 学习笔记二 原文链接:http://wiki.mbalib.com/wiki/Ethernet/IP 1.通信模式 不同于源/目的通信模式,EtherNet/IP 采用生产/消 ...

  7. Java学习笔记二:数据类型

    Java学习笔记二:数据类型 1. 整型:没有小数部分,允许为负数,Java整型分4种:int short long byte 1.1 Int最为常用,一个Int类型变量在内存中占用4个字节,取值范围 ...

  8. 吴恩达《机器学习》学习笔记二——单变量线性回归

    吴恩达<机器学习>学习笔记二--单变量线性回归 一. 模型描述 二. 代价函数 1.代价函数和目标函数的引出 2.代价函数的理解(单变量) 3.代价函数的理解(两个参数) 三. 梯度下降- ...

  9. ASP.NET MVC 2 学习笔记二: 表单的灵活提交

    ASP.NET MVC 2 学习笔记二:  表单的灵活提交 前面说到有做到公司内部的一个请假系统,用的是ASP.NET MVC 2+Entity Framework.虽然EF(Entity Frame ...

  10. amazeui学习笔记二(进阶开发4)--JavaScript规范Rules

    amazeui学习笔记二(进阶开发4)--JavaScript规范Rules 一.总结 1.注释规范总原则: As short as possible(如无必要,勿增注释):尽量提高代码本身的清晰性. ...

最新文章

  1. 年薪超 1400 万美元!苹果 CEO 库克去年薪酬大曝光!
  2. Socket 多线程FTP软件开发
  3. .Net Aop(静态织入)框架 BSF.Aop
  4. 李沐老师《动手学深度学习》课程总结1
  5. toad如何查看表字段备注(表字段的说明)
  6. Task.Run Vs Task.Factory.StartNew z
  7. FastAdmin 开发环境详细设置 (2017)
  8. Python, Ruby 与 Groovy,谁与争锋
  9. 你的努力,是否符合你的预期?
  10. 微星主板开机一直进入bios问题解决办法
  11. html语言 搜索引擎关键词 怎么写,HTML关键词
  12. DSP28335 eCAP 测频
  13. java模拟而一个电话本操作
  14. 量化分析师的Python日记【Q Quant兵器谱之偏微分方程2】
  15. 国密SM2算法的只求理解不求甚解 (4/5)SM2算法加解密协议
  16. 哗啦啦系统POS终端设备安装
  17. 计算机《画图》教案学生状态,《认识画图新朋友》优质课教案
  18. 大学生蓝桥杯比赛时间2020_生物与环境工程学院参加2020“航空杯”篮球比赛
  19. 异形3×3魔方还原教程_五分钟教你轻松还原三阶金字塔异形魔方
  20. 如何在word2007中并排查看对比显示两个文档

热门文章

  1. 如何给PDF加水印,PDF加水印的快速方法
  2. CardView介绍
  3. TFIDF与BM25
  4. Python:体脂计算
  5. 计算机雕刻教学设计,综合实践《果蔬雕刻》教学设计第一课时
  6. 实用小软件实现Mac读写ntfs U盘 移动硬盘
  7. VMware安装Ubuntu教程
  8. C4D景深与运动模糊及hdr预设文件添加技巧
  9. Java基于opencv实现图像数字识别(二)—基本流程
  10. JS设计模式与开发实践