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

相关推荐
物流可信数据空间19 分钟前
可信数据空间+数据入表:华储数据助力数据交易所破解困局,迈向规模流通
大数据
半夏知半秋1 小时前
Elasticsearch 分词器
大数据·学习·elasticsearch·搜索引擎·全文检索
Sui_Network2 小时前
BitGo 通过 LayerZero 将原生 WBTC 引入 Sui
大数据·人工智能·科技·去中心化·区块链
2501_941982052 小时前
赋能销售与客户服务:企业微信外部群 RPA 自动化应用实战
大数据
汽车仪器仪表相关领域2 小时前
SCG-1 增压 + 空燃比二合一仪表:涡轮改装的 “空间杀手” 与 “安全保镖”
大数据·服务器·人工智能·功能测试·安全·汽车·可用性测试
诗旸的技术记录与分享2 小时前
Flink-1.19.0源码详解10-Flink计算资源的申请与调度
大数据·flink
Lenyiin2 小时前
makefile
java·大数据·前端
资深web全栈开发3 小时前
一文讲透 MySQL 崩溃恢复方案设计
大数据·人工智能
山峰哥3 小时前
现代 C++ 的最佳实践:从语法糖到工程化思维的全维度探索
java·大数据·开发语言·数据结构·c++
努力搬砖的咸鱼3 小时前
API 网关:微服务的大门卫
java·大数据·微服务·云原生