运行时显示映射器 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;

}