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

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

在Spark Standalone集群中,资源调度主要由Master节点负责。然而,Spark也支持将资源调度交给YARN,这种方式的优势在于YARN支持动态资源调度。与YARN相比,Standalone模式的资源调度较为简单,仅支持固定资源分配策略。具体而言,每个任务预先分配固定数量的core,各个Job按顺序依次分配资源。在资源不足的情况下,任务会被排队等待。这种调度方式更适合单用户场景,但在多用户环境下,由于用户程序的差异较大,可能导致某些用户总是无法获得资源。而YARN的动态资源分配策略能够更好地解决这一问题。

除了为Spark提供调度服务,YARN作为通用的资源调度平台,还可以为其他系统(如Hadoop MapReduce、Hive)提供调度支持。这使得YARN能够统一管理集群上的所有计算负载,避免资源分配的混乱无序。

在Spark Standalone集群部署完成后,配置Spark支持YARN相对简单,主要包含以下两个步骤:

第一步,在conf/spark-env.sh文件中添加配置HADOOP_CONF_DIR,并指向Hadoop集群的配置文件目录,例如:

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

这一配置需要在所有节点上执行。

第二步,重启集群。

值得注意的是,即便没有部署Hadoop集群,Spark程序仍然可以访问HDFS文件。为此,只需添加相应的依赖jar文件,并在Spark程序中以hdfs://开头的完整路径访问HDFS文件即可。然而,这种方式存在一个明显缺点:HDFS与Spark节点是分离的,数据移动成本较高,大多数情况下远高于计算成本。因此,这种访问方式仅适用于小数据量的计算场景。

通过上述部署,Spark可以方便地访问HDFS文件,并在计算过程中尽量将计算任务分布在数据所在的节点上,从而减少因数据移动导致的网络IO开销。

Spark程序的运行调度方式取决于提交时的参数设置。以计算圆周率Pi的示例程序为例,提交方式如下:

$ ./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会在集群的某个节点上启动一个Master进程,Spark Driver程序运行在这个Master进程内部。客户端完成提交后可以立即退出,无需等待Spark程序运行完成。这是生产环境中非常适用的运行方式。

  • yarn-client模式:与yarn-cluster模式类似,但Driver程序不会运行在Master进程内部,而是在本地运行。通过Master节点申请资源,直到程序运行完成。这种模式适合需要交互的计算场景。

  • 在实际应用中,yarn-cluster模式通常是更好的选择,因为它在集群内部运行Driver进程,基本上不占用本地资源。而yarn-client模式则会对本地资源造成一定压力。因此,建议在没有交互需求的情况下优先使用yarn-cluster模式。

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

    你可能感兴趣的文章
    PHP 数组怎么添加一个元素
    查看>>
    PHP 文件上传
    查看>>
    PHP 文件操作
    查看>>
    php 文字弹幕效果代码,HTML5文字弹幕效果
    查看>>
    php 时间日期函数,获取今天开始时间,结束时间
    查看>>
    PHP 构造函数的重载
    查看>>
    php 标准规范
    查看>>
    PHP 浮点型精度运算相关问题
    查看>>
    php 浮点型计算精度问题
    查看>>
    php 特定时间段统计,jpgraph某个时间段的数据统计
    查看>>
    php 生成csv mac下乱码
    查看>>
    php 生成证书 签名及验签
    查看>>
    php 的rsa加密与解密
    查看>>
    PHP 的标准输入与输出
    查看>>
    php 笔记 (早前的,很乱)
    查看>>
    PHP 第一天
    查看>>
    Redis使用量暴增,快速定位有哪些大key在作怪
    查看>>
    php 结课作业答案,北语201803考试批次《PHP》(结课作业)1.pdf
    查看>>
    PHP 统计数据功能 有感
    查看>>
    SpringBoot处理JSON数据
    查看>>