2022-02-09大数据学习日志——PySpark——Spark框架概述

前言部分:知识回顾及课程目标

[前言1]-大数据技术框架

整个大数据技术框架学习,可以划分为4个阶段:离线分析、内存分析、实时存储和实时分析。
2022-02-09大数据学习日志——PySpark——Spark框架概述_第1张图片

# 第1部分、离线分析(Batch Processing)
	分布式协作服务框架Zookeeper
	大数据基础框架Hadoop(HDFS、MapReduce和YARN)
	大数据数仓框架Hive
	大数据辅助框架:FLUME、SQOOP、Oozie和Hue
	# 实战项目:亿品新零售


# 第2部分、内存分析(In-Memory Processing)
	Apache Spark(Environment环境、Core、SQL等),属于批处理,相比MapReduce快
		将分析数据封装到数据结构:RDD(分布式集合),类似Python中列表list,调用函数处理数据
	# 实战项目:一站制造项目或保险项目


# 第3部分、实时存储
	基于Key-Value内存数据Redis
	大数据NoSQL海量数据库HBase
	分布式消息队列Kafka
	# 实战案例:陌陌综合案例
	

# 第4部分、实时计算
	Apache Flink(实时流式计算框架,天猫双十一实时大屏):Environment、DataStream和Table API & SQL
		数据流封装DataStream,调用函数处理
		Table API和SQL批处理和流计算
	# 实战项目:车联网项目或今日指数项目

[前言2]-Aapche Spark 学习安排

Apache Spark课程学习,从4个大方面,基于Python语言编程开发(又称为PySpark)。

2022-02-09大数据学习日志——PySpark——Spark框架概述_第2张图片

# 第1方面、Basic Environment(基础环境):
	Spark 框架安装部署及开发运行,如何在本地模式和集群模式运行,使用spark-shell及PyCharm开发应用程序,测试及打包提交运行集群。
	2天时间


# 第2方面、SparkCore(核心模块)
	数据结构RDD,所有数据封装,分布式集合,处理数据直接调用方法(函数)
	2天时间


# 第3方面、SparkSQL(交互式分析)
	结构化数据处理分析,将数据封装在DataFrame,调用API或者使用SQL分析数据;
	实际企业中使用最多的模块,提供丰富外部数据源
	2天时间

# 第4方面、Spark in Action(实战演练)
	基于Spark框架,进行海量数据分析处理,无论SQL语句还是DSL链式编程
	以案例贯彻,知识巩固
	1天时间

学习目标

Spark第1天,主要学习配置Spark 基础环境
框架概述、快速入门(本地模式)和Standalone 集群
1、Spark 框架概述
2、Spark 快速入门
3、Standalone 集群

    Apache Spark是一种闪电般的群集计算技术,专为快速计算而设计。它基于Hadoop MapReduce,它扩展了MapReduce模型以便将其用于更多类型的计算,其中包括交互式查询和流处理。Spark的主要特点是其 内存集群计算,可提高应用程序的处理速度。
2022-02-09大数据学习日志——PySpark——Spark框架概述_第3张图片

    Spark是Hadoop在2009年在UC Berkeley的Matei Zaharia的AMPLab中开发的子项目之一。它是在2010年根据BSD许可开放源代码。它于2013年捐赠给Apache软件基金会,2014年2月成为顶级Apache项目。

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

01_Spark 风雨十年 [了解]

    Apache Spark是一个开源的类似于Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Spark中的Job中间输出和结果可以保存在内存中,从而不再需要频繁读写磁盘,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。

2022-02-09大数据学习日志——PySpark——Spark框架概述_第4张图片

  • 2009年Spark诞生于伯克利AMPLab,伯克利大学的研究性项目
  • 2010年通过BSD 许可协议正式对外开源发布
  • 2012年Spark第一篇论文发布,第一个正式版(Spark 0.6.0)发布
  • 2013年Databricks公司成立并将Spark捐献给Apache软件基金会
  • 2014年2月成为Apache顶级项目,同年5月发布Spark 1.0正式版本
  • 2015年引入DataFrame大数据分析的设计概念
  • 2016年引入DataSet更强大的数据分析设计概念并正式发布Spark2.0
  • 2017年Structured streaming 发布,统一化实时与离线分布式计算平台
  • 2018年Spark2.4.0发布,成为全球最大的开源项目
  • 2019年11月Spark官方发布3.0预览版
  • 2020年6月Spark发布3.0.0正式版

    Aapche Spark 是一种快速、通用、可扩展的大数据分析引擎,2009 年诞生于加州大学伯克利分校 AMPLab,2010 年开源, 2013年6月成为Apache孵化项目,2014年2月成为 Apache 顶级项目,用 Scala进行编写项目框架
2022-02-09大数据学习日志——PySpark——Spark框架概述_第5张图片

    从世界著名的开发者论坛,Stack Overflow的数据可以看出,2015年开始Spark每月的问题提交数量已经超越Hadoop,而2018年Spark Python版本的API PySpark每月的问题提交数量也已超过Hadoop。2019年排名Spark第一,PySpark第二;而十年的累计排名是Spark第一,PySpark第三。按照这个趋势发展下去,Spark和PySpark在未来很长一段时间内应该还会处于垄断地位。

2022-02-09大数据学习日志——PySpark——Spark框架概述_第6张图片
    从 GitHub 的数据中可以看到,在 Apache 的所有开源项目中,Spark 的关注度排名第 4(前三位分别是前端可视化框架ECharts、 RPC 服务框架 Dubbo 和可视化平台 Superset),在所有大数据处理技术中排名第 1。

github网站:https://github.com/search?o=desc&q=apache&s=stars&type=Repositories

2022-02-09大数据学习日志——PySpark——Spark框架概述_第7张图片

02_Spark概念及特点 [理解]

Apache Spark是用于大规模数据(large-scala data)处理的统一(unified)分析引擎。
2022-02-09大数据学习日志——PySpark——Spark框架概述_第8张图片

# 官方定义:轻量级lightning、快速fast、大数据和机器学习bigdata&ml、统一分析引擎

1、Apache Spark 官网:http://spark.apache.org/

2、Databricks 官网:https://databricks.com/spark/about

在这里插入图片描述

Aapche Spark 是一种快速、通用、可扩展的大数据分析引擎,基于内存分析数据,可以处理任何类型业务分析。

# 1、分析引擎(计算引擎)
	分析处理数据,类似MapReduce框架(分布式处理框架,分而治之思想)

# 2、大规模数据
	海量数据,数据很多,多数据源(存储在任何地方数据)
	
# 3、统一的分析引擎
	离线分析
	实时计算
	机器学习
	图形计算
	科学计算
	
# 4、分布式并行计算
	分而治之思想,与MapReduce计算思想完全一致
	

Spark具有运行速度快、易用性好、通用性强和随处运行等特点。http://spark.apache.org/
2022-02-09大数据学习日志——PySpark——Spark框架概述_第9张图片

  • Batch/Streaming data:统一化离线计算和实时计算开发方式,支持多种开发语言
  • SQL analytics:通用的SQL分析快速构建分析报表,运行速度快于大多数数仓计算引擎
  • Data science at scale:大规模的数据科学引擎,支持PB级别的数据进行探索性数据分析
  • Machine learning:支持在笔记本电脑上训练机器学习算法,并使用相同的代码扩展到数千台机器的集群

Spark编程支持5种语言:Java、Scala、Python、R及SQL,满足各种分析需求,目前Python语言全球最多
2022-02-09大数据学习日志——PySpark——Spark框架概述_第10张图片

Spark框架中,最核心要点:抽象,称为RDD,相当于集合,比如列表List,存储数据
2022-02-09大数据学习日志——PySpark——Spark框架概述_第11张图片

Spark程序无处不在运行【Runs Everywhere

  • 1、数据存储

    Spark分析的数据在哪里?任何地方都是可以,最主要还是HDFS、Hive、HBase、Kafka等等
    2022-02-09大数据学习日志——PySpark——Spark框架概述_第12张图片

  • 2、程序运行

    Spark 编程代码,在何处执行,分析数据??

    本地模式、集群模式【Hadoop YARN、Mesos、Standalone】、容器(K8s)
    2022-02-09大数据学习日志——PySpark——Spark框架概述_第13张图片

03_Spark vs MapReduce [掌握]

    2014 年的时候Benchmark测试中,Spark 秒杀Hadoop,在使用十分之一计算资源的情况下,相同数据的排序上,Spark 比Map Reduce快3倍!
2022-02-09大数据学习日志——PySpark——Spark框架概述_第14张图片
Spark处理数据与MapReduce处理数据相比,有如下两个不同点:

其一、Spark处理数据时,可以将中间处理结果数据存储到内存中;
2022-02-09大数据学习日志——PySpark——Spark框架概述_第15张图片

其二、Spark Job调度以DAG(有向无环图)方式,并且每个任务Task执行以线程(Thread)方式,并不是像MapReduce以进程(Process)方式执行。

Spark是一个通用的DAG引擎,使得用户能够在一个应用程序中描述复杂的逻辑,以便于优化整个数据流,并让不同计算阶段直接通过本地磁盘或内存交换数据,而不是像MapReduce那样需要通过HDFS。
2022-02-09大数据学习日志——PySpark——Spark框架概述_第16张图片

下面左图是MapReduce生成的DAG数据流,右图是Spark生成的DAG数据流。

2022-02-09大数据学习日志——PySpark——Spark框架概述_第17张图片

Spark 与 MapReduce 比较:Spark 为什么比MapReduce计算要快?

比较方面 MapRedue 计算引擎 Spark 计算引擎
1、Job 程序结构 1 个Map Stage + 1个 Reduce Stage 构架DAG图,多个Stage
多个Map Stage + 多个Redue Stage
2、中间结果存储 本地磁盘Disk 没有Shuffle时,存储内存Memory
3、Task 运行方式 进程Process:MapTask 和Reduce Task 线程Thread:Task,无需频繁启动和销毁
4、程序编程模型 直接读取文件数据,map + reduce 文件数据封装:RDD,调用函数处理

2022-02-09大数据学习日志——PySpark——Spark框架概述_第18张图片

04_Spark 框架模块 [了解]

整个Spark 框架模块包含:Spark Core、 Spark SQL、 Spark Streaming、 Spark GraphX、Spark MLlib,而后四项的能力都是建立在核心引擎之上 。
2022-02-09大数据学习日志——PySpark——Spark框架概述_第19张图片

# 1、最核心,最基础
	SparkCore【★★★★★】:RDD 数据结构,分布式集合,目前理解为列表list=[1,2,3,4]

# 2、四大公共模块
	SparkSQL【★★★★★★★★★★】:使用最多模块,提供SQL和DSL编程分析数据
	SparkStreaming:流式计算
	GraphX:图形计算
	MLlib:机器学习库
	
# 3、高级分析模块
	PySpark:基于Python语言编程
	SparkR:基于R语言编程

# 4、新的模块:从Spark 2.0开始
	Structured Streaming:针对流式数据处理模块,官方推荐使用

2022-02-09大数据学习日志——PySpark——Spark框架概述_第20张图片

05_Spark 应用组成 [掌握]

5.1 每个MapReduce运行时(比如运行YARN集群),由2部分组成:

(1)MRAppMaster:MapReduce应用程序管理者,负责申请资源,调度任务执行和监控等;

(2)MapTask或ReducetTask:要么是处理数据任务MapTask,要么是聚合数据任务ReduceTask;

2022-02-09大数据学习日志——PySpark——Spark框架概述_第21张图片
5.2 每个Spark 应用运行在集群上时,有2部分组成:Driver和Executors
2022-02-09大数据学习日志——PySpark——Spark框架概述_第22张图片

(1)Driver Program

在这里插入图片描述

(2)Executors

在这里插入图片描述
2022-02-09大数据学习日志——PySpark——Spark框架概述_第23张图片

06_Spark运行模式 [了解]

Spark 框架编写的应用程序可以运行在本地模式(Local Mode)、集群模式(Cluster Mode)和云端(K8s),方便开发测试和生产部署。基于当前最新版本:Spark-3.1.2 版本学习。

2022-02-09大数据学习日志——PySpark——Spark框架概述_第24张图片

6.1 本地模式:Local Mode

在当前操作系统,启动1个JVM 进程,指定最多同时运行Task任务数目,以线程Thead方式运行Task任务
2022-02-09大数据学习日志——PySpark——Spark框架概述_第25张图片

当Spark程序运行在本地模式时,设置最多同时运行几个Task:--master local[K],其中K含义

  • 其一、表示并行Task数目;
  • 其二、表示线程数目(每个Task任务以线程Thread方式运行);
  • 其三、表示虚拟CPU Cores核数(在Spark程序运行时,1个Task任务,需要1Core CPU)
    2022-02-09大数据学习日志——PySpark——Spark框架概述_第26张图片

6.2 集群模式:Cluster Mode

以Standalone集群和YARN集群为例讲解

2022-02-09大数据学习日志——PySpark——Spark框架概述_第27张图片

​ 在实际项目中,Spark 应用程序运行最多集群模式:Hadoop YARN

# 1、Hadoop YARN集群模式(生产环境使用):
	运行在 YARN 集群之上,由 YARN 负责资源管理,Spark 负责任务调度和计算
	好处:计算资源按需伸缩,集群利用率高,共享底层存储,避免数据跨集群迁移。
	
# 2、Spark Standalone集群模式(开发测试及生成环境使用):
	类似Hadoop YARN架构,典型的Mater/Slaves模式,使用Zookeeper搭建高可用,避免Master是有单点故障的。
	
# 3、 Apache Mesos集群模式(国内使用较少):
	运行在 Mesos 资源管理器框架之上,由 Mesos负责资源管理,Spark 负责任务调度和计算。

6.3 云端服务:Kubernetes 模式

中小公司未来会更多的使用云服务,Spark 2.3开始支持将Spark 开发应用运行到K8s上。
2022-02-09大数据学习日志——PySpark——Spark框架概述_第28张图片

你可能感兴趣的:(big,data,spark,大数据)