我正在尝试运行一个servlet(QueryServlet) - 使用Tomcat 8-将一个名为“ArqOnHadoop2”的作业提交给hadoop 2.6.0 ......最后一个是使用/ usr / local中的单个节点设置来配置的夹。 如果我从命令行启动它,这项工作有效,但是,当我尝试从netbeans执行以下代码时,我收到“HTTP状态500 - 无法初始化群集。请检查您的配置mapreduce.framework.name和相应的服务器地址。 “
Configuration config = new Configuration();
config.addResource(new Path("/usr/local/hadoop-2.6.0/etc/hadoop/core-site.xml"));
config.addResource(new Path("/usr/local/hadoop-2.6.0/etc/hadoop/hdfs-site.xml"));
config.addResource(new Path("/usr/local/hadoop-2.6.0/etc/hadoop/yarn-site.xml"));
config.addResource(new Path("/usr/local/hadoop-2.6.0/etc/hadoop/mapred-site.xml"));
config.set("fs.hdfs.impl", org.apache.hadoop.hdfs.DistributedFileSystem.class.getName());
config.set("yarn.resourcemanager.address","master:8032");
config.set("mapreduce.framework.name","yarn");
config.set("fs.defaultFS","hdfs://master:9000");
//input query parameter as string
config.set(ArqReducerConstants.MY_QUERY,args[0]);
Job job = Job.getInstance(config);
job.setJarByClass(QueryServlet.class);
//input number of lines for mapper parameter as int, used to reduce number of splits and run map() method quickly
String N=args[4];
int n=Integer.parseInt(N);
job.getConfiguration().setInt(NLineInputFormat.LINES_PER_MAP, n);
job.setMapperClass(MapperDoesNothing.class);
job.setMapOutputKeyClass(NullWritable.class);
job.setMapOutputValueClass(TripleWritable.class);
job.setReducerClass(QueryReducer.class);
job.setInputFormatClass( BlockedNTriplesInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
String in="hdfs://master:9000"+args[1];
String out="hdfs://master:9000"+args[2];
//input and output paths parameters
FileInputFormat.setInputPaths(job, new Path(in));
FileOutputFormat.setOutputPath(job, new Path(out));
job.waitForCompletion(true);
//其中args
只是带有一些输入参数的String数组的名称..
hadoop或.xml文件没有问题;
权限没有问题,因为我在hdfs-site.xml中禁用了它:dfs.permission.enables = false;
我的hadoop文件夹的权限也没有问题因为我使用了chmod -R 777
;
那么......我的项目错过了什么来获得目标?我需要帮助......
提前致谢, 门。