我正在尝试从客户端运行一个map reduce程序(widows-7),这是map reduceclass:
Configuration conf = new Configuration();
conf.addResource(new Path("C:\app\hadoop-2.0.0-cdh4.3.0\etc\hadoop\core-site.xml"));
conf.addResource(new Path("C:\app\hadoop-2.0.0-cdh4.3.0\etc\hadoop\hdfs-site.xml"));
conf.set("fs.defaultFS", "hdfs://host:8020");
conf.set("mapred.job.tracker", "host:8021");
Job job = new Job(conf, "mapRed");
job.setMapperClass(MapClass.class);
//job.setInputFormatClass(org.apache.hadoop.mapreduce.lib.input.TextInputFormat.class);
int numreducers = 1;
job.setNumReduceTasks(numreducers);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
Path inp = new Path("/data/test");
FileInputFormat.addInputPath(job, inp);
FileOutputFormat.setOutputPath(job, new Path("/data"));
System.exit(job.waitForCompletion(true) ? 0 : 1);
此程序正在抛出异常:
13/12/14 08:27:52 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Exception in thread "main" java.lang.RuntimeException: java.lang.InstantiationException
at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:128)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2307)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:87)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2342)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2324)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:351)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:163)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:335)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:194)
at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.addInputPath(FileInputFormat.java:368)
at org.gridedge.finalytics.MRTemplate.main(MRTemplate.java:55)
Caused by: java.lang.InstantiationException
at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:126)
... 10 more
我在hadoop map reduce程序中发现了一个类似的问题InstantiationException,我将FileInputFormat更改为TextInputFormat:
TextInputFormat.addInputPath(job, inp);
TextOutputFormat.setOutputPath(job, new Path("/data"));
错误保持不变,并在第FileInputFormat.addInputPath(job, inp);
行引发
正确的配置是在setInputFormat方法中设置TextInputFormat。这一行似乎在您的代码中被注释了。请评论出来,然后尝试使用
文件输入格式.addInputPaths.
要设置输入和输出格式,您可以看到以下几行。
job.setInputFormatClass(TextInputFormat.class);job.setOutputFormatClass(TextOutputFormat.class);
如果你还面临任何错误,请告诉我。