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