我编写了一个使用hadoop的java程序。我使用“java-jarprog.jar”从命令行执行我的程序,我可以看到它在独立模式下运行。我可以说,因为jobtracker和tasktracker守护进程不需要运行,我的程序就可以成功执行。如果我使用“hadoopjarprog.jar”(关闭map/reduce守护进程)执行我的程序,它自然不起作用。
我想让我的java程序以伪分布式模式执行,但我感觉它找不到配置文件。我尝试将其作为“java-cp/usr/hadoop-1.1.1/conf-jarprog.jar”执行,以便将其指向配置文件所在的位置,但仍然没有骰子。
我觉得类路径有问题。我是个笨蛋,所以任何帮助都很感激。谢谢,
美赞臣
下面是我用配置对象启动作业的代码片段。
Configuration config = new Configuration();
Job job = new Job(config);
job.setJobName("Test");
job.setJarByClass(MyMapper.class);
job.setMapperClass(MyMapper.class);
job.setReducerClass(MyReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
job.setMapOutputKeyClass(LongWritable.class);
job.setMapOutputValueClass(Text.class);
job.setInputFormatClass(MyInputFormat.class);
FileInputFormat.addInputPath(job, new Path("hdfs://hadoop0.hq.net:54310/" + saFileName));
FileOutputFormat.setOutputPath(job, new Path("hdfs://hadoop0.hq.net:54310/" + saFileName + "-output"));
job.waitForCompletion(true);
1条答案
按热度按时间liwlm1x91#
我使用“java-jarprog.jar”从命令行执行我的程序,我可以看到它在独立模式下运行。
这不是真的。这个
java -jar
命令用于运行独立的java应用程序。要运行hadoop作业,需要使用hadoop jar
就像你说的那样。在运行任何任务之前,需要在环境中安装hadoop。如果你还没有准备好,你可以按照这个职位或官方文件的步骤。您可以通过运行hadoop发行版提供的一些示例来验证设置:
如果上述命令成功运行,则可以尝试自己的任务。
编辑:您可以使用
Runtime.exec
调用hadoop jar
具体如下: