• 以yarn-client方式提交spark任务,任务一直卡在ACCEPTED状态


    问题背景

    spark是以客户端的方式安装的,并没有启动spark的mesos集群,这时候的spark就相当与hive客户端。
    以local模型和yarn-cluster方式提交任务,都能正确额执行,但是一yarn-client方式就卡在ACCEPTED
    

    问题原因

    在网上查了资料,都说是资源不够用,需要调整yarn.scheduler.capacity.maximum-am-resource-percent从0.1改成0.5,但是我测试数据才几k,集群内存128G,所以我直接排除了这个原因
    后来想到,只有yarn-client方式失败,那问题应该出来driver端。就查看了一下服务器的/etc/hosts,发现diver上有集群其他节点的IP等信息,但是其他节点没有driver配置信息
    导致driver能访问到集群,但是集群其他节点访问不了driver
    所以local模式可以执行
    yarn-cluster上可以执行,是因为客户端只要把任务提交到yarn上,客户端就没有用了。
    但是yarn-client方式,客户端是充当了driver,driver需要一直和集群有通信,所以接收不到resouceManager的反馈。任务就一直卡住了
    

    解决办法:

    有两个方法:
        1、在命令后面加上一个--conf spark.driver.host=$your_ip_address,后面直接填客户端机器的IP地址就行
    
    spark-submit  
           --master yarn 
           --deploy-mode client 
           --num-executors 2 
           --executor-memory 1G 
           --executor-cores 1 
           --conf spark.driver.host=192.168.72.129
            dmp_broadcast_data_day.py
    
        2、在集群其他节点上都把driver服务器的IP加上去。
  • 相关阅读:
    ES 分组排序java实现
    java多线程中的死锁、活锁、饥饿、无锁都是什么鬼?
    Java 虚拟机对锁优化所做的努力
    Docker 核心概念、安装、端口映射及常用操作命令,详细到令人发指。
    20条最最常用的Linux命令讲解
    Linux查看系统配置常用命令
    全面认识Docker和基本指令
    25个深度学习开源数据集
    Docker 简单运用
    一小时学会C# 6
  • 原文地址:https://www.cnblogs.com/goldenSky/p/11178873.html
Copyright © 2020-2023  润新知