首页 / 浏览问题 / 组件GIS / 问题详情
超图FAQ:【Spark组件】iObjects for Spark产品使用yarn集群,将255w数据以dsf格式写入hdfs系统时报错如下:failed to create_file because this file lease is currently owned by dfsclient_nonmapreduce,怎么解决?
44,106EXP 2023年07月26日
【Spark组件】iObjects for Spark产品使用yarn集群,将255w数据以dsf格式写入hdfs系统时报错如下:failed to create_file because this file lease is currently owned by dfsclient_nonmapreduce,怎么解决?

1个回答

【问题原因】 写小数据量没问题。大数据量才会出现该问题,是因为hdfs写文件是多进程写,不同hdfs client写文件时需要申请文件锁,也就是hadoop的lease租约机制。由于写的数据量大,hadoop yarn集群默认在task任务的map或reduce阶段开启了预测机制来分配资源或进程,进而导致文件写时导致文件输出流异常关闭,客户端进程无法创建文件。 当出现数据倾斜时,mapreduce 阶段会出现掉队者,掉队者是指那些跑的很慢但是最终可以执行成功的任务。此时 mapreduce 的推测机制会生效,可以识别那些跑的任务比较慢的任务,但是不会清理掉队者的任务,而是会产生另一个等效的任务作为备份,并使用首先完成的那个任务的结果,这种技术称为推测执行(speculative execution)。 这种机制是为了保证 mapreduce 的执行效率,但是当操作 hdfs 文件时,如果出现同时写操作,hdfs 的 lease 管理员是不允许同时被两个写入程序占用的。 【解决办法】 将mapred-site.xml配置文件里的mapreduce.map.speculative和 mapreduce.reduce.speculative参数的值均改为false,重启hadoop即可解决。
44,106EXP 2023年07月26日
热门文章
关注我们
...