提问者:小点点

Apache Spark-ERROR RetryingBlockFetcher:开始获取1个未完成块时出现异常


我正在使用以下配置在集群中运行Spark Job:

--master yarn --deploy-mode client
--executor-memory 4g 
--executor-cores 2 
--driver-memory 6g 
--num-executors 12 

当我在驱动程序中采集数据样本时,问题发生在作业中。运行的命令如下:

rddTuplesA.sample(false, 0.03, 261).collect().forEach((tuple) ->
                    //build histogram...
            ); 

rddTuplesA对象是JavaRDD

作业抛出以下错误:

然而,当我得到一个较小的样本时,这项工作非常完美。

rddTuplesA.sample(false, 0.01, 261).collect().forEach((tuple) ->
                        //build histogram...
                ); 

是否有任何配置参数需要更改以使作业运行?看来问题与网络有关。此外,如果这是由于内存问题而发生的,那么Driver上不会出现与内存相关的错误吗?类似于:

java. lang.OutOfMemoryError:超过GC开销限制


共1个答案

匿名用户

终于解开了谜团。这个问题与集群网络有关。具体来说,我在每台机器(节点)的 /etc/hosts文件中添加了它们的本地ip映射到它们的主机名(作为别名),如下所示:

192.168.0.1 snf-1234
192.168.0.2 snf-1235
...

看起来,当样本很大时,驱动程序试图建立一个由于ipv4和主机名之间缺少匹配而无法实现的连接。