• Spark调研笔记第2篇


    上篇笔记的基础上,本文介绍Sparkclient的基本配置及Spark任务提交方式。

    1. Sparkclient及基本配置
    从Spark官网下载的pre-built包中集成了Sparkclient,如与hadoop ver1.x兼容的Sparkclient位于spark-1.3.1-bin-hadoop1/bin文件夹下。
    Sparkclient通常部署在要提交计算任务的机器上。用来向集群提交应用。特别地。client自带的bin/pyspark脚本支持以交互模式向集群提交应用,在交互模式下測试spark python api的运行结果是非常方便的
    Sparkclient的配置文件通常位于conf文件夹下,典型的配置文件列表例如以下所列:

    spark-defaults.conf  // 设置spark master地址、每一个executor进程的内存、占用核数,等等
    spark-env.sh         // spark相关的各种环境变量
    log4j.properties.template    // 设置driver向console输出的日志的等级及格式
    fairscheduler.xml.template   // 设置调度方式
    metrics.properties.template  // 设置spark内部metrics系统。一般无需修改
    slaves               // 设置spark集群中的slave节点(即worker节点)。无需修改
    hadoop-default.xml   // hadoop配置。主要是hdfs的配置
    hadoop-site.xml      // hadoop集群的訪问配置(如master地址)
    注意:因为spark的输入文件通常来自HDFS。故除spark本身的配置文件外,通常还需在conf文件夹下包括hadoop相关的配置文件,如上述演示样例中的hadoop-default.xml和hadoop-site.xml。


    在这些配置文件里,最重要的是spark-defaults.conf,典型配置模板例如以下所看到的。

    # Default system properties included when running spark-submit.
    # This is useful for setting default environmental settings.
    
    # Example:
    # spark.master                     spark://master:7077
    # spark.eventLog.enabled           true
    # spark.eventLog.dir               hdfs://namenode:8021/directory
    # spark.serializer                 org.apache.spark.serializer.KryoSerializer
    # spark.driver.memory              5g
    # spark.executor.extraJavaOptions  -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"
    从模板可见,必须的配置项是spark.master的地址。此外另一些影响Spark执行性能的配置项,限于篇幅,这里不再赘述。

    建议细致阅读Spark Configuration文档。

    2. 怎样向spark集群提交应用
    Sparkclient自带的bin/spark-submit脚本能够用来向集群提交应用,如以下的演示样例命令通过Sparkclient提交了一个基于ALS算法的矩阵分解模型用来实现电影个性化推荐:

    spark-1.3.0.5-bin/bin/spark-submit movie_als_rec.py
    假设应用程序依赖了其他库,则须要将应用程序及其依赖总体打包提交到spark集群

    详细而言,若提交java应用,则可借助sbt或Maven的相关插件打成jar文件再提交(无需包括spark或hadoop相关的依赖,它们由cluster manager提供);若提交Python应用,则可先将应用脚本及其依赖打包成.zip或.egg包。然后借助—py-files參数将zip或egg文件传给spark-submit脚本。
    spark-submit支持的參数列表可从官网文档了解,也可打开spark-submit脚本查看。脚本中解析參数的代码片段例如以下:

    这里对deploy-mode參数做特别说明:
    1) deploy mode分为client和cluster两种。
    2) 若待提交的应用部署的节点与集群worker节点在物理网络上非常近。则以client模式提交应用较为合理。在client模式下,driver由spark应用脚本所在机器节点的spark-submit直接调起。driver针相应用的输入/输出会打印至该节点的终端控制台。
    3) 若spark应用脚本部署节点与spark集群worker节点物理网络距离较远,则以cluster提交能够降低driver和executors间的网络延时(由于正常情况下,应用分解出的若干tasks均会由driver负责调度executor来运行。每次调度均有网络开销)。
    4) 眼下以standalone或mesos方式部署的spark集群不支持cluster模式,基于Python的spark应用提交也不支持cluster模式。



    未完待续,下篇笔记将会介绍Spark集群相应用的调度方式。

    【參考资料】
    1. Spark Configuration

    ==================== EOF ===================

  • 相关阅读:
    2016年第9本:系统之美
    2016年第8本:不可思议的心理控制实验
    2016年第7本:非暴力沟通
    用SDWebImage渐变加载图片
    iOS相册、相机、通讯录权限获取
    屏蔽iOS10模拟器海量的垃圾debug信息
    Swift
    Swift
    PlaceholderImageView
    Swift
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5135061.html
Copyright © 2020-2023  润新知