设为首页 加入收藏

TOP

一起学Spark(2)-- Spark组件与YARN 集群运行
2019-04-27 01:15:15 】 浏览:46
Tags:一起 Spark 组件 YARN 集群 运行

Spark组件与在yarn集群上的运行

1.Driver

driver 前面介绍过,是spark的驱动器程序,也是负责启动和管理运行Spark应用的进程。确切的说,driver是维护所有计算节点的连接实体。

driver维护spark运行的上下文(context),允许Spark给executor分配任务。同时维护某些内部结构(比如累加器和广播变量),driver处理与集群管理器的通信,请求资源以执行spark应用,driver会根据应用的代码创建一个执行计划:有向无环图 DAG

Spark优化这个DAG来减少数据的传输,然后以一个名为DAGSchedular(在运行时会显示)的内部结构进一步将词DAG分解成一个个的stage,再分解成task,一个stage就是一组转换操作,它们将作用于RDD中的数据。

DAGSchedular将DAG细分成Task,然后TaskSchedular(任务调度器)在集群中调度这些Task,TaskScheduler 了解资源与数据局限性的限制条件,将task分配给相应的 executor。(计算核心),一旦TaskScheduler决定了在哪里执行task,所有DAG对应的转换操作以及转换闭包(关于闭包后面会解释)就被序列化,并通过网络传输给一个worker节点。

2.workers与executors

在一个Spark集群中,worker节点是实际运行executor和task的物理机器,在底层,集群管理器负责与各个worker节点通信并处理资源的分配。

每个worker节点可以运行一个或多个executor,executor是一种抽象,让Spark程序可配置的执行。每个executor运行一个JVM.

分配给一个executor的总内存分配:

60%:storage内存,用于持久化RDD和数据序列化

20%:shuffle内存,Spark对某些RDD转换的数据进行重组的过程(shuffle是一个很复杂的过程,它需要被序列化,通过网络传输这些数据,还需要有一些额外的内存以便于将数据组织起来

20%:分配给storage和shuffle内存剩下的内存,留作避免spark内存溢出错误引起的开销。

了解YARN集群

Yarn是Hadoop 2.0 版本引入的集群管理器,还不是一个独立组件,是一个依赖于Hadoop生态的系统的组件。

yarn集群解决了专有集群中spark应用与其他非spark应用(如Hive)共享物理资源的问题。

对于yarn来说,spark只是一个应用程序,spark的每一个executor在它自己的yarn容器内运行,每个节点上的每一个容器存放资源管理器分配的资源(还有一种资源分配方式叫动态资源分配)

在yarn上运行spark有两种模式:

yarn-client 模式:driver运行在启动spark的机器上,即driver运行在客户端,yarn应用程序master只负责从yarn请求。

yarn-cluster 模式:driver在yarn容器内运行,客户端可以从集群中断开(运行不再有任何提示,并需要配置Master IP

Spark执行模型:

窄依赖:父RDD的一个分区只生成一个子分区

宽依赖:父RDD的一个分区参与多个子分区的生产

DAGSchedular 会将尽可能多的窄依赖放入同一个 stage 执行

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇        .. 下一篇        ..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目