hadoop streaming 代码分析

程序的入口在:

HadoopStreaming 。 里面的main函数大概做了两件事:如下:

    StreamJob job = new StreamJob();
    returnStatus = ToolRunner.run(job, args); 

然后调用StreamJob的run(String[] args)方法

 

StreamJob的run方法主要负责

1解析用户的输入参数

1.1 将用户指定的 

2将输入参数转化成 JobConf, 其中主要的是解析 mapper, reducer, 并且设置:

        jobConf_.setMapperClass(PipeMapper.class);

        jobConf_.setMapRunnerClass(PipeMapRunner.class);

        jobConf_.setReducerClass(PipeReducer.class); 

3 submit job

 

4,  PipeMapRunner

    4.1 PipeMapper pipeMapper = (PipeMapper)getMapper();
    4.2pipeMapper.startOutputThreads(output, reporter);

        4.21这里会调用 PipeMapRed.java的startOutputThreads, 他主要起一个线程MROutputThread, 并绑定 output和reporter。 run方法里面:lineReader =  new LineReader((InputStream)clientIn_, job_); 

        4.22   while (lineReader.readLine(line) > 0){ splitKeyVal(answer, line.getLength(), key, val);, 并output.collect(key, val);  

    4.3super.run(input, output, reporter); 

 

 

待续 

 

 

 

posted @ 2011-10-25 20:43  nosaferyao  阅读(250)  评论(0编辑  收藏  举报