错误:java.lang.RuntimeException:java.lang.ClassNotFoundException:类WordCountExample $ Map未找到

时间:2019-08-15 09:53:09

标签: java hadoop

我正在使用ubuntu系统并尝试运行wordcount.jar程序。不幸的是,我遇到以下错误-

错误:java.lang.RuntimeException:java.lang.ClassNotFoundException:类WordCountExample $ Map未找到

我已经更新了类路径-

job.setJarByClass(WordCountExample.class); 和 jobconf.setJarByClass(WordCountExample.class);

没有一项工作。不知道怎么了。请在这方面分享您的外籍人士。

import java.io.IOException;
import java.util.*;

import org.apache.hadoop.fs.Path;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapreduce.*;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;

/ **  * @author http://www.devinline.com  * /

public class WordCountExample {
/* Map class which job will use and execute it map method */
public static class Map extends
Mapper<LongWritable, Text, Text, IntWritable> {
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();

public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String line = value.toString();
StringTokenizer tokenizer = new StringTokenizer(line);
while (tokenizer.hasMoreTokens()) {
word.set(tokenizer.nextToken());
context.write(word, one);
}}}

/* Reduce class which job will use and execute it reduce method */
public static class Reduce extends
Reducer<Text, IntWritable, Text, IntWritable> {

public void reduce(Text key, Iterable<IntWritable> values,
Context context) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
context.write(key, new IntWritable(sum));
}}

public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();

/* Created a job with name wordCountExample */
Job job = Job.getInstance(conf, "wordCountExample");
job.setJarByClass(WordCountExample.class);  

/*
* Handler string and int in hadoop way: for string hadoop uses Text
* class and for int uses IntWritable */
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);

/*
 * Configure map and reducer class, based on which it uses map and
    /* reduce method
     */
job.setMapperClass(Map.class);
job.setReducerClass(Reduce.class);

    /* Input and output format set as TextInputFormat */
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);

    /* addInputPath - passes input file path to job */
FileInputFormat.addInputPath(job, new Path(args[0]));
    /* setOutputPath - passes output path to job */
FileOutputFormat.setOutputPath(job, new Path(args[1]));

    /* Submit the job to the cluster and wait for it to finish. */
System.exit(job.waitForCompletion(true) ? 1 : 0);
}}

hadoop jar /home/nahmed/WordcountSample.jar WordCountExample /user/nahmed/pg20417.txt / user / nahmed / WCoutput 19/08/15 21:31:12 INFO client.RMProxy:通过it066431.massey.ac.nz/130.123.248.83:8050连接到ResourceManager

19/08/15 21:31:12 INFO client.AHSProxy:连接到位于it066431.massey.ac.nz/130.123.248.83:10200的应用程序历史记录服务器 15年8月19日21:31:12 WARN mapreduce.JobResourceUploader:未执行Hadoop命令行选项解析。实施Tool接口并使用ToolRunner执行您的应用程序以对此进行纠正。 2015年8月19日21:31:12警告mapreduce.JobResourceUploader:未设置作业jar文件。可能找不到用户类别。请参见Job或Job#setJar(String)。 15/08/15 21:31:12 INFO input.FileInputFormat:要处理的总输入路径:1 2015年19月18日21:31:12 INFO mapreduce.JobSubmitter:分割数:1 15年8月19日21:31:12信息mapreduce.JobSubmitter:提交作业令牌:job_1562128011754_0026 2015年8月19日21:31:13 INFO mapred.YARNRunner:作业jar不存在。不将任何jar添加到资源列表中。 15年8月19日21:31:13 INFO impl.YarnClientImpl:提交的应用程序application_1562128011754_0026 2015年8月19日21:31:13 INFO mapreduce。工作:跟踪工作的网址:http://it066431.massey.ac.nz:8088/proxy/application_1562128011754_0026/ 2015年8月19日21:31:13 INFO mapreduce。工作:正在运行的工作:job_1562128011754_0026 19/08/15 21:31:17 INFO mapreduce.Job:以超级模式运行的Job job_1562128011754_0026:false 2015年8月19日21:31:17信息mapreduce。工作:地图0%减少0% 2015年8月19日21:31:20 INFO mapreduce。工作:任务ID:try_1562128011754_0026_m_000000_0,状态:失败 错误:java.lang.RuntimeException:java.lang.ClassNotFoundException:类WordCountExample $ Map未找到     在org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2228)     在org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:186)     在org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:745)     在org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)     在org.apache.hadoop.mapred.YarnChild $ 2.run(YarnChild.java:170)     在java.security.AccessController.doPrivileged(本机方法)     在javax.security.auth.Subject.doAs(Subject.java:422)     在org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1866)     在org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:164) 原因:java.lang.ClassNotFoundException:类WordCountExample $ Map未找到     在org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2134)     在org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2226)     ...另外8个

被ApplicationMaster杀死的容器。 集装箱应要求被杀死。退出代码是143 容器退出,退出代码为非零143

19/08/15 21:31:23 INFO mapreduce.Job:任务ID:try_1562128011754_0026_m_000000_1,状态:FAILED 错误:java.lang.RuntimeException:java.lang.ClassNotFoundException:类WordCountExample $ Map未找到     在org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2228)     在org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:186)     在org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:745)     在org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)     在org.apache.hadoop.mapred.YarnChild $ 2.run(YarnChild.java:170)     在java.security.AccessController.doPrivileged(本机方法)     在javax.security.auth.Subject.doAs(Subject.java:422)     在org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1866)     在org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:164) 原因:java.lang.ClassNotFoundException:类WordCountExample $ Map未找到     在org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2134)     在org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2226)     ...另外8个

被ApplicationMaster杀死的容器。 集装箱应要求被杀死。退出代码是143 容器退出,退出代码为非零143

19/08/15 21:31:26 INFO mapreduce.Job:任务ID:try_1562128011754_0026_m_000000_2,状态:FAILED 错误:java.lang.RuntimeException:java.lang.ClassNotFoundException:类WordCountExample $ Map未找到     在org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2228)     在org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:186)     在org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:745)     在org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)     在org.apache.hadoop.mapred.YarnChild $ 2.run(YarnChild.java:170)     在java.security.AccessController.doPrivileged(本机方法)     在javax.security.auth.Subject.doAs(Subject.java:422)     在org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1866)     在org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:164) 原因:java.lang.ClassNotFoundException:类WordCountExample $ Map未找到     在org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2134)     在org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2226)     ...另外8个

被ApplicationMaster杀死的容器。 集装箱应要求被杀死。退出代码是143 容器退出,退出代码为非零143

19/08/15 21:31:31 INFO mapreduce.Job:地图100%减少100% 19/08/15 21:31:31 INFO mapreduce.Job:作业job_1562128011754_0026因状态失败而失败,原因是:任务失败task_1562128011754_0026_m_000000 由于任务失败,作业失败。 failedMaps:1 failedReduces:0

15/08/19 21:31:31 INFO mapreduce.Job:计数器:13     工作柜台         失败的地图任务= 4         杀死减少任务= 1         启动的地图任务= 4         其他本地地图任务= 3         本地数据地图任务= 1         所有地图在占用的插槽中花费的总时间(ms)= 53207         所有设备花费的总时间减少,占用的时隙(ms)= 0         所有地图任务花费的总时间(毫秒)= 7601         所有缩减任务花费的总时间(毫秒)= 0         所有地图任务花费的总vcore-毫秒数= 7601         所有reduce任务花费的总vcore-毫秒数= 0         所有地图任务花费的总兆字节/毫秒= 54483968         所有reduce任务花费的总兆字节毫秒数= 0

1 个答案:

答案 0 :(得分:0)

您有两个嵌套的类:Map和Reduce。该错误表明Java无法找到找到它们。最有可能的jar /home/nahmed/WordcountSample.jar不包含它们。验证执行:

 jar -tf  /home/nahmed/WordcountSample.jar

如果它们不包含在jar中,我认为这是您编译方式的问题。