在Hadoop上运行自己的程序,直接出现task failed,根据错误信息,找到关键词:filesystem closed。
参考以下两篇文章,基本可以确定,肯定是我程序中FileSystem.get(conf)生成的filesystem实例是在cache中的实例,所以会被某个线程在某个地方被close了。
http://blog.youkuaiyun.com/chenyi8888/article/details/7284245
http://os.51cto.com/art/201305/394782.htm
解决思路
1,配置Filesystem不缓存,这样每次都会重新创建一个对象而不是从cache中得到实例。
或者2,修改程序,使得每次只能一个线程访问filesystem
本文详细介绍了在使用Hadoop运行程序时遇到Task失败的问题,发现原因是程序中创建的FileSystem实例在缓存中被关闭。通过配置FileSystem不缓存或修改程序确保线程安全,成功解决了问题。
1130

被折叠的 条评论
为什么被折叠?



