mllib逻辑回归 spark_Spark架构详解——分布式流计算内存批处理迭代运算框架

#Spark# #大数据# #Hadoop# #streaming# #分布式计算#

Spark:基于内存的高速集群计算框架。对mapreduce进行优化,在内存中进行迭代运算。可以使用Java,Python,Scala等多种语言开发。Scala:交互式语言,可直接用于Spark编程。

适用:实时性高,数据量不是特别大。多次操作特定数据集。

不适用:异步细粒度更新。

94365061c8e2609757ad784d43817dea.png

1.1 功能、作用

RDD:Resilient Distributed Datasets,弹性分布式数据集。要求数据稳定。变换操作。

Spark SQL:使用DataFrame可以操作RDD、JSON、Hive、MySQL等。是Hive、Pig的替代品。

Spark Streaming:流计算框架。将流数据按时间(0.5s~2s)划分为RDD进行批处理运算(Spark)。与Storm相比,延迟稍高(storm 100ms),吞吐量高(是storm的2~5倍,100个节点的4核集群Spark处理速度6GB/s)。是Storm的替代品。

GraphX:图计算框架。将大图划分为小图RDD进行批处理运算(Spark)。

1.2 特点

1、速度快

spark比mapreduce在内存中快100倍,比mapreduce在磁盘中快10倍。

2、易用性

可以快速开发一个spark应用程序,通过java、scala、python、R、sql不同语言开发代码程序

3、通用性

spark框架是一个生态系统,可以通过不同子项目sparksql、sparkStreaming、Mlib、Graphx应用到不同的应用场景。

4、兼容性

spark任务就是一个计算程序,哪里可以给当前这个程序提供对应的计算资源,我们就可以把程序提交到哪里去。

yarn

spark程序可以提交到yarn中去运行,整个任务的资源分配由resourcemanager去负责

standalone

它是spark自带的集群模式,整个任务的资源分配由Master去负责

mesos

它是一个apache开源类似于yarn的资源管理平台

1.3 架构

39cd1084b246c2e7fc8a38200b8669b1.png

Spark Core是Spark的核心计算引擎,提供了任务调度、内存管理、错误恢复、与存储系统交互等模块。其中的弹性分布式数据集(RDD),是计算时的主要编程抽象,基于RDD对数据进行创建、操作与计算。

Spark SQL用于对结构化数据进行处理,它提供了DataFrame的抽象,作为分布式平台数据查询引擎,可以在此组件上构建大数据仓库。DataFrame是一个分布式数据集,在概念上类似于传统数据库的表结构,数据被组织成命名的列,DataFrame的数据源可以是结构化的数据文件,也可以是Hive中的表或外部数据库,也还可以以是现有的RDD。Spark SQL是用来操作结构化数据的程序包,支持多种数据源(Hive表、Parquet、JSON),可以基于Spark SQL进行数据的查询,为数据计算提供数据入口。

Spark Streaming是对实时数据进行流式计算的组件,比如处理服务器日志或者消费消息队列。

Mllib作为Spark组件中机器学习的程序库,具有包括分类、回归、聚类、协同过滤等算法。

GraphX是用来操作图的程序库、可以并行进行图计算,并支持常用的图算法。

Cluster Manager:在standalone模式中即为Master主节点,控制整个集群,监控worker。在YARN模式中为资源管理器

Worker节点:从节点,负责控制计算节点,启动Executor或者Driver。

Driver: 运行Application 的main()函数

Executor:执行器,是为某个Application运行在worker node上的一个进程。

详细说明:

Application: Appliction都是指用户编写的Spark应用程序,其中包括一个Driver功能的代码和分布在集群中多个节点上运行的Executor代码

Driver: Spark中的Driver即运行上述Application的main函数并创建SparkContext,创建SparkContext的目的是为了准备Spark应用程序的运行环境,在Spark中有SparkContext负责与ClusterManager通信,进行资源申请、任务的分配和监控等,当Executor部分运行完毕后,Driver同时负责将SparkContext关闭,通常用SparkContext代表Driver

Executor: 某个Application运行在worker节点上的一个进程, 该进程负责运行某些Task, 并且负责将数据存到内存或磁盘上,每个Application都有各自独立的一批Executor, 在Spark on Yarn模式下,其进程名称为CoarseGrainedExecutor Backend。一个CoarseGrainedExecutor Backend有且仅有一个Executor对象, 负责将Task包装成taskRunner,并从线程池中抽取一个空闲线程运行Task, 这个每一个oarseGrainedExecutor Backend能并行运行Task的数量取决与分配给它的cpu个数。

0da604bdaa1286a6de85ff8db3b6d328.png

Cluter Manager:指的是在集群上获取资源的外部服务。目前有三种类型

Standalon : spark原生的资源管理,由Master负责资源的分配

Apache Mesos:与hadoop MR兼容性良好的一种资源调度框架

Hadoop Yarn: 主要是指Yarn中的ResourceManager

Worker: 集群中任何可以运行Application代码的节点,在Standalone模式中指的是通过slave文件配置的Worker节点,在Spark on Yarn模式下就是NoteManager节点

Task: 被送到某个Executor上的工作单元,但hadoopMR中的MapTask和ReduceTask概念一样,是运行Application的基本单位,多个Task组成一个Stage,而Task的调度和管理等是由TaskScheduler负责

Job: 包含多个Task组成的并行计算,往往由Spark Action触发生成, 一个Application中往往会产生多个Job

Stage: 每个Job会被拆分成多组Task, 作为一个TaskSet, 其名称为Stage,Stage的划分和调度是有DAGScheduler来负责的,Stage有非最终的Stage(Shuffle Map Stage)和最终的Stage(Result Stage)两种,Stage的边界就是发生shuffle的地方

DAGScheduler: 根据Job构建基于Stage的DAG(Directed Acyclic Graph有向无环图),并提交Stage给TASkScheduler。 其划分Stage的依据是RDD之间的依赖的关系找出开销最小的调度方法,如下图

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值