TOMCAT 用 Spring for hadoop 连 HADOOP 并使用MAPREDUCE时发生 MAPPER NOT FIND
目前可以说HADOOP和TOMCAT之间已经通了,HDFS操作比如文件上传,删除都没问题。但是MR就出问题了。目前程序能跑,但是跑的时候报错:
2014-02-13 17:50:30,616 WARN [http-8080-1] conf.Configuration (Configuration.java:warnOnceIfDeprecated(981)) - mapred.output.key.class is deprecated. Instead, use mapreduce.job.output.key.class
2014-02-13 17:50:30,617 WARN [http-8080-1] conf.Configuration (Configuration.java:warnOnceIfDeprecated(981)) - mapred.working.dir is deprecated. Instead, use mapreduce.job.working.dir
2014-02-13 17:50:30,825 INFO [http-8080-1] mapreduce.JobSubmitter (JobSubmitter.java:printTokens(454)) - Submitting tokens for job: job_1392171916215_0091
2014-02-13 17:50:31,246 INFO [http-8080-1] mapred.YARNRunner (YARNRunner.java:createApplicationSubmissionContext(367)) - Job jar is not present. Not adding any jar to the list of resources.
2014-02-13 17:50:31,290 INFO [http-8080-1] client.YarnClientImpl (YarnClientImpl.java:submitApplication(124)) - Submitted application application_1392171916215_0091 to ResourceManager at HADOOP1/172.16.0.137:9080
2014-02-13 17:50:31,354 INFO [http-8080-1] mapreduce.Job (Job.java:submit(1273)) - The url to track the job: http://HADOOP1:8088/proxy/application_1392171916215_0091/
2014-02-13 17:50:31,355 INFO [http-8080-1] mapreduce.Job (Job.java:monitorAndPrintJob(1318)) - Running job: job_1392171916215_0091
2014-02-13 17:50:37,880 INFO [http-8080-1] mapreduce.Job (Job.java:monitorAndPrintJob(1339)) - Job job_1392171916215_0091 running in uber mode : false
2014-02-13 17:50:37,882 INFO [http-8080-1] mapreduce.Job (Job.java:monitorAndPrintJob(1346)) - map 0% reduce 0%
2014-02-13 17:50:41,953 INFO [http-8080-1] mapreduce.Job (Job.java:printTaskEvents(1425)) - Task Id : attempt_1392171916215_0091_m_000000_0, Status : FAILED
Error: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.springforhadoop.mapReduce.MyMapper not found
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1774)
at org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:196)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:715)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:338)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:160)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:155)
Caused by: java.lang.ClassNotFoundException: Class com.springforhadoop.mapReduce.MyMapper not found
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1680)
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1772)
... 8 more
2014-02-13 17:50:46,001 INFO [http-8080-1] mapreduce.Job (Job.java:printTaskEvents(1425)) - Task Id : attempt_1392171916215_0091_m_000000_1, Status : FAILED
Error: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.springforhadoop.mapReduce.MyMapper not found
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1774)
at org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:196)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:715)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:338)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:160)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:155)
Caused by: java.lang.ClassNotFoundException: Class com.springforhadoop.mapReduce.MyMapper not found
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1680)
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1772)
... 8 more
2014-02-13 17:50:50,038 INFO [http-8080-1] mapreduce.Job (Job.java:printTaskEvents(1425)) - Task Id : attempt_1392171916215_0091_m_000000_2, Status : FAILED
Error: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.springforhadoop.mapReduce.MyMapper not found
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1774)
at org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:196)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:715)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:338)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:160)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:155)
Caused by: java.lang.ClassNotFoundException: Class com.springforhadoop.mapReduce.MyMapper not found
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1680)
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1772)
... 8 more
2014-02-13 17:52:32,879 INFO [http-8080-1] mapreduce.Job (Job.java:monitorAndPrintJob(1346)) - map 100% reduce 0%
2014-02-13 17:52:32,885 INFO [http-8080-1] mapreduce.Job (Job.java:monitorAndPrintJob(1359)) - Job job_1392171916215_0091 failed with state FAILED due to: Task failed task_1392171916215_0091_m_000000
Job failed as tasks failed. failedMaps:1 failedReduces:0
2014-02-13 17:52:33,009 INFO [http-8080-1] mapreduce.Job (Job.java:monitorAndPrintJob(1364)) - Counters: 6
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)=10238
Total time spent by all reduces in occupied slots (ms)=0
导致每次任务都失败,其实就是mapper类找不到,但是我甚至已经把MAP类和REDUCE类写到JOB类中了,而且安装网上说的 job.setJarByClass(HellozyxMapRed.class);也设置了,但是还是跑不通。望高手指点。
下面是MAPREDUCE类的源码:
package com.springforhadoop.mapReduce;
import java.io.IOException;
import java.util.Iterator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Service;
import org.springframework.test.context.ContextConfiguration;
@ContextConfiguration("spring/spring3mvc-servlet.xml")
@Service
public class HellozyxMapRed {
private static Log tLog=LogFactory.getLog(HellozyxMapRed.class);
private static final Configuration conf = new Configuration();
@Autowired
private MyInputFormat MyInputFormat;
public MyInputFormat getMyInputFormat() {
return MyInputFormat;
}
public void setMyInputFormat(MyInputFormat myInputFormat) {
MyInputFormat = myInputFormat;
}
public void HellozyxMapRedRun() throws IOException, InterruptedException, ClassNotFoundException{
// ApplicationContext ctx = new ClassPathXmlApplicationContext("/MR/mapreduce.xml");
Path file=new Path("upload/mobile2.txt");
Path outFile=new Path("upload/countResult");
Job job=new Job(conf,"TxtCounter");
job.setJarByClass(HellozyxMapRed.class);
job.setJarByClass(MyMapper.class);
job.setJarByClass(MyReduce.class);
FileInputFormat.addInputPath(job, file);
FileOutputFormat.setOutputPath(job, outFile);
job.setMapperClass(MyMapper.class);
job.setReducerClass(MyReduce.class);
// job.setMapOutputKeyClass(LongWritable.class);
// job.setMapOutputValueClass(Text.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
job.waitForCompletion(true);
}
}
class MyMapper extends Mapper<LongWritable, Text, Text, IntWritable>{
private static Log tLog=LogFactory.getLog(MyMapper1.class);
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException{
tLog.info("_+_+_+_+_+_+ now is map");
// String str1="i am your father, i am the greatest man";
String[] strs=value.toString().split(",");
// String[] strs=str1.split(" ");
for(String str:strs){
context.write(new Text(str), new IntWritable(1));
}
}
}
class MyReduce extends Reducer<Text,IntWritable, Text, IntWritable>{
// private static Logger logger=Logger.getLogger(TxtReducer.class);
private static Log tLog=LogFactory.getLog(MyReduce1.class);
protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException{
tLog.info("++++++++++++++++++start reduce job");
int sum=0;
Iterator<IntWritable> it=values.iterator();
while(it.hasNext()){
IntWritable value=it.next();
sum+=value.get();
tLog.info("key is "+key+" sum is"+sum);
}
context.write(key, new IntWritable(sum));
}
}
相关推荐
2026安卓开发从零实战指南:环境搭建、核心基础与避坑干货(适配新版Android_Studio).pdf
2026安卓开发从零实战指南:环境搭建、核心基础与避坑干货(适配新版Android_Studio).pdf
如何实现科研成果转化率的有效提升与技术市场精准对接?.docx
如何实现科研成果转化率的有效提升与技术市场精准对接?
基于PID控制的ABS汽车防抱死制动系统、车轮滑移率+最优滑移率Carsim和Simulink联合仿真(带参考文献)
内容概要:本文档系统研究了基于PID控制的ABS汽车防抱死制动系统,聚焦于车轮滑移率与最优滑移率的动态控制问题,采用Carsim与Simulink联合仿真平台构建高精度车辆动力学模型与控制系统。研究详细阐述了ABS的工作机理,通过设计PID控制器实时调节制动压力,确保车轮滑移率稳定在最优区间,从而最大化轮胎与路面间的摩擦力,提升制动效能与行车安全性。文档涵盖了完整的建模流程、控制策略设计、仿真验证方法及参数整定过程,并提供了详实的参考文献支持,增强了研究的可复现性与工程应用价值。; 适合人群:具备车辆工程、自动化或控制理论等相关专业背景,熟悉MATLAB/Simulink与Carsim仿真环境的研究生、科研人员及汽车行业技术研发工程师。; 使用场景及目标:①用于ABS控制算法的教学讲解与科研实验;②支撑车辆制动性能优化、主动安全系统开发等实际工程应用;③为相关学术论文撰写、课题复现与技术创新提供理论依据与技术参考。; 阅读建议:建议读者结合所提供的仿真模型与参考文献,逐步运行并调试代码,重点关注滑移率计算逻辑、PID参数整定方法及联合仿真的数据交互机制,同时可尝试引入模糊控制、自适应控制等先进算法进行对比分析,以深入掌握ABS系统的控制精髓与优化路径。
高校如何利用技术转移数据分析优化成果转化路径?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
MATLAB采用改进的PSO实现AUV三维路径规划,配备自适应惯性权重、距离演化因子和跳出机制。.zip
MATLAB采用改进的PSO实现AUV三维路径规划,配备自适应惯性权重、距离演化因子和跳出机制。.zip


