博客
关于我
关于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/

你可能感兴趣的文章
MyEclipse用(JDBC)连接SQL出现的问题~
查看>>
mt-datetime-picker type="date" 时间格式 bug
查看>>
myeclipse的新建severlet不见解决方法
查看>>
MyEclipse设置当前行背景颜色、选中单词前景色、背景色
查看>>
Mtab书签导航程序 LinkStore/getIcon SQL注入漏洞复现
查看>>
myeclipse配置springmvc教程
查看>>
MyEclipse配置SVN
查看>>
MTCNN 人脸检测
查看>>
MyEcplise中SpringBoot怎样定制启动banner?
查看>>
MyPython
查看>>
MTD技术介绍
查看>>
MySQL
查看>>
MySQL
查看>>
mysql
查看>>
MTK Android 如何获取系统权限
查看>>
MySQL - 4种基本索引、聚簇索引和非聚索引、索引失效情况、SQL 优化
查看>>
MySQL - ERROR 1406
查看>>
mysql - 视图
查看>>
MySQL - 解读MySQL事务与锁机制
查看>>
MTTR、MTBF、MTTF的大白话理解
查看>>