Spark简单介绍

1.Spark是什么?

定义:Apache Spark是用于大规模数据处理的统一分析引擎。

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

统一分析引擎?
spark是一款分布式内存计算的统一分析引擎,其特点是对任意类型的数据进行自定义计算。spark可以计算:结构化,非结构化等各种类型的数据结构,同时也支持使用PYTHON,JAVA,SCALA,R以及SQL语言去开发应用程序计算数据。spark的适用面非常广泛,被称之为统一的(适用面广)的分析引擎(数据处理)

 

2.Spark VS Hadoop(MapReduce)

 

 尽管spark相对于Hadoop而言具有较大优势,但spark并不能完全替代hadoop

1)在计算层面,spark相比较MR(MapReduce)有巨大的性能优势,但至今仍有许多计算工具基于MR架构,比如非常成熟的Hive

2)spark仅做计算,而Hadoop生态圈不仅有计算(MR)也有存储(HDFS)和资源管理调度(YARN),HDFS和YARN仍是许多大数据体系的核心架构

 

3.spark四大特点

1)速度快

由于Apache Spark支持内存计算,并且通过DAG(有向无环图)执行引擎支持无环数据流,所以官方宣传其在内存中的运算速度要比Hadoop的MapReduce快100倍,在硬盘中要快十倍。

Spark处理数据与MapReduce处理数据相比,有如下两个不同点

其一:spark处理数据时,可以将中间处理结果数据存储到内存中

其二:spark提供了非常丰富的算子(API),可以做到复杂任务在一个spark程序中完成

2)易于使用

spark的版本已经更新到spark3.2.0,支持了包括java,scala,python,r以及sql语言在内的多种语言,为了兼容spark2.x企业级应用场景,spark仍然持续更新spark2版本

3)通用性强

在spark的基础上,spark还提供了包括spark sql,spark streaming,mllib和graphx在内的多个工具库,我们可以在一个应用中无缝地使用这些工具库

4)运行方式

spark支持多种运行方式,包括在hadoop和mesos上,也支持standalone的独立运行方式,同时也可以运行在云kubernetes(spark2.3开始支持)上

 

4.Spark框架模块

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

Spark Core:Spark的核心,Spark核心功能均由Spark Core模块提供,是Spark运行的基础。Spark Core以RDD为数据抽象,提供Python,Java,Scala,R语言的API,可以编程进行海量离线数据批处理计算。

Spark SQL:基于SparkCore之上,提供结构化处理模块,SparkSQL支持以SQL语言对数据进行处理,SparkSQL本身针对离线计算场景,同时基于SparkSQL,Spark提供了StructuredStreaming模块,可以以SparkSQL为基础,进行数据的流式计算

SparkStreaming:以SparkCore为基础,提供数据的流式计算功能

MLlib:以SparkCore为基础,进行机器学习计算,内置了大量的机器学习库和API算法等,方便用户以分布式计算的模块进行机器学习计算

GraphX:以SparkCore为基础,进行图计算,提供了大量的图计算API,方便用于以分布式计算模式进行图计算

 

5.Spark的运行模式

Spark提供多种运行模式,包括:

1)本地模式(单机Local)

本地模式就是以一个独立的进程,通过其内部的多个线程来模拟整个Spark运行时环境

2)Standalone模式(集群)

Spark中的各个角色以独立进程的形式存在,并组成Spark集群环境

3)Hadoop YARN模式(集群)

Spark中的各个角色运行在YARN的容器内部,并组成Spark集群

4)Kubernetes(集群)

Spark中的各个角色运行在Kubernetes容器内部,并组成Spark集群环境

5)云服务模式(运行在云平台上)

 

6.Spark的架构角色

YARN角色回顾

YARN主要有4类角色,从2个层面去看:
资源管理层面:
  集群资源管理者(Master):ResourceManager

  单机资源管理者(Worker):NodeManager

任务计算层面:

  单任务管理者(Master):ApplicationMaster

  单任务执行者(Worker):Task(容器内计算框架的工作角色)

 

Spark运行角色

资源管理层面:
  集群资源管理者(Master):Master

  单机资源管理者(Worker):Worker

任务计算层面:

  单任务管理者(Driver):Driver

  单任务执行者(Executor):Executor(容器内计算框架的工作角色)

注:正常情况下Executor是干活的角色,不过在特殊场景下(Local模式),Driver可以既管理又干活

 

posted @ 2022-06-29 09:28  修心的博客  阅读(369)  评论(0编辑  收藏  举报