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

    你可能感兴趣的文章
    OSCACHE介绍
    查看>>
    SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum
    查看>>
    OSChina 周五乱弹 ——吹牛扯淡的耽误你们学习进步了
    查看>>
    SQL--mysql索引
    查看>>
    OSChina 周四乱弹 ——程序员为啥要买苹果手机啊?
    查看>>
    OSChina 周日乱弹 —— 2014 年各种奇葩评论集合
    查看>>
    OSChina 技术周刊第十期,每周技术抢先看!
    查看>>
    OSError: no library called “cairo-2“ was foundno library called “cairo“ was foundno library called
    查看>>
    OSError: [WinError 193] %1 不是有效的 Win32 应用程序。
    查看>>
    OSGi与Maven、Eclipse PlugIn的区别
    查看>>
    Osgi环境配置
    查看>>
    OSG——选取和拖拽
    查看>>
    OSG中找到特定节点的方法(转)
    查看>>
    OSG学习:C#调用非托管C++方法——C++/CLI
    查看>>
    OSG学习:几何体的操作(一)——交互事件、简化几何体
    查看>>
    OSG学习:几何体的操作(二)——交互事件、Delaunay三角网绘制
    查看>>
    OSG学习:几何对象的绘制(一)——四边形
    查看>>
    OSG学习:几何对象的绘制(三)——几何元素的存储和几何体的绘制方法
    查看>>
    OSG学习:几何对象的绘制(二)——简易房屋
    查看>>
    OSG学习:几何对象的绘制(四)——几何体的更新回调:旋转的线
    查看>>