[Spark学习笔记]Chap1 Spark的设计与运行原理

Chap1 Spark的设计与运行原理

1.1 Spark简介

  • 2009年于美国加州贝克利大学开发
  • 基于内存的大数据并行计算框架,用于构建大型 低延迟数据分析应用
  • 2014年可使用Hadoop1/10资源,用1/3时间完成排序任务

1.1.1 Spark有如下特点:

  • 运行速度快:使用DAG(Directed Acyclic Graph)引擎结合循环数据流和内存计算,以提高速度。
  • 容易使用:支持Scala,Java,Python,R
  • 通用性强:提供完成强大的技术栈,包括包括SQL查询、流式计算、机器学习和图算法组件,不用东拼西凑去计算

1.1.2 相对Hadoop,Spark具有以下优势:

  • 表达能力强。Hadoop只有Map和Reduce两个方法,并不适用于所有情况。
  • 基于内存计算避免了高延迟和大IO开销
  • 高效API接口

1.1.3 Spark生态系统

实际应用中,大数据处理主要包括以下3个类型:

延时级别内容解决方案
H级别复杂的批量数据处理Hadoop
MIN级别基于历史数据的交互式查询Impala
MS/S级别基于实时数据流的数据处理Storm

但是还面临着如下的问题:

  • 不同场景数据共享问题
  • 不同软件维护问题
  • 集群中资源分配问题

Spark的统一平台解决了这个问题。Spark由以下组件组成:

  • Spark Core:包含Spark的基本功能,如内存计算、任务调度、部署模式、故障恢复、存储管理等。Spark建立在统一的抽象RDD之上,使其可以以基本一致的方式应对不同的大数据处理场景;通常所说的Apache Spark,就是指Spark Core;
  • Spark SQL:允许开发人员直接处理RDD,同时也可查询Hive、HBase等外部数据源。Spark SQL的一个重要特点是其能够统一处理关系表和RDD,使得开发人员可以轻松地使用SQL命令进行查询,并进行更复杂的数据分析;
  • Spark Streaming:支持高吞吐量、可容错处理的实时流数据处理,其核心思路是将流式计算分解成一系列短小的批处理作业。Spark Streaming支持多种数据输入源,如Kafka、Flume和TCP套接字等;
  • MLlib(机器学习):提供了常用机器学习算法的实现,包括聚类、分类、回归、协同过滤等,降低了机器学习的门槛,开发人员只要具备一定的理论知识就能进行机器学习的工作;
  • GraphX(图计算):是Spark中用于图计算的API,可认为是Pregel在Spark上的重写及优化,Graphx性能良好,拥有丰富的功能和运算符,能在海量数据上自如地运行复杂的图算法。

1.2 Spark运行架构

1.2.1 基本概念

  • RDD:是弹性分布式数据集(Resilient Distributed Dataset)的简称,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型;
  • 有向无环图(Directed Acyclic Graph,DAG):反映RDD之间的依赖关系;
  • Executor:是运行在工作节点(Worker Node)上的一个进程,负责运行任务,并为应用程序存储数据;
  • 应用:用户编写的Spark应用程序;
  • 任务:运行在Executor上的工作单元;
  • 作业:一个作业包含多个RDD及作用于相应RDD上的各种操作;
  • 阶段:是作业的基本调度单位,一个作业会分为多组任务,每组任务被称为“阶段”,或者也被称为“任务集”。

1.2.2 架构设计

下面介绍Spark的运行架构

  • Driver Program:每个Spark应用都由一个驱动器程序(Driver Program)法其集群上的各种操作。驱动器程序中包含应用的main函数,并定义了集群上的分布式数据集。
  • Spark Contest:使用Spark Context访问Spark,代表着对计算集群的链接。
  • Executor:执行这些操作需要多个执行器节点。执行器在集群中的节点上,使用多线程来执行Driver Program传来的任务。同时使用BlockManager模块进行缓存以提高效率。

Spark运行架构
下面简单介绍一下Spark概念间的关系
    在Spark中,一个应用(Application)由一个任务控制节点(Driver)和若干个作业(Job)构成,一个作业由多个阶段(Stage)构成,一个阶段由多个任务(Task)组成。当执行一个应用时,任务控制节点会向集群管理器(Cluster Manager)申请资源,启动Executor,并向Executor发送应用程序代码和文件,然后在Executor上执行任务,运行结束后,执行结果会返回给任务控制节点,或者写到HDFS或者其他数据库中。

概念间关系

内容整理自子雨大数据之Spark入门教程(Python版)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值