2017-01-12 56 views
0

我在筆記本電腦上構建了一個本地羣集(僞模式)。我在哪裏運行不同的mapreduce命令,如我可以像在本地羣集上一樣在EMR上運行作業

hadoop-streaming -D mapred.output.compress=true \ 
    -D mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec \ 
    -files my_mapper.py,my_reducer.py \ 
    -mapper my_mapper.py \ 
    -reducer my_reducer.py \ 
    -input /aws/input/input_warc.txt \ 
    -output /aws/output 

現在我必須在EMR上運行它。有兩個選項可以使用,一個是控制檯,另一個是aws cli。我想要像上面那樣運行精確的命令。爲此,我想如果我使用EMR master,那麼我應該可以運行這個命令。這是一種正確的方式,還是有這種進步的缺點?

回答

1

是的,你可以通過SSH連接你的集羣並在那裏運行你的作業,但是你也可以使用Step API(http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-steps.html)在主實例上運行任意命令,當然包括像你的例子那樣運行分佈式作業。您可以使用AWS CLI(「aws emr add-step ...」)或在使用「aws emr create-cluster ... --steps ...」創建集羣的過程中向集羣添加步驟,也可以使用AWS SDK(如AWS Java SDK)或使用AWS EMR控制檯。

Step API的一些優勢包括它捕獲每個步驟的輸出以便您可以通過AWS CLI,SDK或AWS Console查看它,還可以檢查步驟的狀態以確定它們何時具有完成。

Step API的一個缺點是當前步驟全部按順序運行,所以不能有多個步驟並行運行。

相關問題