1. 程式人生 > >mapreduce job提交的幾種執行方式

mapreduce job提交的幾種執行方式

總共整理下來有三大類:

  • 叢集上直接通過jar包來呼叫,輸入和輸出檔案必須都存在hdfs叢集上
  • linux環境下,在eclipse中叢集或本地呼叫程式,以及輸入和輸出檔案存於叢集或本地
  • windows環境下,在eclipse中叢集或本地呼叫程式,以及輸入和輸出檔案存於叢集或本地

1、在eclipse中開發好mr程式(windows或linux下都可以),然後打成jar包(wc.jar),上傳到伺服器
執行命令

hadoop jar wc.jar com.elon.bigdata.hadoop.MainClassRunner 

這種方式會將這個job提交到yarn叢集上去執行,程式的輸入和輸出檔案可以存在windows/linux本地或者hdfs叢集上,根據程式中編寫的Path路徑來做選擇。

2、在Linux的eclipse中直接啟動Runner類的main方法,這種方式可以使job執行在本地,也可以執行在yarn叢集

  • 究竟執行在本地還是在叢集,取決於第一個配置引數

    conf.set("mapreduce.framework.name", "yarn");   //設定mapreduce的執行是在local(預設)還是yarn上
    conf.set("yarn.resourcemanager.hostname", "hadoop");    //若在yarn上執行,則指定yarn主機名
    
  • 如果確實需要在eclipse中提交到yarn執行,必須做好以下兩個設定

    • 將mr工程打成jar包(wc.jar),放在工程主目錄下

    • 在工程的main方法中,加入一個配置引數 conf.set(“mapreduce.job.jar”,”wc.jar”);

3、在windows的eclipse中執行本地模式,步驟為:

  • a、在windows中找一個地方放一份hadoop的安裝包,並且將其bin目錄配到環境變數中
  • b、根據windows平臺的版本(32?64?win7?win8?),替換掉hadoop安裝包中的本地庫(bin,lib)
  • c、mr程式的工程中不要有引數mapreduce.framework.name的設定

4、在windows的eclipse中執行main方法來提交job到叢集執行,比較麻煩

  • a、類似於方式3中所描述的對本地庫相容性進行改造
  • b、修改YarnRunner這個類