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