我正在进入Spark的世界。我使用Spark v1.5.0(cdh5.5.1)。我运行一个Spark作业,读取大小在30MB到150MB之间的.gz文件,压缩因子大约为20。我在50个执行者中处理了大约300个。我在纱线客户端模式下使用Yarn。作业首先从文件中读取数据并将其转换为RDD[List[String]]
(简单的spark map
)。
我发现我的工作失败是因为“某人”因为SO question而杀死了我的遗嘱执行人,但要找出谁是我从日志中获得的唯一错误(所有容器合并{{}}并非易事。我使用stdout
命令获得的{1}}和stderr
日志是:
yarn log
我怀疑Yarn杀死了他们,因为他们可能占用的内存比预留的多。我设法通过增加16/02/12 08:28:00 INFO rdd.NewHadoopRDD: Input split: hdfs://xxx:8020/user/mjost/file001.gz:0+39683663
16/02/12 08:28:38 ERROR executor.CoarseGrainedExecutorBackend: RECEIVED SIGNAL 15: SIGTERM
来解决这个问题,但我想理解为什么Yarn会杀死它们以更好地处理这种情况。我的问题: