關(guān)于hadoop中的map過程,我的理解是每一個(gè)map系統(tǒng)會開啟一個(gè)JVM進(jìn)程來處理,map之間相互并行,map函數(shù)內(nèi)串行。這樣的想法是否正確?由于想在hadoop集群上算一個(gè)初始輸入數(shù)據(jù)不多,但是計(jì)算很復(fù)雜的程序,希望通過mapreduce來達(dá)到并行計(jì)算的目的??梢酝ㄟ^job.setNumReduceTasks(0);語句設(shè)置reduce個(gè)數(shù)為0,只使用map來計(jì)算。但是設(shè)置map的個(gè)數(shù)時(shí)遇到了問題:新的API中job沒有類似setNumMapTasks()這樣的方法;在運(yùn)行時(shí)加入?yún)?shù)-Dmapreduce.map.tasks=2這樣的參數(shù)也無效。查過好多資料,好像是說map的個(gè)數(shù)取決于block_size、total_size等參數(shù)。但是都說的是1.x版本的設(shè)置,hadoop2.2.0上并沒有找到mapred.map.tasks、mapred.min.split.size等對應(yīng)的設(shè)置方法。由于我的輸入文件只有一個(gè)文件,而且不算是“大數(shù)據(jù)”,只是單純想在hadoop上實(shí)現(xiàn)并行,所以我希望能夠設(shè)置一個(gè)最少的map數(shù)目,以便能在各個(gè)計(jì)算節(jié)點(diǎn)上并行。請問我應(yīng)該如何設(shè)置?
hadoop 2.2.0 關(guān)于map和reduce的個(gè)數(shù)的設(shè)置
蝴蝶不菲
2019-04-14 09:52:24