云计算-hadoop升级调用FileSystem.get错误
把Hadoop升级以后,调用FileSystem.get会报如下错误:
java.io.IOException: Filesystem closed
at org.apache.hadoop.hdfs.DFSClient.checkOpen(DFSClient.java:297)
at org.apache.hadoop.hdfs.DFSInputStream.close(DFSInputStream.java:426)
at java.io.FilterInputStream.close(FilterInputStream.java:155)
at java.util.zip.InflaterInputStream.close(InflaterInputStream.java:210)
at java.util.zip.GZIPInputStream.close(GZIPInputStream.java:109)
at org.apache.hadoop.io.compress.GzipCodec$GzipInputStream.close(GzipCodec.java:126)
at org.apache.hadoop.util.LineReader.close(LineReader.java:87)
at org.apache.hadoop.mapred.LineRecordReader.close(LineRecordReader.java:214)
at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.close(MapTask.java:218)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:404)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:330)
at org.apache.hadoop.mapred.Child$4.run(Child.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.securit
请问一下是什么原因导致的?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这个问题应该是多线程搜索时出现的,由于每次打开的连接次数太多,导致连接没有关闭。出现上面的错误。
解决办法:
1、在servlet初始化中,加入:
public void init(ServletConfig config) throws ServletException {
try {
this.conf = NutchConfiguration.get(config.getServletContext());
bean = NutchBean.get(config.getServletContext(), this.conf);
} catch (IOException e) {
throw new ServletException(e);
}
MAX_HITS_PER_PAGE = conf.getInt("searcher.max.hits.per.page", -1);
}
2、在web.xml,添加如下代码:
<listener>
<listener-class>org.apache.nutch.searcher.NutchBean$NutchBeanConstructor</listener-class>
</listener>
<servlet>
<servlet-name>Cached</servlet-name>
<servlet-class>org.apache.nutch.servlet.Cached</servlet-class>
</servlet>
3、在自己的servlet中把NutchBean的实例和NutchConfiguration的实例传递过去。保证初始化时只打开一次index。