복붙노트

[HADOOP] mapred 작업을 실행하려고하면서 하둡, 어떻게 3part 항아리를 포함하는

HADOOP

mapred 작업을 실행하려고하면서 하둡, 어떻게 3part 항아리를 포함하는

우리가 알다시피, 새로운 필요가 작업 항아리에 필요한 모든 클래스를 포장하고 서버에 업로드합니다. 그것은 내가 단지 밖으로 종속성으로 내 수업을 포장 할 수 있도록지도 붉은 작업을 실행 포함 thirdpart 항아리를 지정하는 방법이 있는지 알고, 그래서 느린.

PS는 (내가 여기에. 거기에 "-libjar"명령이다,하지만 난 그것을 사용하는 방법을 알아낼 수 없습니다있는 링크입니다 http://blog.cloudera.com/blog/2011/01/how-to-include - 제 3 자 - 도서관 -에 - 네 -지도 - 줄일 - 일 /)

해결법

  1. ==============================

    1.사람들은 일반적인 옵션이라고합니다. 그래서, 사람들을 지원하기 위해, 당신의 작업은 도구를 구현해야합니다.

    사람들은 일반적인 옵션이라고합니다. 그래서, 사람들을 지원하기 위해, 당신의 작업은 도구를 구현해야합니다.

    같은 작업을 실행 -

    hadoop jar yourfile.jar [mainClass] args -libjars <comma seperated list of jars>
    

    편집하다:

    도구를 구현하려면 및 구성을 확장합니다, 당신은 당신의 맵리 듀스 응용 프로그램에서 같은 것을 할 -

    public class YourClass extends Configured implements Tool {
    
          public static void main(String[] args) throws Exception {
             int res = ToolRunner.run(new YourClass(), args);
             System.exit(res);
          }
    
          public int run(String[] args) throws Exception
          {
            //parse you normal arguments here.
    
            Configuration conf = getConf();
            Job job = new Job(conf, "Name of job");
    
            //set the class names etc
    
            //set the output data type classes etc
    
            //to accept the hdfs input and outpur dir at run time
            FileInputFormat.addInputPath(job, new Path(args[0]));
            FileOutputFormat.setOutputPath(job, new Path(args[1]));
    
            return job.waitForCompletion(true) ? 0 : 1;
        }
    }
    
  2. ==============================

    2.나를 위해 내가 인수 전에 -libjar 옵션을 지정했다. 그렇지 않으면이 인수로 간주되었다.

    나를 위해 내가 인수 전에 -libjar 옵션을 지정했다. 그렇지 않으면이 인수로 간주되었다.

  3. from https://stackoverflow.com/questions/19029760/hadoop-how-to-include-3part-jar-while-try-to-run-mapred-job by cc-by-sa and MIT license