Hadoop을 사용하는 Java 프로그램을 작성했습니다. "java -jar prog.jar"를 사용하여 명령 줄에서 프로그램을 실행하면 독립 실행 형 모드로 실행된다는 것을 알 수 있습니다. JobTracker 및 TaskTracker 데몬이 내 프로그램이 성공적으로 실행될 필요가 없기 때문에 알 수 있습니다. "hadoop jar prog.jar"(map/reduce 데몬을 해제)를 사용하여 프로그램을 실행하면 당연히 작동하지 않습니다.Hadoop Java 프로그램은 항상 독립 실행 형 모드로 실행됩니다.
가상 배포 모드에서 Java 프로그램을 실행하고 싶지만 구성 파일을 찾을 수 없다는 느낌이 들었습니다. 나는 "java -cp /usr/hadoop-1.1.1/conf -jar prog.jar"로 설정 파일을 찾았지만 여전히 주사위가 없다는 것을 지적하기 위해이 파일을 실행 해 보았습니다.
classpath가 잘못되었거나 잘못된 것처럼 느껴집니다. 나는 어떤 no appreciated이라도 고맙다. 감사합니다,
MJ
다음은 구성 개체 내 작업 시작 코드의 조각입니다.
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);
내가 수동으로 config.addResource 같은 설정 파일을 추가하면 내가 발견 (새 경로 ("코어를 site.xml")) ; 다음 그것은 잘 작동합니다. –
'bin/hadoop' 스크립트는 환경을 설정합니다 (classpath, config 파일 경로 등). 'bin/hadoop jar'는 메인 클래스를 호출하는'core/org/apache/hadoop/util/RunJar.java'를 호출합니다. 'bin/hadoop jar' 명령을 사용한다면 리소스를 수동으로 추가 할 필요가 없습니다. 선호하는 방법이라고 생각합니다. – ericson
내가하려는 것은 작업을 시작할 수있는 웹 인터페이스가있는 Java 서비스를 만드는 것입니다. 작업이 완료되면 서비스에서 결과를 다시 보냅니다. bin/hadoop jar는 나에게 적절하지 않은 것처럼 보였다. –