美文网首页
Spark遇到的问题

Spark遇到的问题

作者: 幸运猪x | 来源:发表于2018-08-17 16:32 被阅读0次

    1. No Space Left on the device(临时文件过多)

    今天提交Spark任务时,遇到了java.io.IOException: No space left on device的错误,导致任务无法启动。

    原因:
    Spark计算时,默认会将中间结果、所用到的jar包临时存放到/tmp目录中,当挂载在/tmp目录的磁盘空间不足时,就会报错No Space Left on the device
    解决方法:
    针对这个问题有两个解决思路:

    1. 释放挂载/tmp目录的磁盘的空间,比如删除一些该磁盘无用的文件等
    2. 修改Spark的配置,重新执行临时目录的位置

    此时可以选择修改所有节点的Spark配置,或者只对错误信息中出现节点的Spark配置进行修改。

    vim $SPAKR_HOME/conf/spark-env.sh
    # 修改SPARK_LOCAL_DIRS该属性
    # 指定新的目录
    export SPARK_LOCAL_DIRS=/opt/app/tmp
    

    2. Executor数量问题

    提交Spark任务时,设置了--num-executors属性,但是通过8080端口页面查看执行信息时,发现实际运行executor数量并不是--num-executors所设定的值。
    经过多次修改--num-executors尝试发现,实际运行executor确实不受--num-executors控制。

    原因:
    经过产看官方文档发现--num-executors该属性只有在YARN模式下有效。

    The --num-executors option to the Spark YARN client controls how many executors it will allocate on the cluster

    我提交任务的命令为(standalone模式):

    bin/spark-submit \
    --num-executors 10 \
    --master spark://master:7077 --driver-memory 4G --executor-memory 2G \
    --deploy-mode client \
    --executor-cores 4 \
    /opt/app/Application.jar HelloWorld
    

    standalone模式会根据每台worker上分配的cores来确定本节点上需要启动的executor的个数。也就是说某个节点可能会启动2个或多个executor。
    解决方法:
    这需要两个参数来进行控制:--executor-corestotal-executor-cores
    --executor-cores代表每个executor所占用core数量。
    --total-executor-cores代表所提交应用所占用总core数量。
    假设有4台Worker,node1剩余8个core,其他三台剩余3个core,向这个集群提交如下命令:

    bin/spark-submit \
    --num-executors 10 \
    --master spark://master:7077 --driver-memory 4G --executor-memory 2G \
    --deploy-mode client \
    --executor-cores 2 \
    --total-executor-cores 10 \
    /opt/app/Application.jar HelloWorld
    
    1. 此时会遍历每个Worker,第一轮遍历后,每个Worker否符合启动一个executor,这是已经分配了8个core,每台Worker都运行了一个executor。
    2. 然后继续遍历可用资源,进行下一轮分配,只有node1可以符合启动executor,于是最后两个core分配到node1上。最后达到了标准的--total-executor-cores 8

    这样在node1上有两个executor上运行,而其他节点只有一个executor。
    因此standalone模式下,executor的数量主要由--executor-cores--total-executor-cores这两个参数决定。

    相关文章

      网友评论

          本文标题:Spark遇到的问题

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