博客
关于我
关于spark on yarn 的那些事
阅读量:158 次
发布时间:2019-02-28

本文共 1657 字,大约阅读时间需要 5 分钟。

在Spark Standalone模式下,集群资源调度由Master节点负责。Spark也可以将资源调度交给YARN来负责,其好处是YARN支持动态资源调度。Standalone模式只支持简单的固定资源分配策略,每个任务固定数量的core,各Job按顺序依次分配资源,资源不够时排队等待。这种策略适用单用户的场景,但在多用户时,各用户的程序差别很大,这种简单粗暴的策略很可能导致有些用户总是分配不到资源,而YARN的动态资源分配策略可以很好地解决这个问题。

 

YARN作为通用的资源调度平台,除了为Spark提供调度服务外,还可以为其他子系统(比如Hadoop MapReduce、Hive)提供调度,这样由YARN来统一为集群上的所有计算负载分配资源,可以避免资源分配的混乱无序。

 

在Spark Standalone集群部署完成之后,配置Spark支持YARN就相对容易多了,只需要进行如下两步操作。

(1) 在conf/spark-env.sh中增加一项配置HADOOP_CONF_DIR,指向Hadoop集群的配置文件目录,比如:

export HADOOP_CONF_DIR=/home/software/soft/hadoop-2.7.0/etc/hadoop

这里配置同样需要分发至所有节点。

(2) 重启集群。

另外,即便不部署Hadoop集群,Spark程序还是可以访问HDFS文件的:添加一些依赖的jar文件,然后通过以hdfs://开头的完整路径即可。但缺点也很明显,因为HDFS与Spark节点是分离的,数据移动成本很高,大部分情况下都会大于计算成本,因此应用的局限性很明显,不适合大数据量时的计算。

经过上述的部署,Spark可以很方便地访问HDFS上的文件,而且Spark程序在计算时,也会让计算尽可能地在数据所在的节点上进行,节省移动数据导致的网络IO开销。

Spark程序由Master还是YARN来调度执行,是由Spark程序在提交时决定的。以计算圆周率Pi的示例程序为例,Spark程序的提交方式是:

$ ./bin/spark-submit --class org.apache.spark.examples.SparkPi \    --master spark://
:
\ lib/spark-examples*.jar \ 10

其中参数--master决定调度方式:如果该参数的值以spark://开头,则使用Spark自己的Master节点来调度;如果其值是yarn-clientyarn-cluster,则是使用YARN来调度,而YARN的具体地址会从前面配置的Hadoop配置目录下的配置文件中得到。

YARN调度有如下两种模式。

  • yarn-cluster模式。YARN会先在集群的某个节点上为Spark程序启动一个称作Master的进程,然后Driver程序会运行在这个Master进程内部,由这个Master进程来启动Driver程序,客户端完成提交的步骤后就可以退出,不需要等待Spark程序运行结束。这是一种非常适合生产环境的运行方式。
  • yarn-client模式。跟yarn-cluster模式类似,这也有一个Master进程,但Driver程序不会运行在Master进程内部,而是运行在本地,只是通过Master来申请资源,直至程序运行结束。这种模式非常适合需要交互的计算。

Spark程序在运行时,大部分计算负载由集群提供,但Driver程序本身也会有一些计算负载。在yarn-cluster模式下,Driver进程在集群中的某个节点上运行,基本不占用本地资源。而在yarn-client模式下,Driver会对本地资源造成一些压力,但优势是Spark程序在运行过程中可以进行交互。所以,建议只在有交互需求的情况下才使用yarn-client模式,其他都使用yarn-cluster模式。

转载地址:http://plmc.baihongyu.com/

你可能感兴趣的文章
mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
查看>>
mysql中出现Unit mysql.service could not be found 的解决方法
查看>>
mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
查看>>
Mysql中各类锁的机制图文详细解析(全)
查看>>
MySQL中地理位置数据扩展geometry的使用心得
查看>>
Mysql中存储引擎简介、修改、查询、选择
查看>>
Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和处理程序的使用示例
查看>>
mysql中实现rownum,对结果进行排序
查看>>
mysql中对于数据库的基本操作
查看>>
Mysql中常用函数的使用示例
查看>>
MySql中怎样使用case-when实现判断查询结果返回
查看>>
Mysql中怎样使用update更新某列的数据减去指定值
查看>>
Mysql中怎样设置指定ip远程访问连接
查看>>
mysql中数据表的基本操作很难嘛,由这个实验来带你从头走一遍
查看>>
Mysql中文乱码问题完美解决方案
查看>>
mysql中的 +号 和 CONCAT(str1,str2,...)
查看>>
Mysql中的 IFNULL 函数的详解
查看>>
mysql中的collate关键字是什么意思?
查看>>
MySql中的concat()相关函数
查看>>
mysql中的concat函数,concat_ws函数,concat_group函数之间的区别
查看>>