hadoop+eclipse运行设置报错

来源:互联网 发布:信鸽查询软件下载 编辑:程序博客网 时间:2024/06/05 00:31

    hadoop:2.6.4
    eclipse:mars2


    1、我想尝试一下zai hadoop上跑分布式缓存文件的测试代码。main方法设置如下(我有提前将hadoop上的主要配置文件hdfs-site.xml、core-site.xml等加入到classpath中,其实也可以直接在代码汇总设置conf.set(key,value)):

        Configuration conf=new Configuration();        Job job=Job.getInstance(conf, "mapside");        job.setJarByClass(MapSideJoin.class);        job.addCacheFile(new URI("hdfs://mini01:9000/map/cache/pdts.txt"));        job.setMapperClass(MapSideJoinMapper.class);        job.setMapOutputKeyClass(Text.class);        job.setMapOutputValueClass(NullWritable.class);        FileInputFormat.setInputPaths(job, new Path(args[0]));        FileOutputFormat.setOutputPath(job, new Path(args[1]));        //不需要reducer阶段的话要设置reducer数量为0        job.setNumReduceTasks(0);        System.exit(job.waitForCompletion(true)?0:1);

    但是这样是不能运行的,报错情况如下:

2017-09-18 17:08:46,111 INFO  [main] client.RMProxy (RMProxy.java:createRMProxy(98)) - Connecting to ResourceManager at mini01/192.168.176.61:80322017-09-18 17:08:46,545 WARN  [main] mapreduce.JobResourceUploader (JobResourceUploader.java:uploadFiles(64)) - Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this.2017-09-18 17:08:46,567 WARN  [main] mapreduce.JobResourceUploader (JobResourceUploader.java:uploadFiles(171)) - No job jar file set.  User classes may not be found. See Job or Job#setJar(String).2017-09-18 17:08:46,613 INFO  [main] input.FileInputFormat (FileInputFormat.java:listStatus(281)) - Total input paths to process : 12017-09-18 17:08:46,868 INFO  [main] mapreduce.JobSubmitter (JobSubmitter.java:submitJobInternal(199)) - number of splits:12017-09-18 17:08:46,989 INFO  [main] mapreduce.JobSubmitter (JobSubmitter.java:printTokens(288)) - Submitting tokens for job: job_1505719302308_00032017-09-18 17:08:47,126 INFO  [main] mapred.YARNRunner (YARNRunner.java:createApplicationSubmissionContext(336)) - Job jar is not present. Not adding any jar to the list of resources.%JAVA_HOME%/bin/java$JAVA_HOME/bin/java2017-09-18 17:08:47,172 INFO  [main] impl.YarnClientImpl (YarnClientImpl.java:submitApplication(251)) - Submitted application application_1505719302308_00032017-09-18 17:08:47,204 INFO  [main] mapreduce.Job (Job.java:submit(1301)) - The url to track the job: http://mini01:8088/proxy/application_1505719302308_0003/2017-09-18 17:08:47,205 INFO  [main] mapreduce.Job (Job.java:monitorAndPrintJob(1346)) - Running job: job_1505719302308_00032017-09-18 17:08:55,368 INFO  [main] mapreduce.Job (Job.java:monitorAndPrintJob(1367)) - Job job_1505719302308_0003 running in uber mode : false2017-09-18 17:08:55,371 INFO  [main] mapreduce.Job (Job.java:monitorAndPrintJob(1374)) -  map 0% reduce 0%2017-09-18 17:09:00,459 INFO  [main] mapreduce.Job (Job.java:printTaskEvents(1453)) - Task Id : attempt_1505719302308_0003_m_000000_0, Status : FAILEDError: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.ywj.mr.mapsidejoin.MapSideJoin$MapSideJoinMapper not found    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2154)    at org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:186)    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:742)    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163)    at java.security.AccessController.doPrivileged(Native Method)    at javax.security.auth.Subject.doAs(Subject.java:415)    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1656)    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)Caused by: java.lang.ClassNotFoundException: Class com.ywj.mr.mapsidejoin.MapSideJoin$MapSideJoinMapper not found    at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2060)    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2152)    ... 8 more2017-09-18 17:09:05,509 INFO  [main] mapreduce.Job (Job.java:printTaskEvents(1453)) - Task Id : attempt_1505719302308_0003_m_000000_1, Status : FAILEDError: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.ywj.mr.mapsidejoin.MapSideJoin$MapSideJoinMapper not found    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2154)    at org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:186)    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:742)    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163)    at java.security.AccessController.doPrivileged(Native Method)    at javax.security.auth.Subject.doAs(Subject.java:415)    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1656)    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)Caused by: java.lang.ClassNotFoundException: Class com.ywj.mr.mapsidejoin.MapSideJoin$MapSideJoinMapper not found    at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2060)    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2152)    ... 8 more2017-09-18 17:09:11,549 INFO  [main] mapreduce.Job (Job.java:printTaskEvents(1453)) - Task Id : attempt_1505719302308_0003_m_000000_2, Status : FAILEDError: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.ywj.mr.mapsidejoin.MapSideJoin$MapSideJoinMapper not found    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2154)    at org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:186)    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:742)    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163)    at java.security.AccessController.doPrivileged(Native Method)    at javax.security.auth.Subject.doAs(Subject.java:415)    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1656)    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)Caused by: java.lang.ClassNotFoundException: Class com.ywj.mr.mapsidejoin.MapSideJoin$MapSideJoinMapper not found    at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2060)    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2152)    ... 8 more2017-09-18 17:09:18,590 INFO  [main] mapreduce.Job (Job.java:monitorAndPrintJob(1374)) -  map 100% reduce 0%2017-09-18 17:09:18,606 INFO  [main] mapreduce.Job (Job.java:monitorAndPrintJob(1387)) - Job job_1505719302308_0003 failed with state FAILED due to: Task failed task_1505719302308_0003_m_000000Job failed as tasks failed. failedMaps:1 failedReduces:02017-09-18 17:09:18,676 INFO  [main] mapreduce.Job (Job.java:monitorAndPrintJob(1392)) - Counters: 9    Job Counters         Failed map tasks=4        Launched map tasks=4        Other local map tasks=3        Data-local map tasks=1        Total time spent by all maps in occupied slots (ms)=15874        Total time spent by all reduces in occupied slots (ms)=0        Total time spent by all map tasks (ms)=15874        Total vcore-milliseconds taken by all map tasks=15874        Total megabyte-milliseconds taken by all map tasks=16254976

    反正就是提醒你找不到XXX类,但是你明明就是有呀,这个时候就得换一个方式运行。提前得将代码打成jar包放在“E:/”,然后将代码替换成下面这样。

        job.setJarByClass(MapSideJoin.class);        换成        job.setJar("E:/map.jar");

    这样就可以了,跑本地跑集群出现了类似的问题都可以这样解决


祈祷:仙女不会有BUG

原创粉丝点击