Как отправить задание mapreduce удаленно

#java #hadoop #mapreduce #hadoop-yarn

#java #hadoop #mapreduce #hadoop-yarn

Вопрос:

Я настроил кластер hadoop2 и могу отправить пример задания wordcount, используя команду «hadoop jar». Теперь я хочу объединить кластер hadoop с веб-приложением Java, что означает, что я могу отправить задание, файл jar которого уже существует в HDFS, в кластер. Мой вопрос: 1. Должен ли я настроить среду hadoop на моем веб-сервере? 2. Должен ли я настраивать среду hadoop в коде моего приложения Java? 3.Is есть официальное руководство по удаленной отправке в apache?

Я новичок в hadoop, я использую hadoop 2.9.2.

Я просто знаю код о примере wordcount, и я упаковываю исходный код в jar с помощью maven в Windows, но я все еще не могу запустить его с помощью «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);
  

Я действительно хочу разобраться с этим, спасибо!

Комментарии:

1. Пожалуйста, покажите всю свою hadoop jar команду.

2. @BenWatson команда имеет ошибку «hadoop jar word-count-1.0-SNAPSHOT.jar Количество слов /zhangke/data/data.txt /output1», я упаковываю word-count-1.0-SNAPSHOT.jar через maven

3. Вам не хватает полного пакета для WordCount

4. @BenWatson Спасибо! Это действительно работает! И я действительно хочу знать решение трех вопросов, которые я упомянул выше, вы знаете ответ? Наиболее важным является то, как запустить задание, файл jar которого существует в hdfs.