美文网首页
123、Spark核心编程进阶之standalone部署细节以及

123、Spark核心编程进阶之standalone部署细节以及

作者: ZFH__ZJ | 来源:发表于2019-01-16 15:16 被阅读0次

    standalone部署细节以及相关参数详解

    这里主要介绍下spark部署过程中的一些细节

    配置集群中的worker节点

    首先第一点,如果你想将某台机器部署成standalone集群架构中的worker节点(会运行worker daemon进程)
    那么你就必须在那台机器上部署spark安装包
    配置conf/slaves文件
    在conf/salves文件中,哪些机器是作为worker节点的,可以配置你要在哪些机器上启动worker进程
    默认情况下,没有conf/slaves这个文件,只有一个conf/slaves.template,而且还是空的
    此时,就只是在当前主节点上启动一个master进程和一个worker进程,此时就是master进程和worker进程在一个节点上,也就是伪分布式部署
    你得去手动将slaves.template拷贝为一份slaves文件,然后需要手动去编辑conf/slaves文件中的内容
    此时,在conf/slaves文件中,你可以编辑要作为worker节点的机器,比如说hostname,或者ip地址,都可以,一个机器是一行
    配置以后,所有的节点上,spark部署安装包中,都得去拷贝一份这个conf/slaves文件
    这里master机器和worker机器之间的访问时通过linux ssh方式进行的,所以要配置多个机器之间的ssh免密码连接

    conf/spark-env.sh

    spark-env.sh文件,它的地位,就类似于hadoop中的core-site.xml、hdfs-site.xml等等
    应该说是spark中最核心的一份配置文件
    这份文件,可以对整个spark的集群部署,各个master和worker进程的相应的行为,进行充分和细节化的配置
    看三个参数

    1. SPARK_MASTER_IP
      指定master进程所在的机器的ip地址
    2. SPARK_MASTER_PORT
      指定master监听的端口号(默认是7077)
    3. SPARK_MASTER_WEBUI_PORT
      指定master web ui的端口号(默认是8080)

    跟上篇文章,单独启动master和worker进程的命令行参数,作用,是一样的
    sbin/start-master.sh --port 7078,类似这种方式,可以指定一样的配置属性,可以在spark-evn.sh中就去配置好
    但是有时呢,可能你会遇到需要临时更改配置,并启动master或worker进程的情况
    此时就比较适合,用sbin/start-master.sh这种脚本的命令行参数,来设置这种配置属性
    但是通常来说呢,还是推荐在部署的时候,通过spark-env.sh来设定
    脚本命令行参数通常用于临时的情况

    SPARK_MASTER_OPTS

    SPARK_MASTER_OPTS,设置master的额外参数,使用"-Dx=y"设置各个参数
    比如说export SPARK_MASTER_OPTS="-Dspark.deploy.defaultCores=1"

    参数名 默认值 含义
    spark.deploy.retainedApplications 200 在spark web ui上最多显示多少个application的信息
    spark.deploy.retainedDrivers 200 在spark web ui上最多显示多少个driver的信息
    spark.deploy.spreadOut true 资源调度策略,spreadOut会尽量将application的executor进程分布在更多worker上,适合基于hdfs文件计算的情况,提升数据本地化概率;非spreadOut会尽量将executor分配到一个worker上,适合计算密集型的作业
    spark.deploy.defaultCores 无限大 每个spark作业最多在standalone集群中使用多少个cpu core,默认是无限大,有多少用多少
    spark.deploy.timeout 60 单位秒,一个worker多少时间没有响应之后,master认为worker挂掉了

    SPARK_WORKER_OPTS

    SPARK_WORKER_OPTS,worker的额外参数,使用"-Dx=y"设置各个参数

    参数名 默认值 含义
    spark.worker.cleanup.enabled false 是否启动自动清理worker工作目录,默认是false
    spark.worker.cleanup.interval 1800 单位秒,自动清理的时间间隔,默认是30分钟
    spark.worker.cleanup.appDataTtl 7 * 24 * 3600 默认将一个spark作业的文件在worker工作目录保留多少时间,默认是7天

    其他参数

    就是说,有些master和worker的配置,可以在spark-env.sh中部署时即配置,但是也可以在start-slave.sh脚本启动进程时命令行参数设置
    但是命令行参数的优先级比较高,会覆盖掉spark-env.sh中的配置
    比如说,上一篇我们的实验,worker的内存默认是1g,但是我们通过--memory 500m,是可以覆盖掉这个属性的
    SPARK_LOCAL_DIRS,spark的工作目录,包括了shuffle map输出文件,以及持久化到磁盘的RDD等
    SPARK_WORKER_PORT,worker节点的端口号,默认是随机的
    SPARK_WORKER_WEBUI_PORT,worker节点的web ui端口号,默认是8081
    SPARK_WORKER_CORES,worker节点上,允许spark作业使用的最大cpu数量,默认是机器上所有的cpu core
    SPARK_WORKER_MEMORY,worker节点上,允许spark作业使用的最大内存量,格式为1000m,2g等,默认最小是1g内存
    SPARK_WORKER_INSTANCES,当前机器上的worker进程数量,默认是1,可以设置成多个,但是这时一定要设置SPARK_WORKER_CORES,限制每个worker的cpu数量
    SPARK_WORKER_DIR,spark作业的工作目录,包括了作业的日志等,默认是spark_home/work
    SPARK_DAEMON_MEMORY,分配给master和worker进程自己本身的内存,默认是1g
    SPARK_DAEMON_JAVA_OPTS,设置master和worker自己的jvm参数,使用"-Dx=y"设置各个参数
    SPARK_PUBLISC_DNS,master和worker的公共dns域名,默认是没有的

    spark相关命令

    列出spark所有的启动和关闭shell脚本
    sbin/start-all.sh 根据配置,在集群中各个节点上,启动一个master进程和多个worker进程
    sbin/stop-all.sh 在集群中停止所有master和worker进程
    sbin/start-master.sh 在本地启动一个master进程
    sbin/stop-master.sh 关闭master进程
    sbin/start-slaves.sh 根据conf/slaves文件中配置的worker节点,启动所有的worker进程
    sbin/stop-slaves.sh 关闭所有worker进程
    sbin/start-slave.sh 在本地启动一个worker进程

    相关文章

      网友评论

          本文标题:123、Spark核心编程进阶之standalone部署细节以及

          本文链接:https://www.haomeiwen.com/subject/qkipdqtx.html