如何远程提交mapreduce作业

时间:2019-04-01 08:46:55

标签: java hadoop mapreduce yarn

我已经设置了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);

我真的很想解决这个问题,谢谢!

0 个答案:

没有答案