2014-06-14 31 views
14

Amazon EMR Documentation to add steps to cluster, tek bir Elastic MapReduce adımının Hadoop'a birkaç iş gönderebileceğini söylüyor. Ancak, Amazon EMR Documentation for Step configuration, tek bir adımın yalnızca bir yürütme işleminin gerçekleştirilebileceğini önerir (yani, HadoopJarStep, bir HadoopJarStepConfigs dizisinden ziyade bir HadoopJarStepConfig'dir).Elastic MapReduce API'yi kullanarak bir adımda Hadoop'a nasıl birden fazla iş gönderebilirim?

Bir adımda Hadoop'a birkaç iş göndermek için uygun sözdizimi nedir? Amazon EMR Documentation gibi

+0

İş göndermek istediğiniz hangi api (dil) ile belirtebilirsiniz. Küme üzerinde EMR işi göndermek için hangi dilde kod yazmak istediğinizi kastediyorum. – hayat

+0

EMR tarafından okunan iş akışınızı açıklayan bir JSON nesnesi vardır, ne olursa olsun, iş akışınızı tanımlamak için kullandığınız dil önemli değildir - bu, bazı özelliklere göre AWS CLI tarafından JSON'a çevrilir. . Aslında bu özelliğin bir adımda Hadoop'a birden çok iş göndermeyi açıkça kabul etmediğini düşünüyorum, ancak bunu yapmak için script_runner.jar'ı kullanabilirsiniz: http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr -hadoop-script.html. Bunu daha derinden araştıran biri, bir cevap yazabilir. İyi bir tane kabul edeceğim. – verve

+0

Buna bir çözüm buldunuz mu? Hala AWS SDK kullanarak bunu nasıl yapacağımı arıyorum. Javascript API'ları kullanıyorum. – nishant

cevap

3

bir adımda ana örneğinde bazı senaryoyu my_script.sh çalıştırmak için bir küme oluşturabilir, diyor ki:

aws emr create-cluster --name "Test cluster" --ami-version 3.11 --use-default-roles 
    --ec2-attributes KeyName=myKey --instance-type m3.xlarge --instance count 3 
    --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://mybucket/script-path/my_script.sh"] 

my_script.sh böyle bir şey görünmelidir:

#!/usr/bin/env bash 

hadoop jar my_first_step.jar [mainClass] args... & 
hadoop jar my_second_step.jar [mainClass] args... & 
. 
. 
. 
wait 

Bu şekilde, Aynı adımda Hadoop'a birden çok iş gönderilir --- ancak maalesef EMR arayüzü bunları izleyemez. Bunu yapmak için, Hadoop web arayüzlerini here veya ana örneğe ssh gösterildiği gibi kullanmanız ve mapred job ile araştırmanız gerekir.

+0

Küme içine giriş yapmak ve iki hadoop işi çalıştırmak gibi (adım olarak değil, "hadoop jar ..." komutunu kullanarak) Burada ayrıca EMR kümelenmesinde neler olup bittiği, iki işten 1'inin ilerlediği ve diğerinin de% 0'da devam etmeyi beklediği. Http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/FairScheduler.html: Eşit işlerde eşit dağıtmak için uygun olan Adil Zamanlayıcı ile 0Kodging Deneyi – Karshit

+1

@Karshit. Bu, http://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/emr-configure-apps.html adresindeki dokümanların nasıl yapılacağını size bildirdiği yarn-site.xml dosyasını düzenlemenizi gerektirir. – verve

+0

Bunu deneyeceğim ve size bildireceğim. – Karshit