Spark | 架构

2019-07-06  本文已影响0人  icebreakeros

架构

spark生态

Spark的中间数据放到内存中,对于迭代运算效率更高
Shark基本上就是在Spark的框架基础上提供和Hive一样的HiveQL命令接口
Spark Steaming是构建在Spark上处理Stream数据的框架,其基本原理是将Stream数据分成小的时间片断,以类似batch批量处理的方式来处理这小部分数据

spark生态

Spark On Mesos模式

两种调度模式:粗粒度和细粒度

粗粒度模式(Coarse-grained Mode
每个应用程序的运行环境由一个Dirver和若干个Executor组成
每个Executor占用若干资源,内部可运行多个Task
应用程序运行之前,申请好全部资源,运行结束后,回收这些资源

细粒度模式(Fine-grained Mode
思想是按需分配
启动executor,但每个executor占用资源仅仅是自己运行所需的资源
mesos会为每个executor动态分配资源
单个Task运行完之后可以马上释放对应的资源
每个Task会汇报状态给Mesos slaveMesos Master

多进程vs多线程

MapReduce采用了多进程模型,便于细粒度控制每个任务占用的资源,但会消耗较多的启动时间
Spark同节点上的任务以多线程的方式运行在一个JVM进程中

多线程好处
任务启动速度快
有利于共享内存,非常适合内存密集型任务
避免了每个任务重复申请资源带来的时间开销

MapReduce多进程模型

每个Task运行在一个独立的JVM进程中
可单独为不同类型的Task设置不同的资源量,目前支持内存和CPU两种资源
每个Task都要经历“申请资源 > 运行Task > 释放资源”的过程

MapReduce多进程模型

Spark多线程模型

每个节点上可以运行一个或多个Executor服务
每个Executor配有一定数量的slot
每个Executor单独运行在一个JVM进程中,每个Task则是运行在Executor中的一个线程
同一个Executor内部的Task可共享内存

Spark多线程模型
上一篇下一篇

猜你喜欢

热点阅读