EmrActivity - AWS Data Pipeline

EmrActivity

Executa um cluster do EMR.

O AWS Data Pipeline usa um formato diferente para etapas do que o Amazon EMR. Por exemplo, o AWS Data Pipeline utiliza argumentos separados por vírgulas depois do nome JAR no campo de etapa EmrActivity. O exemplo a seguir mostra uma etapa formatada para o Amazon EMR, seguida por uma etapa equivalente para o AWS Data Pipeline:

s3://example-bucket/MyWork.jar arg1 arg2 arg3
"s3://example-bucket/MyWork.jar,arg1,arg2,arg3"

Exemplos

Veja a seguir um exemplo deste tipo de objeto. Este exemplo usa versões mais antigas do Amazon EMR. Verifique este exemplo para se alinhar com a versão do cluster do Amazon EMR que você está usando.

Esse objeto faz referência a três outros objetos definidos por você no mesmo arquivo de definição de pipeline. MyEmrCluster é um objeto EmrCluster e MyS3Input e MyS3Output são objetos S3DataNode.

nota

Neste exemplo, você pode substituir o campo step pela string de cluster que quiser. Ela pode ser um script do Pig, um cluster de streaming Hadoop, seu próprio JAR personalizado (incluindo seus respectivos parâmetros) e assim por diante.

Hadoop 2.x (AMI 3.x)

{ "id" : "MyEmrActivity", "type" : "EmrActivity", "runsOn" : { "ref" : "MyEmrCluster" }, "preStepCommand" : "scp remoteFiles localFiles", "step" : ["s3://mybucket/myPath/myStep.jar,firstArg,secondArg,-files,s3://mybucket/myPath/myFile.py,-input,s3://myinputbucket/path,-output,s3://myoutputbucket/path,-mapper,myFile.py,-reducer,reducerName","s3://mybucket/myPath/myotherStep.jar,..."], "postStepCommand" : "scp localFiles remoteFiles", "input" : { "ref" : "MyS3Input" }, "output" : { "ref" : "MyS3Output" } }
nota

Para transmitir argumentos para um aplicativo em uma etapa, é necessário especificar a Região no caminho do script, conforme mostrado no exemplo a seguir. Além disso, talvez seja necessário escapar os argumentos transmitidos. Por exemplo, se você usar script-runner.jar para executar um script de shell e quiser passar argumentos para o script, precisará escapar as vírgulas que os separam. O slot de etapa a seguir ilustra como fazer isso:

"step" : "s3://eu-west-1.elasticmapreduce/libs/script-runner/script-runner.jar,s3://datapipeline/echo.sh,a\\\\,b\\\\,c"

Esta etapa usa script-runner.jar para executar o script de shell echo.sh e passa a, b e c como um único argumento para o script. O primeiro caractere de escape é removido do argumento resultante. Por isso, talvez você precise realizar o escape novamente. Por exemplo, se você tivesse File\.gz como argumento no JSON, poderia realizar o escape dele usando File\\\\.gz. No entanto, como o primeiro escape é descartado, você precisa usar File\\\\\\\\.gz .

Sintaxe

Campos de invocação de objetos Descrição Tipo de slot
schedule Esse objeto é invocado durante a execução de um intervalo de programação. Especifique uma referência de programação para outro objeto para definir a ordem de execução de dependência desse objeto. É possível satisfazer esse requisito definindo explicitamente uma programação no objeto, por exemplo, ao especificar "schedule": {"ref": "DefaultSchedule"}. Na maioria dos casos, é melhor colocar a referência de programação no objeto de pipeline padrão para que todos os objetos herdem essa programação. Como alternativa, se o pipeline tiver uma árvore de programações (outras programações dentro de uma programação principal), você poderá criar um objeto principal que tenha uma referência de programação. Para obter mais informações sobre o exemplo de configurações opcionais de programação, consulte https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html. Objeto de referência, como “schedule”:{"ref":"myScheduleId"}

Grupo obrigatório (um dos seguintes é obrigatório) Descrição Tipo de slot
runsOn Cluster do Amazon EMR no qual o trabalho será executado. Objeto de referência, como “runsOn”:{"ref":"myEmrClusterId"}
workerGroup O grupo de operadores. Isso é usado para tarefas de roteamento. Se você fornecer um valor de runsOn e workerGroup existir, será ignorado.workerGroup String

Campos opcionais Descrição Tipo de slot
attemptStatus Status mais recente da atividade remota. String
attemptTimeout Tempo limite para conclusão do trabalho remoto. Se definida, uma atividade remota não concluída dentro do prazo definido poderá ser executada novamente. Período
dependsOn Especifique a dependência em outro objeto executável. Objeto de referência, como “dependsOn”:{"ref":"myActivityId"}
failureAndRerunMode Descreve o comportamento do nó do consumidor quando as dependências apresentam falhas ou são executadas novamente. Enumeração
input O local dos dados de entrada. Objeto de referência, como “entrada”:{"ref":"myDataNodeId"}
lateAfterTimeout O tempo decorrido após o início do pipeline no qual o objeto deve ser concluído. Ele é acionado somente quando o tipo de programação não está definido como ondemand. Período
maxActiveInstances O número máximo de instâncias ativas simultâneas de um componente. Novas execuções não contam para o número de instâncias ativas. Inteiro
maximumRetries A quantidade máxima de novas tentativas após uma falha. Inteiro
onFail Uma ação a ser executada quando há falha no objeto atual. Objeto de referência, como “onFail”:{"ref":"myActionId"}
onLateAction Ações que devem ser acionadas se um objeto ainda não foi agendado ou não foi concluído. Objeto de referência, como “onLateAction”:{"ref":"myActionId"}
onSuccess Uma ação a ser executada quando o objeto atual é executado com êxito. Objeto de referência, como “onSuccess”:{"ref":"myActionId"}
output O local dos dados de saída. Objeto de referência, como “output”:{"ref":"myDataNodeId"}
parent O pai do objeto atual do qual os slots serão herdados. Objeto de referência, como “parent”:{"ref":"myBaseObjectId"}
pipelineLogUri O URI do Amazon S3, como "s3://BucketName/Prefix/", para fazer upload de logs para o pipeline. String
postStepCommand Scripts de shell a serem executados depois que todas as etapas são concluídas. Para especificar vários scripts, até 255, adicione vários campos postStepCommand. String
precondition Se desejar, você pode definir uma precondição. Um nó de dados não fica marcado como "READY" até que todas as precondições tenham sido atendidas. Objeto de referência, como “precondition”:{"ref":"myPreconditionId"}
preStepCommand Scripts de shell a serem executados antes de qualquer etapa ser executada. Para especificar vários scripts, até 255, adicione vários campos preStepCommand. String
reportProgressTimeout O tempo limite para as chamadas sucessivas de trabalho remoto para reportProgress. Se definidas, as atividades remotas sem progresso para o período especificado podem ser consideradas como interrompidas e executadas novamente. Período
resizeClusterBeforeRunning

Redimensionar o cluster antes de executar esta atividade para acomodar tabelas do DynamoDB especificadas como entradas ou saídas.

nota

Se sua EmrActivity usar um DynamoDBDataNode como um nó de entrada ou de saída, e se você definir o resizeClusterBeforeRunning como TRUE, o AWS Data Pipeline passa a usar tipos de instâncias m3.xlarge. Isso substitui suas escolhas de tipo de instância por m3.xlarge, o que pode aumentar seus custos mensais.

Booleano
resizeClusterMaxInstances Um limite no número máximo de instâncias que pode ser solicitado pelo algoritmo de redimensionamento. Inteiro
retryDelay A duração do tempo limite entre duas novas tentativas. Período
scheduleType O tipo de programação permite que você especifique se os objetos na sua definição de pipeline devem ser programados no início ou final do intervalo. Os valores são: cron, ondemand e timeseries. A programação timeseries significa que as instâncias são programadas no final de cada intervalo. A programação cron significa que as instâncias são programadas no início de cada intervalo. Uma programação ondemand permite que você execute um pipeline uma vez por ativação. Você não precisa clonar nem recriar o pipeline para executá-lo novamente. Se você usar uma programação ondemand, ela precisará ser especificada no objeto padrão, além de ser a única scheduleType especificada para objetos no pipeline. Para usar pipelines ondemand, chame a operação ActivatePipeline para cada execução subsequente. Enumeração
step (etapa) Uma ou mais etapas para que o cluster seja executado. Para especificar várias etapas, até 255, adicione vários campos de etapa. Use argumentos separados por vírgula após o nome JAR. Por exemplo: "s3://example-bucket/MyWork.jar,arg1,arg2,arg3". String

Campos de tempo de execução Descrição Tipo de slot
@activeInstances Lista dos objetos da instância ativa agendados no momento. Objeto de referência, como “activeInstances”:{"ref":"myRunnableObjectId"}
@actualEndTime Hora em que a execução deste objeto foi concluída. DateTime
@actualStartTime Hora em que a execução deste objeto foi iniciada. DateTime
cancellationReason O motivo do cancelamento, se esse objeto foi cancelado. String
@cascadeFailedOn Descrição da cadeia de dependência na qual o objeto apresentou falha. Objeto de referência, como “cascadeFailedOn”:{"ref":"myRunnableObjectId"}
emrStepLog Registros da etapa do Amazon EMR disponíveis somente nas tentativas de atividade do EMR. String
errorId A errorId se esse objeto apresentou falha. String
errorMessage A errorMessage se esse objeto apresentou falha. String
errorStackTrace O rastreamento de pilha com erro se esse objeto apresentou falha. String
@finishedTime A hora em que esse objeto terminou a execução. DateTime
hadoopJobLog Registos de trabalho do Hadoop disponíveis nas tentativas de atividades baseadas em EMR. String
@healthStatus O status de integridade do objeto que indica se houve sucesso ou falha na última instância concluída do objeto. String
@healthStatusFromInstanceId ID do último objeto da instância concluído. String
@healthStatusUpdatedTime Hora em que o status de integridade foi atualizado pela última vez. DateTime
hostname O nome do host do cliente que capturou a tentativa da tarefa. String
@lastDeactivatedTime A hora em que esse objeto foi desativado pela última vez. DateTime
@latestCompletedRunTime Hora da última execução concluída. DateTime
@latestRunTime Hora da última execução programada. DateTime
@nextRunTime Hora da próxima execução a ser programada. DateTime
reportProgressTime A última vez que a atividade remota relatou progresso. DateTime
@scheduledEndTime Horário de término programado para o objeto. DateTime
@scheduledStartTime Horário de início programado para o objeto. DateTime
@status O status deste objeto. String
@version A versão do pipeline com que o objeto foi criado. String
@waitingOn Descrição da lista de dependências em que este objeto está aguardando. Objeto de referência, como “waitingOn”:{"ref":"myRunnableObjectId"}

Campos do sistema Descrição Tipo de slot
@error Erro ao descrever o objeto malformado. String
@pipelineId ID do pipeline ao qual este objeto pertence. String
@sphere A esfera de um objeto denota seu lugar no ciclo de vida: os objetos componentes dão origem aos objetos de instância que executam os objetos de tentativa. String

Consulte também: