大数据Spark框架概述

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 大数据Spark框架概述

1 Spark 是什么

Spark 是加州大学伯克利分校AMP实验室(Algorithms Machines and People Lab)开发的通用大数据出来框架。Spark生态栈也称为BDAS,是伯克利AMP实验室所开发的,力图在算法(Algorithms)、机器(Machines)和人(Person)三种之间通过大规模集成来展现大数据应用的一个开源平台。AMP实验室运用大数据、云计算等各种资源以及各种灵活的技术方案,对海量数据进行分析并转化为有用的信息,让人们更好地了解世界。Spark的发展历史,经历过几大重要阶段,如下图所示:

Spark 是一种快速、通用、可扩展的大数据分析引擎,2009 年诞生于加州大学伯克利分校AMPLab,2010 年开源, 2013年6月成为Apache孵化项目,2014年2月成为 Apache 顶级项目,用 Scala进行编写项目框架。

b2ae0496c9b0446389e8ed9e8ddb9024.png

定义:Apache Spark是用于大规模数据(large-scala data)处理的统一(unified)分析引擎。

官方网址: http://spark.apache.org/https://databricks.com/spark/about

0f84713ccd0d470aab064d8cc597378e.png

官方定义

bd04cc5868754665bed4b3b2b519abeb.png


Spark 最早源于一篇论文 Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing,该论文是由加州大学柏克莱分校的 Matei Zaharia 等人发表的。论文中提出了一种弹性分布式数据集(即 RDD)的概念,原文开头对其的解释是:


翻译过来就是:RDD 是一种分布式内存抽象,其使得程序员能够在大规模集群中做 内存运算,并且有一定的容错方式。而这也是整个 Spark 的核心数据结构,Spark 整个平台都围绕着RDD进行。


23f87db26cd34f7faceafb983923d84c.png

2 Spark 四大特点

Spark 使用Scala语言进行实现,它是一种面向对、函数式编程语言,能够像操作本地集合一样轻松的操作分布式数据集。Spark具有运行速度快、易用性好、通用性强和随处运行等特点。


7b3a42876b314e1d8226228c7afce425.png

2.1 速度快

由于Apache Spark支持内存计算,并且通过DAG(有向无环图)执行引擎支持无环数据流,

所以官方宣称其在内存中的运算速度要比Hadoop的MapReduce快100倍,在硬盘中要快10倍。


06eadb070ddb4bbf967a6f92bdf53e9a.png

Spark处理数据与MapReduce处理数据相比,有如下两个不同点:其一、Spark处理数据时,可以将中间处理结果数据存储到内存中;

d488db0f7ee641dd981e0b0ae5bfdcfa.png


其二、Spark Job调度以DAG方式,并且每个任务Task执行以线程(Thread)方式,并不是像

MapReduce以进程(Process)方式执行。

c5f09e7e8a16458ab1ae2ca5a732924f.png

2014 年的如此Benchmark测试中,Spark 秒杀Hadoop,在使用十分之一计算资源的情况下,

相同数据的排序上,Spark 比Map Reduce快3倍!


17e1e6cc47824413a22196280cdb7a55.png

2.2 易于使用

Spark 的版本已经更新到 Spark 2.4.5(截止日期2020.05.01),支持了包括 Java、Scala、Python 、R和SQL语言在内的多种语言。

7b6e49aab7864a15b2a91828f9c74ee0.png


2.3 通用性强

在 Spark 的基础上,Spark 还提供了包括Spark SQL、Spark Streaming、MLib 及GraphX在内的多个工具库,我们可以在一个应用中无缝地使用这些工具库。其中,Spark SQL 提供了结构化的数据处理方式,Spark Streaming 主要针对流式处理任务(也是重点),MLlib提供了很多有用的机器学习算法库,GraphX提供图形和图形并行化计算。


7271f52a78b147d2ac32bc7d07658999.png

2.4 运行方式

Spark 支持多种运行方式,包括在 Hadoop 和 Mesos 上,也支持 Standalone的独立运行模

式,同时也可以运行在云Kubernetes(Spark 2.3开始支持)上。

5f7aaf37e84947839e7abb3653e667ee.png

对于数据源而言,Spark 支持从HDFS、HBase、Cassandra 及 Kafka 等多种途径获取数据。

7ad81c2a3fdb44eebd60808a2b0abb28.png

3 Spark 框架模块

整个Spark 框架模块包含:Spark Coke、 Spark SQL、 Spark Streaming、 Spark GraphX、Spark MLlib,而后四项的能力都是建立在核心引擎之上 。


b9ff7721cfef4884a1970fb6cc00afae.png

3.1 Spark Core

实现了 Spark 的基本功能,包含RDD、任务调度、内存管理、错误恢复、与存储系统交互等模块。数据结构:RDD

35384d812c6a4dc8997c6aa1b8b99c1c.png

3.2 Spark SQL

Spark 用来操作结构化数据的程序包。通过 Spark SQL,我们可以使用 SQL操作数据。数据结构:Dataset/DataFrame = RDD + Schema1b6e72631cf949c4b221d18f3b710be2.png

官网: http://spark.apache.org/sql/


3.3 Spark Streaming

Spark 提供的对实时数据进行流式计算的组件。提供了用来操作数据流的 API。 数据结构:DStream = Seq[RDD]bd39238925c748c9a0dc2c4a25c80ceb.png

官网: http://spark.apache.org/streaming/


3.4 Spark MLlib

提供常见的机器学习(ML)功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型

评估、数据导入等额外的支持功能。 数据结构:RDD或者DataFrame

49a1360005a7449aa2216e1f3e9a2377.png

3.5 Spark GraphX

Spark中用于图计算的API,性能良好,拥有丰富的功能和运算符,能在海量数据上自如地运行复杂的图算法。数据结构:RDD或者DataFrame236b27890c4d428e844b7d6bbd2eec3d.png

官网: http://spark.apache.org/graphx/

在Full Stack 理想的指引下,Spark 中的Spark SQL 、SparkStreaming 、MLLib 、GraphX 几大子框架和库之间可以无缝地共享数据和操作,这不仅打造了Spark 在当今大数据计算领域其他计算框架都无可匹敌的优势,而且使得Spark 正在加速成为大数据处理中心首选通用计算平台。


3.6 Structured Streaming

Structured Streaming结构化流处理模块针对,流式结构化数据封装到DataFrame中进行分析。

ba668549b3ae404f960fe275535929aa.png

Structured Streaming是建立在SparkSQL引擎之上的可伸缩和高容错的流式处理引擎,可以像

操作静态数据的批量计算一样来执行流式计算。当流式数据不断的到达的过程中Spark SQL的引擎

会连续不断的执行计算并更新最终结果。简而言之,Structured Streaming提供了快速、可伸缩、可容错、端到端精确的流处理。

官网:http://spark.apache.org/docs/2.4.5/structured-streaming-programming-guide.html


4 Spark 运行模式

Spark 框架编写的应用程序可以运行在本地模式(Local Mode)、集群模式(Cluster Mode)

和云服务(Cloud),方便开发测试和生产部署。

9aab0db81fc9457299b418e4fa98a9e8.png

第一、本地模式:Local Mode

将Spark 应用程序中任务Task运行在一个本地JVM Process进程中,通常开发测试使用。

a9eeafa8c6f4457889ac70cb08f1b138.png

第二、集群模式:Cluster Mode

将Spark应用程序运行在集群上,比如Hadoop YARN集群,Spark 自身集群Standalone及Apache Mesos集群,网址: http://spark.apache.org/docs/2.4.3/

1a343bfa9d3244d382095c9f40392226.png

Hadoop YARN集群模式(生产环境使用):运行在 yarn 集群之上,由 yarn 负责资源管

理,Spark 负责任务调度和计算,好处:计算资源按需伸缩,集群利用率高,共享底层存

储,避免数据跨集群迁移。

Spark Standalone集群模式(开发测试及生成环境使用):类似Hadoop YARN架构,典型

的Mater/Slaves模式,使用Zookeeper搭建高可用,避免Master是有单点故障的。

Apache Mesos集群模式(国内使用较少):运行在 mesos 资源管理器框架之上,由 mesos

负责资源管理,Spark 负责任务调度和计算。

第三、云服务:Kubernetes 模式

中小公司未来会更多的使用云服务,Spark 2.3开始支持将Spark 开发应用运行到K8s上。

4c290ba1d0314e1db8b55a77f87f999a.png


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
18天前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
52 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
17天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
62 2
|
18天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
57 1
|
18天前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
19天前
|
分布式计算 大数据 OLAP
AnalyticDB与大数据生态集成:Spark & Flink
【10月更文挑战第25天】在大数据时代,实时数据处理和分析变得越来越重要。AnalyticDB(ADB)是阿里云推出的一款完全托管的实时数据仓库服务,支持PB级数据的实时分析。为了充分发挥AnalyticDB的潜力,将其与大数据处理工具如Apache Spark和Apache Flink集成是非常必要的。本文将从我个人的角度出发,分享如何将AnalyticDB与Spark和Flink集成,构建端到端的大数据处理流水线,实现数据的实时分析和处理。
48 1
|
1月前
|
存储 机器学习/深度学习 分布式计算
大数据技术——解锁数据的力量,引领未来趋势
【10月更文挑战第5天】大数据技术——解锁数据的力量,引领未来趋势
|
5天前
|
存储 分布式计算 数据挖掘
数据架构 ODPS 是什么?
数据架构 ODPS 是什么?
50 7
|
5天前
|
存储 分布式计算 大数据
大数据 优化数据读取
【11月更文挑战第4天】
15 2
|
18天前
|
数据采集 监控 数据管理
数据治理之道:大数据平台的搭建与数据质量管理
【10月更文挑战第26天】随着信息技术的发展,数据成为企业核心资源。本文探讨大数据平台的搭建与数据质量管理,包括选择合适架构、数据处理与分析能力、数据质量标准与监控机制、数据清洗与校验及元数据管理,为企业数据治理提供参考。
60 1
|
12天前
|
存储 大数据 定位技术
大数据 数据索引技术
【10月更文挑战第26天】
30 3