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

    你可能感兴趣的文章
    nodejs开发公众号报错 40164,白名单配置找不到,竟然是这个原因
    查看>>
    Nodejs异步回调的处理方法总结
    查看>>
    NodeJS报错 Fatal error: ENOSPC: System limit for number of file watchers reached, watch ‘...path...‘
    查看>>
    nodejs支持ssi实现include shtml页面
    查看>>
    Nodejs教程09:实现一个带接口请求的简单服务器
    查看>>
    nodejs服务端实现post请求
    查看>>
    nodejs框架,原理,组件,核心,跟npm和vue的关系
    查看>>
    Nodejs概览: 思维导图、核心技术、应用场景
    查看>>
    nodejs模块——fs模块
    查看>>
    Nodejs模块、自定义模块、CommonJs的概念和使用
    查看>>
    nodejs生成多层目录和生成文件的通用方法
    查看>>
    nodejs端口被占用原因及解决方案
    查看>>
    Nodejs简介以及Windows上安装Nodejs
    查看>>
    nodejs系列之express
    查看>>
    nodejs系列之Koa2
    查看>>
    Nodejs连接mysql
    查看>>
    nodejs连接mysql
    查看>>
    NodeJs连接Oracle数据库
    查看>>
    nodejs配置express服务器,运行自动打开浏览器
    查看>>
    NodeMCU教程 http请求获取Json中文乱码解决方案
    查看>>