2016-05-03 154 views
-1

有人可以解釋我在hadoop的情況下配置的用途是什麼?Hadoop作業配置

而且也給我解釋一下下面的代碼:

// Create a new JobConf 
JobConf job = new JobConf(new Configuration(), MyJob.class); 

// Specify various job-specific parameters  
job.setJobName("myjob"); 

FileInputFormat.setInputPaths(job, new Path("in")); 
FileOutputFormat.setOutputPath(job, new Path("out")); 

job.setMapperClass(MyJob.MyMapper.class); 
job.setCombinerClass(MyJob.MyReducer.class); 
job.setReducerClass(MyJob.MyReducer.class); 

job.setInputFormat(SequenceFileInputFormat.class); 
job.setOutputFormat(SequenceFileOutputFormat.class); 
+0

這個用法真的取決於Mapper和Reducer在做什麼。 –

+0

是的,這是真的,但在高端想知道什麼配置真的意味着 – Srinivas

回答

2

什麼是Hadoop中的情況下,使用的配置?

如果我明白你問的是正確的,那麼你配置一個Job來知道在你運行MapReduce作業時該怎麼做。

您必須指定輸入&輸出數據類型和位置以及作爲映射器和縮減器的類。

這裏,例如,您正在取得一些"in"目錄的內容並寫出到"out"目錄。通常,這些通過命令行通過new Path(args[0])new Path(args[1])獲得。

FileInputFormat.setInputPaths(job, new Path("in")); 
FileOutputFormat.setOutputPath(job, new Path("out")); 

在這裏,你的MapReduceJob

job.setMapperClass(MyJob.MyMapper.class); 
job.setCombinerClass(MyJob.MyReducer.class); 
job.setReducerClass(MyJob.MyReducer.class); 

在這裏,您指定輸入和輸出格式設置相應的類。這些必須分別對應於映射器和縮減器的輸入和輸出。

job.setInputFormat(SequenceFileInputFormat.class); 
job.setOutputFormat(SequenceFileOutputFormat.class); 

作業還可以設置一個人類可讀的名稱,以便您可以在ResourceManager中跟蹤它。

job.setJobName("myjob"); 
+0

謝謝你!但是我們將路徑定義如下:Path p1 = Paths.get(「in」);然後我沒有看到路徑。我研究的是Path使用路徑類來使用他們的方法 – Srinivas

+0

我並不關心你如何定義它,我只是說你通常不應該硬編碼這些值,除非你總是讀入和寫出相同的目錄。通過在命令行使用參數,可以在任何數據集上運行相同的作業。 –