Hadoop
运行mapreduce时出现的错误:
1:org.apache.hadoop.mapreduce.lib.input.InvalidInputException: **Input path does not exist: hdfs://Master:9000/user/hadoop/inputpath**
org.apache.hadoop.mapreduce.lib.input.FileInputFormat.singleThreadedListStatus(FileInputFormat.java:323)
出错原因:目录不存在
解决办法:
分布式环境中创建input目录
hdfs dfs -mkdir -p /user/hadoop
hdfs dfs -mkdir input
hdfs dfs -put ./*.xml input
hadoop jar ...........
-------------------------------------------------------------------------------------------------------------------------------
2:14/04/29 02:45:07 INFO mapreduce.Job: Job job_1398704073313_0021 failed with state FAILED due to: Application application_1398704073313_0021 failed 2 times due to Error launching appattempt_1398704073313_0021_000002. Got exception: org.apache.hadoop.yarn.exceptions.YarnException: Unauthorized request to start container.
This token is expired. current time is 1398762692768 found 1398711306590
出错的原因: namenode,datanode时间同步问题
解决办法:
多个datanode与namenode进行时间同步,在每台服务器执行如下两个命令进行同步
1)输入“cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime”
2)输入“ntpdate pool.ntp.org”
---------------------------------------------------------------------------------------------------------------------------------
3:Error: java.lang.RuntimeException: java.lang.NoSuchMethodException: com.zry.mr.scoresum.Score.<init>()
出错原因:没有这个方法
初始化方法。 但是这个方法呢,我们没有。
序列化之后,是通过反射技术来做,会有一个初始化的过程,就要求就一个空的构造方法。
解决办法:
在我们自定义的类中:(定义的序列化作用的类)
def this(){ //构造出一个空的方法
this(0,0,0)
}