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的提示功能时点错了。。。)
端口冲突----
查看进程-----
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");