赞
踩
一、什么是Spark?
Spark是一种快速、易用、通用、随处运行和代码简洁的分布式计算框架。
二、Spark和Hadoop MapReduce的区别
Spark是一个开源的大数据处理框架,它可以处理批处理和流处理任务,具有高性能、高效率和高并发性。
HadoopMapReduce是一个基于Hadoop生态系统的大数据处理框架,主要用于批处理任务。
Spark的中间数据存放于内存中,有更高的迭代运算效率,而Hadoop mapreduce的中间数据存放于HDFS中,涉及硬盘的读写,运算效率相对较低。
数据处理模型:Hadoop MapReduce采用批处理模型,即将数据分成小块进行处理,每个小块的处理结果再进行合并。而Spark采用了更为灵活的内存计算模型,可以在内存中进行迭代计算和实时处理。
执行速度:由于Spark将数据存储在内存中,相比Hadoop MapReduce的磁盘读写操作,Spark具有更快的执行速度。尤其是对于迭代计算和实时处理等场景,Spark的性能更加优越。
编程接口:Hadoop MapReduce使用Java编程语言进行开发,而Spark提供了多种编程接口,包括Java、Scala、Python和R等,使得开发者可以使用自己熟悉的编程语言进行开发。
内建功能:Spark提供了丰富的内建功能,如机器学习库(MLlib)、图计算库(GraphX)和流处理库(Spark Streaming)等,这些功能使得Spark在数据处理和分析方面更加强大和灵活。
数据处理方式:Hadoop MapReduce适合处理大规模的离线数据批处理任务,而Spark不仅支持离线批处理任务,还能够进行实时流式处理和交互式查询等多种数据处理方式。
三、什么是结构化数据?什么是非结构化数据?
结构化的数据是指可以使用关系型数据库表示和存储,表现为二维形式的数据。
一般特点是:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。
如mysql数据库中的数据、csv文件。
非结构化数据是指信息没有一个预先定义好的数据模型或者没有以一个预先定义的方式来组织。非结构化数据一般指大家文字型数据,但是数据中有很多诸如时间,数字等的信息。相对于传统的在数据库中或者标记好的文件,由于他们的非特征性和歧义性,会更难理解。
文本、图片、音频、视频等等。
四,Spark通用性
包括Spark Streaming (即席查询)、Spark Streaming(实时流处理)、Spark MLlib(机器学习库)、Spark GraphX(图计算)。
五、Spark运行架构
(1)客户端:用户提交作业的客户端。
(2)Driver:负责运行应用程序(Application)的main函数并创建SparkContext,应用程序包含Driver功能的代码和分布在集群中多个节点上的Executor代码。
(3)SparkContext:应用上下文,控制整个生命周期。
(4)Cluster Manager:资源管理器,即在集群上获取资源的外部服务,目前主要有Standalone 和 YARN。
① Standalone是Spark原生的资源管理器,由Master进程负责资源的分配,也可以理解为使用Standalone时Cluster Manager是Master进程所在节点。
②YARN是Hadoop集群的资源管理器 若使用YARN作为Spark 程序运行的资源管理器,则由ResourceManager负责资源的分配。
(5)Spark Worker:集群中任何可以运行应用程序的节点,运行一个或多个Executor进程。
(6)Executor:运行在SparkWorker上的任务(Task)执行器,Executor启动线程池运行Task,并负责将数据存在内存或磁盘上,每个应用程序都会申请各自的Executor以处理任务。
(7)Task:被发送到某个Executor的具体任务。
六、Spark有哪几种运行模式?
1.Local模式(本地模式)
Local 模式是最简单的一种Spark运行方式,它采用单节点多线程(cpu)方式运行,local模式是一 种OOTB(开箱即用)的方式,只需要在spark-env.sh导出JAVA_HOME,无需其他任何配置即可使用,因而常用于开发和学习。
2.Standalone模式
Standalone模式是Spark自带的资源管理器。StandAlone 是完整的Spark运行环境,其中: Master角色以Master进程存在, Worker角色以Worker进程存在 Driver和Executor运行于Worker进程内, 由Worker提供资源供给它们运行。
3.YARN模式
YARN是一种统一资源管理机制,在其上面可以运行多套计算框架。YARN模式根据Driver在集群中的位置又分为两种,一种是YATN-Client模式(YARN客户端模式),另一种是YARN-Cluster模式(yarn集群模式)。
七、Yarn的两种模式的作业运行流程
YARN集群模式的作业运行流程描述如下。
(1)客户端生成作业信息并将其提交给ResourceManager。
(2)YARN框架的 ResourceManager 指定在某一个 NodeManager启动 Container (Containcr 是资源分配和调度的基本单位),并将 Application Master 进程分配给该NodeManagera
(3)NodeManager接收到ResourceManager的分配后,启动Application Master进程并初始化作业,此时NodeManager称为Driver。
(4)Application Master进程向 ResourceManager申请资源,在ResourceManager分配资源的同时通知其他 NodeManager启动相应的Executor。
(5)Exceutor向NodeManager 的Application Master进程注册汇报并完成相应的任务。
YARN客户端模式的作业运行流程描述如下。
(1)客户端生成作业信息并将其提交给ResourceManager。
(2)YARN框架的 ResourceManager指定在某一个NodeManager启动Container,并将Application Master分配给该NodeManager。
(3)NodeManager 接收到ResourceManager的分配后,启动Application Master并初始化作业,此时NodeManager就称为Driver,
(4)Application Master 向 ResourceManager 中请资源,在ResourceManager分配资源同时通知其他 NodeManager启动相应的Executor。
(5)Executor向本地启动的Application Master注册汇报并完成相应的任务。
八、RDD
1.RDD(Resilient Distributed Datasets弹性分布式数据集),可以简单的把RDD理解成一个提供了许多操作接口的数据集合,和一般数据集不同的是,其实际数据分布存储于一批机器中(内存或磁盘中)。
Spark RDD转换和操作示例
RDD Stage划分
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。