你好,
這個問題之前出現過,但是我試了所有的方法都沒有用。
我在EMR上運行了一個Pig腳本。這個腳本的結果大約有500個mapper和20個reducer。當我使用c3.4xlarge實體運行腳本時,我發現在同樣的機器上卻只有2個mapper。我想增加增加到16個mapper。
我使用Ruby CLI創建了EMR簇。下面是我的命令:
elastic-mapreduce --create --name "Test pig" \
--visible-to-all-users \
--num-instances 3 \
--bootstrap-action s3://elasticmapreduce/bootstrap-actions/install-ganglia \
--bootstrap-action="s3://elasticmapreduce/bootstrap-actions/configure-hadoop" \
--args "-m,mapred.tasktracker.map.tasks.maximum=16,-m,mapred.tasktracker.map.tasks.maximum=16,-m,mapred.tasktracker.reduce.tasks.maximum=16" \
--master-instance-type "c3.4xlarge" \
--slave-instance-type "c3.4xlarge" \
--pig-script \
--args s3://my-bucket/pig/myscript.pig \
--pig-versions 0.11.1.1 --ami-version 3.0.4
我還試過改變任務存盤的位置。但是沒有成功。我在Hadoop配置上做了一些設定(我通過UI檢查了這些設定),但是我還是只能看到2個任務(2個mapper,1個mapper和1個reducer或者2個reducer)在運行。奇怪的是,當我在測驗用的m1.xlarge實體上運行時,結果是成功的。
非常感謝你們的幫助。
uj5u.com熱心網友回復:
你好,當你使用AMI 3.x時,你使用的是Hadoop 2 的YARN框架。而mapred.tasktracker.map.tasks.maximum樣式的框架只適用于Hadoop 1。在EMR上的Hadoop 2 YARN框架中,YARN系統以一個更為動態的方式控制map/reducer的位置,因此不用提前宣告位置。
你可以看一下http://hadoop.apache.org/docs/r2.2.0/hadoop-yarn/hadoop-yarn-site/YARN.html中介紹的YARN怎樣介紹設定資源的位置以及它對map/reduce任務的影響。
你還可以看一下下列檔案:
http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/TaskConfiguration_H2.html你可以看到每個實體型別的默認值以及c3.xlarge和m1.xlarge中執行并行任務的不同方式的說明。最主要的不同點在于在m1.xlarge中存盤yarn.nodemanager.resource.memory-mb需要的記憶體比在c3.4xlarge中要多1.5倍。
uj5u.com熱心網友回復:
非常感謝,我會修改mappers/reducers的記憶體值的。另外,我記得我只試了mapreduce.map.java.opts,還沒有試mapreduce.map.memory.mb。我會試著結合它們試一下的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/107028.html
標籤:AWS
上一篇:關于存盤的問題
