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

参考技术A 你确定你的jar包版本适合吗?有可能是版本问题追问

全部都是hadoop2.2.0中的jar包,main方法直接运行成功,jar包应该不会有什么问题,主要是web项目,项目启动的时候报错,不清楚原因,
已经确认hadoop-common-2.2.0.jar
中存在org/apache/hadoop/conf/Configuration,项目中也能引入org.apache.hadoop.conf.Configuration,

参考技术B 你在你导入的jar中,看看有没有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环境下启动报错,求大神的主要内容,如果未能解决你的问题,请参考以下文章

hadoop2.2配置文件(较简单版)-最新版本

记录一次linux下微服务文件上传失败

Linux安装MongoDB(简单详细)

甘道夫Ubuntu14 server + Hadoop2.2.0环境下Sqoop1.99.3部署记录

hadoop2.2.0伪分布式搭建2--安装JDK

Win7环境下Eclipse连接Hadoop2.2.0