Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 运行时未在hadoop-2.0.0-cdh4.3.0 ClassDef中找到mapreduce.lib.chain类_Java_Exception_Hadoop_Mapreduce_Runtime - Fatal编程技术网

Java 运行时未在hadoop-2.0.0-cdh4.3.0 ClassDef中找到mapreduce.lib.chain类

Java 运行时未在hadoop-2.0.0-cdh4.3.0 ClassDef中找到mapreduce.lib.chain类,java,exception,hadoop,mapreduce,runtime,Java,Exception,Hadoop,Mapreduce,Runtime,我正在尝试使用lib的ChainMapper/ChainReducer 对于我使用的编译 javac -Xlint -cp /opt/cloudera/parcels/CDH-4.3.0-1.cdh4.3.0.p0.22/lib/hadoop- mapreduce/*:`hadoop classpath` -d classes *.java 我必须单独包括/opt/cloudera/parcels/CDH-4.3.0-1.cdh4.3.0.p0.22/lib/hadoop-mapreduce/

我正在尝试使用lib的ChainMapper/ChainReducer

对于我使用的编译

javac -Xlint -cp /opt/cloudera/parcels/CDH-4.3.0-1.cdh4.3.0.p0.22/lib/hadoop-
mapreduce/*:`hadoop classpath` -d classes *.java
我必须单独包括/opt/cloudera/parcels/CDH-4.3.0-1.cdh4.3.0.p0.22/lib/hadoop-mapreduce/*因为编译器会提出其他问题。它不包含在hadoop类路径中

当我运行jar时,它编译得很好,它说

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/mapreduce/lib/chain/ChainMapper
    at job_name.main(job_name.java:72)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at 

    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:208)
    Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.mapreduce.lib.chain.ChainMapper
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        ... 6 more
我的驾驶课程如下:

Configuration conf = new Configuration(false);
FileSystem fs = FileSystem.get(conf);
Job job = new Job(conf,"job_name");
job.setJarByClass(SetUpJob.class);
FileInputFormat.setInputPaths(job, new Path(args[1]));
FileOutputFormat.setOutputPath(job, new Path(args[2]));

ChainMapper.addMapper(job,Mapper1.class,LongWritable.class,Text.class,Text.class,IntWritable.class,conf);
ChainReducer.setReducer(job,myReducer.class,LongWritable.class,Text.class,BytesWritable.class,IntWritable.class,conf);
ChainReducer.addMapper(job,Mapper2.class,LongWritable.class,Text.class,Text.class,IntWritable.class,conf);
ChainReducer.setReducer(job,myReducer.class,LongWritable.class,Text.class,BytesWritable.class,IntWritable.class,conf);
ChainReducer.addMapper(job,Mapper3.class,LongWritable.class,Text.class,Text.class,IntWritable.class,conf);
ChainReducer.setReducer(job,myReducer.class,LongWritable.class,Text.class,BytesWritable.class,IntWritable.class,conf);
job.setOutputFormatClass(TextOutputFormat.class);   
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
job.setOutputKeyClass(BytesWritable.class);
job.setOutputValueClass(Text.class);
System.exit(job.waitForCompletion(true) ? 0 : 1);
我以hadoop jar jar_name.jar job_name运行jar


我的运行时环境是否无法找到该类?如何正确设置?

如何运行此jar文件?你能在这里添加这个命令吗?@Ankur更新了我的问题你能粘贴hadoop类路径的输出吗?因为您说过/opt/cloudera/parcels/CDH-4.3.0-1.cdh4.3.0.p0.22/lib/hadoop-mapreduce/*不在hadoop类路径中,所以在运行hadoop jar之前,您可能需要运行export-hadoop\u类路径=/opt/cloudera/parcels/CDH-4.3.0-1.cdh4.3.0.p0.22/lib/hadoop-mapreduce/*。