Как отправить mapreduce задание удаленно - PullRequest
0 голосов
/ 01 апреля 2019

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

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

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

Я очень хочу разобраться, спасибо!

...