Spark(二) -- Spark简单介绍

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1010885678/article/details/45648737 spar...
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1010885678/article/details/45648737

spark是什么?
spark开源的类Hadoop MapReduce的通用的并行计算框架
spark基于map reduce算法实现的分布式计算
拥有Hadoop MapReduce所具有的优点
但不同于MapReduce的是Job中间输出和结果可以保存在内存中
从而不再需要读写HDFS

从上面的官方解释中我们可以得到的信息时,spark是一套并行计算的框架,并且性能要比hadoop的map-reduce好

那么到底性能比较好是体现在哪里呢

基于内存的处理是spark速度快的原因之一

还有一个很重要的因素就是DAG
DAG,有向无循环图
spark的任务可以分为数据转换和获得结果两步
在获得计算结果之前的操作,都是不执行的,而是根据这些步骤画成一张DAG
到真正要结果的时候才会执行这些计算,拿到计算结果
熟悉hadoop mr模型的人都知道,在mr任务中,每次步骤都会读取HDFS,也就是I/O操作,而一般来说,在数据转换操作过程中产生的中间数据我们是不需要保存在磁盘的(当然这么做的原因也有容错性的因素)
和spark一对比,mr的速度当然被爆10086条大街

另外一个原因就是spark的容错处理机制,在hadoop中一旦某个执行步骤出现问题,那么之前的所有操作都要重新计算。在spark中则只要重新执行出错的步骤即可

简单来说,可以将spark看成是一个开发分布式并行计算程序的SDK,通过spark生态圈提供的各种API来进行开发

spark生态圈大致如下图:
spark生态圈示意图

从图中左下角可以看出,spark既可以直接对hadoop的hdfs进行操作,也能在Amazon的S3上运行
spark和hadoop的关系其实是十分紧密的,它可以在hadoop中和传统的mr任务并存,共享数据信息等

一句话概括spark生态圈的组件

SparkStreaming:一个对实时数据流进行高通量、容错处理的流式处理系统,可以对多种数据源(如Kdfka、Flume、Twitter、 Zero和TCP 套接字)进行类似map、reduce、join、window等复杂操作

SharkSQL:可以将hive的sql语句在spark上执行

BlinkDB:一个在速度和精度上做抉择的交互式查询系统,用户查询的时候可以选择查询的速度或者精度,二者选一

MLbase/MLlib:MLlib是Spark实现一些常见的机器学习算法和实用程序,包括分类,回归,聚类,协同过滤,降维,以及底层优化。

GraphX:基于Spark的图处理和图并行计算API

spark生态圈的各个组件计算都是以一种名为RDD的数据结构为基础的
首先RDD是一种数据结构,根据不同的使用场景,如实时流处理或者批处理都会生成不同的RDD模型
但是各种RDD模型之间都有互相转换的方式,也就是说,spark各个组件之间处理的数据都可以很方便的进行交流互换
RDD将各个组件融合在spark平台上(不同的组件提供不同的功能,根据需求组合组件处理问题)使得spark能够适用于各种大数据场合
spark RDD之间存在着明确的依赖关系,一旦某个环节发生错误,可以根据这种依赖找到错误的父节点来进行重新操作,所以spark在容错性方面十分强大

Spark生态圈以Spark为核心、以RDD为基础,打造了一个基于内存计算的大数据平台,为人们提供了all-in-one的数据处理方案。人们可以 根据不同的场景使用spark生态圈的多个产品来解决应用,而不是使用多个隔离的系统来满足场景需求。

众所周知,在大数据的实时流处理方面storm一直是一个热点,那么和spark的streaming相比如何呢?
storm的亮点在与处理延迟是毫秒级别的,而吞吐量不高
spark streaming则是高吞吐量,处理延迟是秒级的
两者可以使一种互补的关系

上面说过spark任务的容错处理
那么如果spark集群中有节点罢工了怎么办?
如果是master主节点挂了怎么办?

对于第一个问题,如果有slave node在工作环境中当掉了,master对起一个新的节点来进行同样的工作,哪个节点先完成任务就采用哪个节点,那么master是如何知道slave node的状态呢?–心跳机制,相信熟悉hadoop的人对心跳机制不会陌生

至于第二个问题,很多人都会想到HA,其实很简单,zookeeper
zookeeper框架可以保证master节点的安全容错性,并且可以同步数据

现在大家知道spark是基于内存来进行计算的,但是在spark集群中,一个集群一起执行一个任务,那么这个集群之间每台机器是如何共享内存的??–Tachyon可以做到这一点

一、Spark是什么

1、与Hadoop的关系

如今Hadoop已经不能狭义地称它为软件了,Hadoop广泛的说可以是一套完整的生态系统,可以包括HDFS、Map-Reduce、HBASE、HIVE等等。。

而Spark是一个计算框架,注意,是计算框架
其可以运行在Hadoop之上,绝大部分情况下是基于HDFS

说代替Hadoop其实是代替Hadoop中的Map-Reduce,用来解决Map-Reduce带来的一些问题

更具体地讲,Spark是基于内存的 大数据并行计算框架,可以完美的融入到Hadoop的生态系统中去

而既然是分布式框架必须要解决的两个问题:
1、可扩展性
2、容错性

Spark是如何解决这两个问题待之后整理发布

2、相对于Map-Reduce的迭代模型,Spark的计算模型有何优缺点?

优势:
(1)基于内存,计算速度快
迭代过程中,通过RDD算子生产DAG图的方式,无须将中间数据写入磁盘中

(2)DAG图的执行策略
只有Action操作才会触发执行Job,记录了每个Job的执行流程,形成Lineage和划分Stage等

(3)使用AKKA作为事件驱动来调度任务,开销小

(4)全栈支持

缺陷:
(1)机器配置要求比Map-Reduce高
(2)牺牲硬件提高性能

3、Spark能带来什么?

(1)全栈多计算范式,不仅仅只是简单的Map-Reduce操作,SQL查询、流计算、机器学习、图算法
这里有你想要的一切~

(2)轻量级快速处理:基于内存

(3)支持多语言,丰富的算子,允许在Shell中进行交互式计算,像书写单机程序一样书写分布式程序(这就是Spark诞生的目的)

(4)与HDFS等存储层兼容,可以独立运行,可以运行与Yarn等集群管理系统,可以读取和使用任何Hadoop数据

没天理了~

二、Spark生态系统BDAS(数据分析栈)

Spark也可以脱离Hadoop而存在,它也有自己的生态系统
主要的组件如下列表:

1、核心框架为Spark
提供分布式编程框架
提供除了MR之外的丰富算子以及计算模型
将分布式数据抽象为弹性分布式数据集(RDD)

2、结构化数据SQL查询和分析引擎Spark SQL
可直接执行SQL语句
可执行Spark SQL提供的丰富的API
基于RDD操作

3、分布式机器学习库Mllib

4、并行图计算框架GraphX

5、流计算框架Spark Streaming
将实时数据按照指定时间片划分为流数据

6、近似计算查询引擎BlinkDB
交互式SQL的近似查询
允许用户在查询精确度和查询响应时间之间做出权衡

7、内存分布式文件系统Tachyon
内存中的HDFS

8、资源管理框架Mesos
提供类似Yarn的功能

9、1.4新特性SparkR

三、Spark构架

1、构架组成

Spark集群中一些核心概念:

(1)Master
集群中含有Master进程的节点
负责集群的协作和管理
本身不参与计算任务
在Yarn上运行时表现为ResourceManager

(2)Slaves
集群中含有Worker进程的节点
接受Master命令和进行状态汇报
Worker本身并不是处理计算任务的
在Yarn上运行时表现为NodeManager

(3)Driver
负责控制Client提交的任务的执行
执行程序的main函数并创建SparkContext
分发Task到具体的Worker上的Executor
分发任务执行所需要的file和jar包(序列化后)给Worker节点

(4)SparkContext:整个应用的上下文,控制应用的生命周期
RDD:基本计算单元,提供丰富的算子,一组RDD可执行成DAG图
DAGScheduler:输入DAG图,根据RDD之间的依赖关系划分为Stages输出
TaskScheduler:输入Stages,将其划分为更小的Task分发给具体的Executor执行
SparkEnv:存储运行时的重要组件的引用,包括:
=>MapOutPutTracker:负责Shuffle元信息的存储
=>Broadcastmanager:负责广播变量的控制与元信息的存储
=>BlockManager:负责存储管理、创建和查找块
=>MetricsSystem:监控运行时性能指标信息
=> SparkConf:负责存储配置信息

(5)Client
用户提交任务的工具

2、Spark执行任务流程(简略版)

(1)Client提交应用
(2)Master找到Worker并启动Driver
(3)Driver向Master申请资源
(4)操作RDD形成DAG图交给DAGScheduler
(5)DAGScheduler将DAG图划分为Stages输出给TaskScheduler
(6)TaskScheduler划分Task分发给Worker节点上的Executor执行

四、 Spark分布式构架与单核构架的异同
基本概念:
(1)Spark是分布式计算框架
(2)在上面可以编写分布式程序和软件

编写分布式程序需要注意的点:
内存和磁盘共享问题

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
14天前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
46 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
1月前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
58 0
|
1月前
|
消息中间件 分布式计算 NoSQL
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
38 0
|
1月前
|
消息中间件 存储 分布式计算
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
81 0
|
15天前
|
SQL 机器学习/深度学习 分布式计算
Spark快速上手:揭秘大数据处理的高效秘密,让你轻松应对海量数据
【10月更文挑战第25天】本文全面介绍了大数据处理框架 Spark,涵盖其基本概念、安装配置、编程模型及实际应用。Spark 是一个高效的分布式计算平台,支持批处理、实时流处理、SQL 查询和机器学习等任务。通过详细的技术综述和示例代码,帮助读者快速掌握 Spark 的核心技能。
41 6
|
13天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
53 2
|
14天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
53 1
|
15天前
|
分布式计算 大数据 OLAP
AnalyticDB与大数据生态集成:Spark & Flink
【10月更文挑战第25天】在大数据时代,实时数据处理和分析变得越来越重要。AnalyticDB(ADB)是阿里云推出的一款完全托管的实时数据仓库服务,支持PB级数据的实时分析。为了充分发挥AnalyticDB的潜力,将其与大数据处理工具如Apache Spark和Apache Flink集成是非常必要的。本文将从我个人的角度出发,分享如何将AnalyticDB与Spark和Flink集成,构建端到端的大数据处理流水线,实现数据的实时分析和处理。
47 1
|
25天前
|
分布式计算 大数据 Apache
利用.NET进行大数据处理:Apache Spark与.NET for Apache Spark
【10月更文挑战第15天】随着大数据成为企业决策和技术创新的关键驱动力,Apache Spark作为高效的大数据处理引擎,广受青睐。然而,.NET开发者面临使用Spark的门槛。本文介绍.NET for Apache Spark,展示如何通过C#和F#等.NET语言,结合Spark的强大功能进行大数据处理,简化开发流程并提升效率。示例代码演示了读取CSV文件及统计分析的基本操作,突显了.NET for Apache Spark的易用性和强大功能。
34 1
|
1月前
|
消息中间件 分布式计算 Kafka
大数据平台的毕业设计02:Spark与实时计算
大数据平台的毕业设计02:Spark与实时计算