运行时显示映射器 class 未找到异常
Runtime shows mapper class not found exception
地图 0% 减少 0%
15/02/03 07:30:28 信息 mapreduce.Job:任务 ID:attempt_1422885720829_0097_m_000000_0,状态:失败
错误:java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.cognizant.pr2.TroubleMapper 未找到
在 org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1720)
在 org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:186)
在 org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:721)
在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:339)
在 org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:162)
在 java.security.AccessController.doPrivileged(本机方法)
在 javax.security.auth.Subject.doAs(Subject.java:396)
在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491)
在 org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:157)
原因:java.lang.ClassNotFoundException: Class org.cognizant.pr2.TroubleMapper 未找到
在 org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1626)
在 org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1718)
... 还有 8 个
15/02/03 07:30:32 信息 mapreduce.Job:任务 ID:attempt_1422885720829_0097_m_000000_1,状态:失败
错误:java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.cognizant.pr2.TroubleMapper 未找到
在 org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1720)
在 org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:186)
在 org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:721)
在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:339)
在 org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:162)
在 java.security.AccessController.doPrivileged(本机方法)
在 javax.security.auth.Subject.doAs(Subject.java:396)
在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491)
在 org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:157)
原因:java.lang.ClassNotFoundException: Class org.cognizant.pr2.TroubleMapper 未找到
在 org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1626)
在 org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1718)
... 还有 8 个
15/02/03 07:30:35 信息 mapreduce.Job:任务 ID:attempt_1422885720829_0097_m_000000_2,状态:失败
错误:java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.cognizant.pr2.TroubleMapper 未找到
在 org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1720)
在 org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:186)
在 org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:721)
在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:339)
在 org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:162)
在 java.security.AccessController.doPrivileged(本机方法)
在 javax.security.auth.Subject.doAs(Subject.java:396)
在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491)
在 org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:157)
原因:java.lang.ClassNotFoundException: Class org.cognizant.pr2.TroubleMapper 未找到
在 org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1626)
在 org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1718)
... 还有 8 个
15/02/03 07:30:39 信息 mapreduce.Job:地图 100% 减少 100%
15/02/03 07:30:39 信息 mapreduce.Job:作业 job_1422885720829_0097 失败,状态为 FAILED,原因是:任务失败 task_1422885720829_0097_m_000000
由于任务失败,作业失败。 failedMaps:1failedReduces:0
15/02/03 07:30:39 信息 mapreduce.Job:计数器:6
工作柜台
失败的地图任务=4
启动地图任务=4
其他本地地图任务=3
data-local map tasks=1
所有地图在占用插槽中花费的总时间(毫秒)=8357
所有reduce占用slots的总时间(ms)=0
重新编译您的 java 代码并确保您拥有 运行 mr jobs 的所有 jar。
"su - hdfs"
export HADOOP_CLASSPATH=`hbase classpath`
#### export HADOOP_CLASSPATH=/etc/hbase/conf:/usr/lib/hbase/*:jar
和运行MR代码!
我得到了这个问题的解决方案,就像我们可以将 jar 直接放在这个路径下:/usr/lib/hadoop-mapreduce 目录和 运行 来自这个路径本身的 cmd。现在它将能够访问所需的。我希望它会有所帮助。谢谢大家 :-)
我使用下面的驱动程序 class 代码来解决这个问题。
public int run(String[] args) throws Exception {
Configuration conf=new Configuration();
Job job=Job.getInstance(conf, "MavenSample");
***job.setJarByClass(DriverClass.class);***
job.setMapperClass(MapperClass.class);
job.setReducerClass(ReducerClass.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.setInputPaths(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
return job.waitForCompletion(true)?0:1;
}
地图 0% 减少 0% 15/02/03 07:30:28 信息 mapreduce.Job:任务 ID:attempt_1422885720829_0097_m_000000_0,状态:失败 错误:java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.cognizant.pr2.TroubleMapper 未找到 在 org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1720) 在 org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:186) 在 org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:721) 在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:339) 在 org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:162) 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491) 在 org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:157) 原因:java.lang.ClassNotFoundException: Class org.cognizant.pr2.TroubleMapper 未找到 在 org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1626) 在 org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1718) ... 还有 8 个
15/02/03 07:30:32 信息 mapreduce.Job:任务 ID:attempt_1422885720829_0097_m_000000_1,状态:失败 错误:java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.cognizant.pr2.TroubleMapper 未找到 在 org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1720) 在 org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:186) 在 org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:721) 在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:339) 在 org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:162) 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491) 在 org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:157) 原因:java.lang.ClassNotFoundException: Class org.cognizant.pr2.TroubleMapper 未找到 在 org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1626) 在 org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1718) ... 还有 8 个
15/02/03 07:30:35 信息 mapreduce.Job:任务 ID:attempt_1422885720829_0097_m_000000_2,状态:失败 错误:java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.cognizant.pr2.TroubleMapper 未找到 在 org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1720) 在 org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:186) 在 org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:721) 在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:339) 在 org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:162) 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491) 在 org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:157) 原因:java.lang.ClassNotFoundException: Class org.cognizant.pr2.TroubleMapper 未找到 在 org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1626) 在 org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1718) ... 还有 8 个
15/02/03 07:30:39 信息 mapreduce.Job:地图 100% 减少 100% 15/02/03 07:30:39 信息 mapreduce.Job:作业 job_1422885720829_0097 失败,状态为 FAILED,原因是:任务失败 task_1422885720829_0097_m_000000 由于任务失败,作业失败。 failedMaps:1failedReduces:0
15/02/03 07:30:39 信息 mapreduce.Job:计数器:6 工作柜台 失败的地图任务=4 启动地图任务=4 其他本地地图任务=3 data-local map tasks=1 所有地图在占用插槽中花费的总时间(毫秒)=8357 所有reduce占用slots的总时间(ms)=0
重新编译您的 java 代码并确保您拥有 运行 mr jobs 的所有 jar。
"su - hdfs"
export HADOOP_CLASSPATH=`hbase classpath`
#### export HADOOP_CLASSPATH=/etc/hbase/conf:/usr/lib/hbase/*:jar
和运行MR代码!
我得到了这个问题的解决方案,就像我们可以将 jar 直接放在这个路径下:/usr/lib/hadoop-mapreduce 目录和 运行 来自这个路径本身的 cmd。现在它将能够访问所需的。我希望它会有所帮助。谢谢大家 :-)
我使用下面的驱动程序 class 代码来解决这个问题。
public int run(String[] args) throws Exception {
Configuration conf=new Configuration();
Job job=Job.getInstance(conf, "MavenSample");
***job.setJarByClass(DriverClass.class);***
job.setMapperClass(MapperClass.class);
job.setReducerClass(ReducerClass.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.setInputPaths(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
return job.waitForCompletion(true)?0:1;
}