我已经设置了hadoop2集群,并且可以使用“ hadoop jar”命令提交wordcount示例作业。现在,我想将hadoop集群与Java Web应用程序结合使用,这意味着我可以将HDFS中已经存在jar文件的作业提交给集群。 我的问题是: 1.我应该在Web服务器中配置hadoop环境吗? 2.我应该在我的Java应用程序代码中配置hadoop环境吗? 3.是否有关于apache中远程提交的官方教程?
我是hadoop的新手,我在使用hadoop 2.9.2。
我只知道有关wordcount示例的代码,我使用Windows中的maven将源代码打包到jar中,但是我仍然无法使用“ hadoop jar”运行它,错误是“线程“ main” java中的异常” .lang.ClassNotFoundException:WordCount”。我现在完全不知道。 这是我的代码:
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://192.168.3.100:9000");
conf.set("mapreduce.framework.name", "yarn");
conf.set("yarn.resourcemanager.hostname", "192.168.3.100");
// conf.set("mapreduce.jobtracker.address", "192.168.3.100:9001");
conf.set("fs.hdfs.impl", org.apache.hadoop.hdfs.DistributedFileSystem.class.getName());
conf.set("fs.file.impl", org.apache.hadoop.fs.LocalFileSystem.class.getName());
// conf.set("yarn.application.classpath", "$HADOOP_CONF_DIR,"
// +"$HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,"
// +"$HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,"
// +"$HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*,"
// +"$YARN_HOME/*,$YARN_HOME/lib/*,"
// +"$HBASE_HOME/*,$HBASE_HOME/lib/*,$HBASE_HOME/conf/*");
Job job = Job.getInstance(conf, "word count");
job.setJarByClass(WordCount.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path("/zhangke/data/data.txt"));
FileOutputFormat.setOutputPath(job, new Path("/output"));
System.exit(job.waitForCompletion(true) ? 0 : 1);
我真的很想解决这个问题,谢谢!