如何远程提交mapreduce作业

qrjkbowd  于 2021-05-27  发布在  Hadoop
关注(0)|答案(0)|浏览(370)

我已经建立了一个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);

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

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题