Hadoop2.2简单上传文件,web环境下启动报错,求大神
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop2.2简单上传文件,web环境下启动报错,求大神相关的知识,希望对你有一定的参考价值。
String home = "hdfs://192.168.0.212:8020/";
String src = "/root/桌面/111.jpg";
String dst = "/6.jpg";
InputStream in = new BufferedInputStream(new FileInputStream(src));
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(URI.create(home), conf);
OutputStream out = fs.create(new Path(home+dst));
IOUtils.copyBytes(in, out, 4096, true);
System.out.println("success");
这段代码在main方法中执行没有问题,顺利通过,但是将这段代码放到Servlet的doGet方法中启动时出问题,
应该跟http://www.hadoopor.com/thread-1724-1-1.html是一个问题,根据这篇文章最下面的方法,将那三个jar包加到CLASSPATH解决不了,还是抛异常,
主要异常如下
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/test]]
Caused by: java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration
全部都是hadoop2.2.0中的jar包,main方法直接运行成功,jar包应该不会有什么问题,主要是web项目,项目启动的时候报错,不清楚原因,
已经确认hadoop-common-2.2.0.jar
中存在org/apache/hadoop/conf/Configuration,项目中也能引入org.apache.hadoop.conf.Configuration,
看了 有这个class
追答uri = new URI(home);
Configuration conf = new Configuration();
fs = FileSystem.get(uri, conf);
这样试试。我之前好像也遇到过类似的问题
看看这有没有用,http://pan.baidu.com/s/1dDy5EBB
参考技术C 放到web项目的WebRoot/WEB-INF/lib下追问hadoop-common-2.2.0.jar已经引入了,用的跟在main方法是一样的jar包
追答试试放到web容器的lib下呢
追问全部放进去了
参考技术D 我没有用这个hadoop上传文件失败报错(put: Cannot create file/eclipse.desktop._COPYING_. Name node is in safe mode.)
解决办法:
离开安全模式方法:执行以下命令即可
bin/hadoop dfsadmin -safemode leave
若不处理安全模式的话,web服务无法启动,dfsadmin report结果异常
------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
补充知识:原文链接:https://blog.csdn.net/hongweigg/article/details/7185328
说明Hadoop的NameNode处在安全模式下。
那什么是Hadoop的安全模式呢?
在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结
束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入
安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。
以上是关于Hadoop2.2简单上传文件,web环境下启动报错,求大神的主要内容,如果未能解决你的问题,请参考以下文章