hadoop执行 报错

hadoop执行 报错Error: java.io.IOException: Initialization of all the collectors failed. Error in last collector was :interface javax.xml.soap.Text

Initialization of all the collectors failed  : 初始化所有收集器失败


2016-03-12 20:08:46,874 WARN org.apache.hadoop.hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /tmp/hadoop-root/mapred/system/jobtracker.info could only be replicated to 0 nodes, instead of 1  : dfsclient:数据流 ,远程异常:只能复制到0个节点,而不是1


Caused by: java.lang.ClassCastException: interface javax.xml.soap.Text  :

在运行mapreduce作业时报这个异常

这个异常的大概意思是不认识Text

检查源代码,最后发现在一个类中没有导入import org.apache.hadoop.io.Text;

而是import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils.Text;(这个貌似是在用IDE的提示功能时点错了。。。)


hadoop执行 报错

端口冲突----

查看进程-----

ps -ef |grep java

杀死所有-----

kill -9  ...


Failed to set setXIncludeAware(true) for parser

遇到此问题通常是jar包冲突的问题。

一种情况是我们向java的lib文件夹加入我们自己的jar包导致hadoop引用jar包的冲突。解决方式就是删除我们自己向系统加入的jar包,又一次配置。将自己的jar包或者外部jar放入系统文件夹会在编译程序时带来方便,可是这不是一种好习惯,我们应该通过改动CLASSPATH的方式指定jar包路径。


  • Cannot lock storage /tmp/hadoop-root/dfs/name. The directory isalready locked

这个错误通常是我们在某次配置失败后。hadoop创建该文件夹,锁定之后失败退出造成的。解决方式就是删除tmp文件夹下hadoop创建的相关文件夹。然后又一次配置。


  • ls: Cannot access .: No such file or directory.

当在hadoop中执行ls命令时常会出现这个错误,这个错误是指hdfs文件系统中当前文件夹为空,并非指本地文件系统中当前文件夹为空。当我们使用hdfs文件系统时,会默认进入/user/username下,这个文件夹不存在于本地文件系统,而是由hdfs内部管理的一个文件夹。

当我们第一次使用ls命令时,/user/username下是空的。所以会提示上述错误。当我们加入新的文件之后就不再报该错。


  • Call to localhost/127.0.0.1:9000 failed on connection exception

当在伪分布式环境下执行wordcount演示样例时,假设报上述错误说明未启动hadoop,利用start-all.sh脚本启动hadoop环境。


  • jps命令没有datanode执行

一个原因是执行文件系统格式化时,会在namenode数据文件夹中保存一个current/VERSION文件,记录namespaceID,标识了所格式化的namenode的版本号。

假设我们频繁的格式化namenode。那么datanode中保存的current/VERSION文件仅仅是你第一次格式化时保存的namenode的ID,因此就会造成datanode与namenode之间的id不一致。

解决方式是清空hadoop的tmp文件,重新启动格式化hdfs。 
Retrying connect to server: localhost/127.0.0.1:9000 
说明hadoop的namenode进程没有启动,导致与namenode无法连接而报错。能够先执行stop-all.sh脚本停止hadoop,然后调用start-all.sh重新启动hadoop。


将写好的jar包,放到linux上后,执行hadoop jar hadoopTest.jar test.XXXCount  input output 后,

运行时,会报下面的警告

WARN mapred.JobClient: No job jar file set.

User classes may not be found. See JobConf(Class)or JobConf#setJar(String).
之后就会报错:
java.lang.RuntimeException: java.lang.ClassNotFoundException: xxxxMapper
解决:-----(加上job.setJarByClass(WordCount.class之后还是运行不对);

在Configuration里加上配置,将需要用到的jar通过配置加进来:conf.set("mapred.jar", "/home/test/hadoopTest.jar");


上一篇:Oracle 执行报错表空间或临时表空间不足,降低水位线方法


下一篇:Hive 启动报错