argodb自定义函数读取hdfs文件的注意点,避免FileSystem已关闭异常

一、问题描述

一位同学反馈,他写的argo存过中调用了一个自定义函数,函数会加载hdfs上的一个文件,但有些节点会报FileSystem closed异常,同时有时任务会成功,有时会失败。

二、问题分析

argodb的计算引擎是基于spark的定制化引擎,对于自定义函数的调用跟hive on spark的是一致的。udf要通过反射生成实例,然后迭代调用evaluate。通过代码分析,udf在读取完hdfs文件后会关闭FS,这在逻辑上是正确的,那为什么还会出现HDFS文件系统已关闭的异常?难道是Spark的各个不同节点的executor共享了FS(客户端)?顺着这一点,可以查看集群上这个配置项的值,即"fs.hdfs.impl.disable.cache",这个值默认是false(出现性能考虑),但这意味着hdfs文件系统的实现类(DistributedFileSystem)实例是共享、缓存的,在spark不同的executor中一旦有一个任务关闭了fs,那么其它的executor也会受到影响,这也是报fs closed异常的原因,所以将fs.hdfs.impl.disable.cache设置成true,不允许缓存fs。即可解决该问题。

三、问题解决

fs.hdfs.impl.disable.cache=true

相关推荐
GeeLark8 分钟前
#请输入你的标签内容
大数据·人工智能·自动化
智能相对论35 分钟前
2万台?九识无人车车队规模靠谱吗?
大数据
小小王app小程序开发2 小时前
淘宝扭蛋机小程序核心玩法拆解与技术运营分析
大数据·小程序
得物技术2 小时前
从“人治”到“机治”:得物离线数仓发布流水线质量门禁实践
大数据·数据仓库
Data_Journal3 小时前
【无标题】
大数据·服务器·前端·数据库·人工智能
小邓睡不饱耶3 小时前
Sqoop 实战:数据迁移核心案例、优化技巧与企业级落地
hive·hadoop·sqoop
zhangxl-jc4 小时前
StreamPark2.1.7 添加Flink Home 报错 base64 character 2d 解决方法
大数据·flink
峥嵘life4 小时前
Android 16 EDLA测试STS模块
android·大数据·linux·学习
洛阳纸贵4 小时前
JAVA高级工程师--Elasticsearch安装以及内置分词器、IK分词器
大数据·elasticsearch·搜索引擎
186******205314 小时前
项目开发基础知识:从概念到落地的全流程指南
大数据·人工智能