我已经建立了一个hadoop2集群,可以使用“hadoopjar”命令提交wordcount示例作业。现在我想将hadoop集群与javaweb应用结合起来,这意味着我可以将jar文件已经存在于hdfs中的作业提交到集群。我的问题是:1.我应该在web服务器中配置hadoop环境吗?2.我应该在java应用程序代码中配置hadoop环境吗?3.有关于apache中远程提交的官方教程吗?
我是hadoop新手,我使用的是Hadoop2.9.2。
我只知道wordcount示例的代码,我在windows中使用maven将源代码打包到一个jar中,但是我仍然无法使用“hadoop jar”运行它,错误是“exception in thread”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);
我真的很想解决这个问题,谢谢!
暂无答案!
目前还没有任何答案,快来回答吧!