mapreduce使用过程中的常见错误
报错:Application application_1456816082333_0023 failed 2 times due to Error launching appattempt_1456816082333_0023_000002. Got exception: org.apache.hadoop.yarn.exceptions.YarnException: Unauthorized request to start container.
This token is expired. current time is 1456817746086 found 1456817710065
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at org.apache.hadoop.yarn.api.records.impl.pb.SerializedExceptionPBImpl.instantiateException(SerializedExceptionPBImpl.java:152)
at org.apache.hadoop.yarn.api.records.impl.pb.SerializedExceptionPBImpl.deSerialize(SerializedExceptionPBImpl.java:106)
at org.apache.hadoop.yarn.server.resourcemanager.amlauncher.AMLauncher.launch(AMLauncher.java:122)
at org.apache.hadoop.yarn.server.resourcemanager.amlauncher.AMLauncher.run(AMLauncher.java:249)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
. Failing the application.
看错误提示是时间不匹配,应该是datanode和namenode时间不匹配,
用命令:date -s '2018-5-18 12:48:30' +'%F %T' #2018-5-18 12:48:30为将要设定的时间
问题解决!
2.运行worldcount 程序一直报错。说输出目录已经存在!一开始的路径是/wordcount/output 报错already exists,我删除了output 又报错: already exists,最终发现问题所在!
问题出在了打jar的时候已经将main方法打入jar包,所以已经指定了main方法,在hadoop上执行jar包时,就不用重新指定main方法位置。执行命令是hadoop jar wordcount.jar /wordcount/input /wordcount/output
*******************
这里说一下idea打jar包的步骤,如果打jar失败时可以这么尝试