2015-11-27 66 views
1

我有以下的功能,我需要實現:如何從另一個程序運行hadoop jar?

public void CreateMRJob(String jobInputLocation, String jobJarLocation); 

這似乎相當簡單和重複的問題,但我想在一個單獨的文件執行工作的初始化(WPMampReduce.java爲附在下面),因爲用戶將被允許編輯它的一些部分。這就是我的意思是,當我說初始化工作在一個單獨的文件:

// WPMapReduce.java 
public class WPMapReduce { 

    public static void main(String[] args) throws Exception { 
    Configuration conf = new Configuration(); 

    Job job = Job.getInstance(conf, "WPMapReduce"); 

    job.setSpeculativeExecution(false); 
    job.setReduceSpeculativeExecution(false); 
    job.setJarByClass(WPMapReduce.class); 
    job.setOutputKeyClass(Text.class); 
    job.setOutputValueClass(Text.class); 
    job.setNumReduceTasks(1); 
    job.setMapperClass(Map.class); 
    job.setReducerClass(Reduce.class); 
    job.setSpeculativeExecution(false); 
    job.setReduceSpeculativeExecution(false); 
    job.setInputFormatClass(TextInputFormat.class); 
    job.setOutputFormatClass(TextOutputFormat.class); 

    FileInputFormat.addInputPath(job, new Path(args[0])); 
    FileOutputFormat.setOutputPath(job, new Path(args[1])); 

    job.waitForCompletion(true); 
    } 
} 

我不知道我將如何設置的jar文件要運行的作業,然後再從功能CreateMRJob這是工作在不同的文件中。

P.S.我是hadoop的新手,我可能會承擔很多事情。來執行,這將是通過創建在Java中使用的Runtime.exec()來獲得(在Linux或Windows中的MAC或CMD端子)訪問命令行的子過程和設定的參數和運行

回答

1

單程工作。輸出文件可以存儲數據,同時您可以創建管道以在作業運行時從作業中傳輸數據。

0

我覺得你不必創建一個主一個單獨的類,你可以有一個MRSetup類,其中你可以看到一個配置(財產)與所需的參數文件,並準備對象。 同一個對象,你可以在MR-驅動程序,招聘類中使用。

相關問題