AWS Data Pipeline não está mais disponível para novos clientes. Os clientes existentes do AWS Data Pipeline podem continuar usando o serviço normalmente. Saiba mais
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
EmrCluster
Representa a configuração de um EMR cluster da Amazon. Esse objeto é usado por EmrActivity e HadoopActivity para iniciar um cluster.
Conteúdo
Programadores
Os programadores fornecem uma maneira de especificar a alocação de recursos e a priorização de trabalhos dentro de um cluster Hadoop. Administradores ou usuários podem escolher um programador para várias classes de usuários e aplicativos. Um programador pode usar filas para alocar recursos para usuários e aplicativos. Você configura essas filas ao criar o cluster. Em seguida, você pode configurar a prioridade de certos tipos de trabalhos e usuários. Com isso, é possível usar recursos de cluster de maneira eficiente enquanto mais de um usuário envia trabalhos ao cluster. Existem três tipos de programadores disponíveis:
-
FairScheduler
— Tentativas de programar recursos uniformemente por um período significativo de tempo. -
CapacityScheduler
— Usa filas para permitir que administradores de cluster atribuam usuários a filas de prioridade e alocação de recursos variáveis. -
Default – Usado pelo cluster e pode ser configurado pelo seu site.
Versões EMR de lançamento da Amazon
Uma EMR versão da Amazon é um conjunto de aplicativos de código aberto do ecossistema de big data. Cada versão inclui diferentes aplicativos, componentes e recursos de big data que você seleciona para que a Amazon EMR instale e configure ao criar um cluster. Especificar a versão usando o rótulo da versão. Os rótulos de versão estão no formato emr-
. Por exemplo, x.x.x
emr-5.30.0
. EMROs clusters da Amazon com base no rótulo de lançamento emr-4.0.0
e, posteriormente, usam a releaseLabel
propriedade para especificar o rótulo de lançamento de um EmrCluster
objeto. Versões anteriores usam a propriedade amiVersion
.
Importante
Todos os EMR clusters da Amazon criados usando a versão 5.22.0 ou posterior usam o Signature versão 4 para autenticar solicitações para o Amazon S3. Algumas versões anteriores usam o Signature versão 2. O suporte ao Signature versão 2 está sendo descontinuado. Para obter mais informações, consulte Atualização do Amazon S3 – Período de defasagem do SigV2 estendido e modificado
Condições e limitações
Use a versão mais recente do Task Runner
Se você estiver usando um objeto EmrCluster
autogerenciado com um rótulo de release, use o Task Runner mais atual. Para mais informações sobre o Task Runner, consulte Trabalhar com o Task Runner. Você pode configurar valores de propriedade para todas as classificações de EMR configuração da Amazon. Para obter mais informações, consulte Como configurar aplicativos no Amazon EMR Release GuideEmrConfiguration, no e nas referências de Propriedade objetos.
Support for IMDSv2
Anteriormente, somente AWS Data Pipeline suportadoIMDSv1. Agora, é AWS Data Pipeline compatível com IMDSv2 Amazon EMR 5.23.1, 5.27.1 e 5.32 ou posterior e Amazon 6.2 ou posterior. EMR IMDSv2usa um método orientado à sessão para lidar melhor com a autenticação ao recuperar informações de metadados das instâncias. Você deve configurar suas instâncias para fazer IMDSv2 chamadas criando recursos gerenciados pelo usuário usando TaskRunner -2.0.
Amazon EMR 5.32 ou posterior e Amazon EMR 6.x
As séries Amazon EMR 5.32 ou posterior e 6.x usam a versão 3.x do Hadoop, que introduziu mudanças significativas na forma como o classpath do Hadoop é avaliado em comparação com a versão 2.x do Hadoop. Bibliotecas comuns como Joda-Time foram removidas do classpath.
Se EmrActivity ou HadoopActivity executa um arquivo Jar que tem dependências em uma biblioteca que foi removida no Hadoop 3.x, a etapa falhará com o erro java.lang.NoClassDefFoundError
ou java.lang.ClassNotFoundException
. Isso pode acontecer com arquivos Jar que foram executados sem problemas usando as versões de lançamento EMR 5.x da Amazon.
Para corrigir o problema, você deve copiar as dependências do arquivo Jar para o classpath do Hadoop em um objeto EmrCluster
antes de iniciar o EmrActivity
ou o HadoopActivity
. Fornecemos um script bash para isso. O script bash está disponível no seguinte local, onde MyRegion
é a AWS região em que seu EmrCluster
objeto é executado, por exemplous-west-2
.
s3://datapipeline-
MyRegion
/MyRegion
/bootstrap-actions/latest/TaskRunner/copy-jars-to-hadoop-classpath.sh
A forma de executar o script depende se ele EmrActivity
HadoopActivity
é executado em um recurso gerenciado AWS Data Pipeline ou executado em um recurso autogerenciado.
Se você usa um recurso gerenciado por AWS Data Pipeline, adicione um bootstrapAction
ao EmrCluster
objeto. O bootstrapAction
especifica o script e os arquivos Jar a serem copiados como argumentos. Você pode adicionar até 255 campos bootstrapAction
por objeto EmrCluster
e adicionar um campo bootstrapAction
a um objeto EmrCluster
que já tenha ações de bootstrap.
Para especificar esse script como uma ação de bootstrap, use a seguinte sintaxe, onde JarFileRegion
é a região em que o arquivo Jar é salvo e cada MyJarFilen
é o caminho absoluto no Amazon S3 de um arquivo Jar a ser copiado para o classpath do Hadoop. Não especifique arquivos Jar que estão no classpath do Hadoop por padrão.
s3://datapipeline-
MyRegion
/MyRegion
/bootstrap-actions/latest/TaskRunner/copy-jars-to-hadoop-classpath.sh,JarFileRegion
,MyJarFile1
,MyJarFile2
[, ...]
O exemplo a seguir especifica uma ação de bootstrap que copia dois arquivos Jar no Amazon S3: my-jar-file.jar
e o emr-dynamodb-tool-4.14.0-jar-with-dependencies.jar
. A Região usada no exemplo é us-west-2.
{ "id" : "
MyEmrCluster
", "type" : "EmrCluster", "keyPair" : "my-key-pair
", "masterInstanceType" : "m5.xlarge
", "coreInstanceType" : "m5.xlarge
", "coreInstanceCount" : "2
", "taskInstanceType" : "m5.xlarge
", "taskInstanceCount": "2
", "bootstrapAction" : ["s3://datapipeline-us-west-2
/us-west-2
/bootstrap-actions/latest/TaskRunner/copy-jars-to-hadoop-classpath.sh,us-west-2
,s3://path/to/my-jar-file.jar,s3://dynamodb-dpl-us-west-2
/emr-ddb-storage-handler/4.14.0/emr-dynamodb-tools-4.14.0-jar-with-dependencies.jar"] }
Você precisa salvar e ativar o pipeline para que a alteração no novo bootstrapAction
seja habilitada.
Se você usar um recurso autogerenciado, poderá baixar o script para a instância do cluster e executá-lo na linha de comando usandoSSH. O script cria um diretório chamado /etc/hadoop/conf/shellprofile.d
e um arquivo chamado datapipeline-jars.sh
nesse diretório. Os arquivos jar fornecidos como argumentos de linha de comando são copiados para um diretório que o script cria chamado /home/hadoop/datapipeline_jars
. Se seu cluster estiver configurado de forma diferente, modifique o script adequadamente após baixá-lo.
A sintaxe para executar o script na linha de comando é um pouco diferente de usar a bootstrapAction
exibida no exemplo anterior. Use espaços ao invés de vírgulas entre os argumentos, conforme mostrado no exemplo a seguir.
./copy-jars-to-hadoop-classpath.sh
us-west-2
s3://path/to/my-jar-file.jar s3://dynamodb-dpl-us-west-2
/emr-ddb-storage-handler/4.14.0/emr-dynamodb-tools-4.14.0-jar-with-dependencies.jar
EMRPermissões da Amazon
Ao criar um IAM papel personalizado, considere cuidadosamente as permissões mínimas necessárias para que seu cluster execute seu trabalho. Certifique-se de conceder acesso aos recursos necessários, como arquivos no Amazon S3 ou dados no AmazonRDS, Amazon Redshift ou DynamoDB. Se você quiser definir visibleToAllUsers
como "False", sua função precisará das permissões adequadas. DataPipelineDefaultRole
não tem essas permissões. Você precisa fornecer uma união das funções DefaultDataPipelineResourceRole
e DataPipelineDefaultRole
como a função de objeto EmrCluster
ou criar sua própria função para essa finalidade.
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. Por exemplo: "schedule":{"ref":"myScheduleId"} |
Campos opcionais | Descrição | Tipo de slot |
---|---|---|
actionOnResourceFalha | A ação executada após uma falha de recurso para este recurso. Os valores válidos são "retryall ", que tentará executar todas as tarefas para o cluster pela duração especificada e "retrynone ". |
String |
actionOnTaskFalha | A ação executada após uma falha de tarefa para este recurso. Os valores válidos são "continuar", que significa que não encerrar o cluster, e "encerrar". | String |
additionalMasterSecurityGroupIds | O identificador de grupos de segurança principais adicionais do EMR cluster, que segue o formato sg-01XXXX6a. Para obter mais informações, consulte Grupos de segurança EMR adicionais da Amazon no Guia EMR de gerenciamento da Amazon. | String |
additionalSlaveSecurityGroupIds | O identificador de grupos de segurança escravos adicionais do EMR cluster, que segue o formuláriosg-01XXXX6a . |
String |
amiVersion | A versão Amazon Machine Image (AMI) que a Amazon EMR usa para instalar os nós do cluster. Para obter mais informações, consulte o Guia EMR de gerenciamento da Amazon. | String |
applications | Aplicativos a serem instalados no cluster com argumentos separados por vírgula. Por padrão, o Hive e o Pig estão instalados. Esse parâmetro é aplicável somente para a Amazon EMR versão 4.0 e posterior. | String |
attemptStatus | O 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 |
availabilityZone | A zona de disponibilidade na qual o cluster será executado. | String |
bootstrapAction | Uma ação para ser executada quando o cluster é iniciado. Você pode especificar argumentos separados por vírgula. Para especificar várias ações, até 255, adicione vários campos bootstrapAction . O comportamento padrão é iniciar o cluster sem quaisquer ações de bootstrap. |
String |
configuration | Configuração para o EMR cluster da Amazon. Esse parâmetro é aplicável somente para a Amazon EMR versão 4.0 e posterior. | Objeto de referência. Por exemplo: "configuration":{"ref":"myEmrConfigurationId"} |
coreInstanceBidPreço | O preço spot máximo que você está disposto a pagar pelas EC2 instâncias da Amazon. Se um preço de oferta for especificado, a Amazon EMR usará instâncias spot para o grupo de instâncias. Especificado emUSD. | String |
coreInstanceCount | O número de nós core a serem usados no cluster. | Inteiro |
coreInstanceType | O tipo de EC2 instância da Amazon a ser usada para os nós principais. Consulte Instâncias do Amazon EC2 compatíveis com clusters do Amazon EMR . | String |
coreGroupConfiguration | A configuração do grupo de instâncias principais do EMR cluster da Amazon. Esse parâmetro é aplicável somente para a Amazon EMR versão 4.0 e posterior. | Objeto de referência. Por exemplo “configuration”: {“ref”:
“myEmrConfigurationId”} |
coreEbsConfiguration | A configuração dos EBS volumes da Amazon que serão anexados a cada um dos nós principais do grupo principal no EMR cluster da Amazon. Para obter mais informações, consulte Tipos de instância que suportam a EBS otimização no Guia EC2 do usuário da Amazon. | Objeto de referência. Por exemplo “coreEbsConfiguration”: {“ref”:
“myEbsConfiguration”} |
customAmiId | Aplica-se somente à EMR versão 5.7.0 e posterior da Amazon. Especifica a AMI ID de uma personalização AMI a ser usada quando a Amazon EMR provisiona EC2 instâncias da Amazon. Ele também pode ser usado em vez de ações de bootstrap para personalizar as configurações dos nós do cluster. Para obter mais informações, consulte o tópico a seguir no Guia EMR de gerenciamento da Amazon. Usando um personalizado AMI | String |
EbsBlockDeviceConfig |
A configuração de um dispositivo de EBS bloco solicitado pela Amazon associado ao grupo de instâncias. Inclui um número especificado dos volumes que serão associados a cada instância no grupo de instâncias. Inclui
|
Objeto de referência. Por exemplo “EbsBlockDeviceConfig”: {“ref”:
“myEbsBlockDeviceConfig”} |
emrManagedMasterSecurityGroupId | O identificador do grupo de segurança principal do EMR cluster da Amazon, que segue a forma desg-01XXXX6a . Para obter mais informações, consulte Configurar grupos de segurança no Amazon EMR Management Guide. |
String |
emrManagedSlaveSecurityGroupId | O identificador do grupo de segurança escravo do EMR cluster da Amazon, que segue o formuláriosg-01XXXX6a . |
String |
enableDebugging | Permite a depuração no cluster da Amazon. EMR | String |
failureAndRerunModo | Descreve o comportamento do nó do consumidor quando as dependências apresentam falhas ou são executadas novamente. | Enumeração |
hadoopSchedulerType | O tipo de programador do cluster. Os tipos válidos são:
PARALLEL_FAIR_SCHEDULING ,
PARALLEL_CAPACITY_SCHEDULING e
DEFAULT_SCHEDULER . |
Enumeração |
httpProxy | O host proxy que os clientes usam para se conectar aos AWS serviços. | Objeto de referência, por exemplo, "httpProxy“: {" ref”:” myHttpProxy Id "} |
initTimeout | A quantidade de tempo de espera antes da inicialização do recurso. | Período |
keyPair | O par de EC2 chaves da Amazon a ser usado para fazer login no nó principal do EMR cluster da Amazon. | String |
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 |
masterInstanceBidPreço | O preço spot máximo que você está disposto a pagar pelas EC2 instâncias da Amazon. É um valor decimal entre 0 e 20,00, exclusivos. Especificado emUSD. Definir esse valor ativa as Instâncias Spot para o nó principal EMR do cluster Amazon. Se um preço de oferta for especificado, a Amazon EMR usará instâncias spot para o grupo de instâncias. | String |
masterInstanceType | O tipo de EC2 instância da Amazon a ser usada para o nó principal. Consulte Instâncias do Amazon EC2 compatíveis com clusters do Amazon EMR . | String |
masterGroupConfiguration | A configuração do grupo de instâncias mestre EMR do cluster da Amazon. Esse parâmetro é aplicável somente para a Amazon EMR versão 4.0 e posterior. | Objeto de referência. Por exemplo “configuration”: {“ref”:
“myEmrConfigurationId”} |
masterEbsConfiguration | A configuração dos EBS volumes da Amazon que serão anexados a cada um dos nós principais no grupo principal no EMR cluster da Amazon. Para obter mais informações, consulte Tipos de instância que suportam a EBS otimização no Guia EC2 do usuário da Amazon. | Objeto de referência. Por exemplo “masterEbsConfiguration”: {“ref”:
“myEbsConfiguration”} |
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 | Quantidade máxima de novas tentativas com falha. | Inteiro |
onFail | Uma ação a ser executada quando há falha no objeto atual. | Objeto de referência. Por exemplo: "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. Por exemplo: "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"} |
parent | Pai do objeto atual a partir do qual os slots são herdados. | Objeto de referência. Por exemplo: "parent":{"ref":"myBaseObjectId"} |
pipelineLogUri | O Amazon S3 URI (como 's3://BucketName/Key/ ') para carregar registros para o pipeline. | String |
região | O código da região em que o EMR cluster da Amazon deve ser executado. Por padrão, o cluster é executado na mesma região que o pipeline. Você pode executar um cluster na mesma região como um conjunto de dados dependente. | Enumeração |
releaseLabel | Rótulo de lançamento para o EMR cluster. | String |
reportProgressTimeout | 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 |
resourceRole | A IAM função AWS Data Pipeline usada para criar o EMR cluster da Amazon. A função padrão é DataPipelineDefaultRole . |
String |
retryDelay | A duração do tempo limite entre duas novas tentativas. | Período |
role (perfil) | A IAM função foi passada para a Amazon EMR para criar EC2 nós. | String |
runsOn | Esse campo não é permitido neste objeto. | Objeto de referência. Por exemplo: "runsOn":{"ref":"myResourceId"} |
securityConfiguration | O identificador da configuração de EMR segurança que será aplicada ao cluster. Esse parâmetro é aplicável somente para a Amazon EMR versão 4.8.0 e posterior. | String |
serviceAccessSecurityGroupId | O identificador do grupo de segurança de acesso ao serviço do EMR cluster da Amazon. | String. Segue a forma sg-01XXXX6a . Por exemplo: sg-1234abcd . |
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 |
subnetId | O identificador da sub-rede na qual iniciar o EMR cluster da Amazon. | String |
supportedProducts | Um parâmetro que instala software de terceiros em um EMR cluster da Amazon, por exemplo, uma distribuição terceirizada do Hadoop. | String |
taskInstanceBidPreço | O preço spot máximo que você está disposto a pagar pelas EC2 instâncias. Um valor decimal entre 0 e 20,00, exclusive. Especificado emUSD. Se um preço de oferta for especificado, a Amazon EMR usará instâncias spot para o grupo de instâncias. | String |
taskInstanceCount | O número de nós de tarefas a serem usados para o EMR cluster da Amazon. | Inteiro |
taskInstanceType | O tipo de EC2 instância da Amazon a ser usada para nós de tarefas. | String |
taskGroupConfiguration | A configuração do grupo de instâncias de tarefas de EMR cluster da Amazon. Esse parâmetro é aplicável somente para a Amazon EMR versão 4.0 e posterior. | Objeto de referência. Por exemplo “configuration”: {“ref”:
“myEmrConfigurationId”} |
taskEbsConfiguration | A configuração dos EBS volumes da Amazon que serão anexados a cada um dos nós de tarefas no grupo de tarefas no EMR cluster da Amazon. Para obter mais informações, consulte Tipos de instância que suportam a EBS otimização no Guia EC2 do usuário da Amazon. | Objeto de referência. Por exemplo “taskEbsConfiguration”: {“ref”:
“myEbsConfiguration”} |
terminateAfter | Encerrar o recurso após tantas horas. | Inteiro |
VolumeSpecification |
As especificações de EBS volume da Amazon, como tipo e tamanho do volume em Gigibytes (GiB) que serão solicitadas para o volume da Amazon EBS anexado a uma instância da Amazon EC2 no cluster da Amazon. IOPS EMR O nó pode ser um nó core, principal ou de tarefa.
|
Objeto de referência. Por exemplo “VolumeSpecification”: {“ref”:
“myVolumeSpecification”} |
useOnDemandOnLastAttempt | Na última tentativa de solicitar um recurso, faça um pedido para instâncias sob demanda em vez de instâncias spot. Isso garante que, se todas as tentativas anteriores falharam, a última tentativa não será interrompida. | Booleano |
workerGroup | Campo não é permitido neste objeto. | 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, por exemplo, "activeInstances“: {" ref”:” myRunnableObject Id "} |
@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 | cancellationReason Se esse objeto foi cancelado. | String |
@cascadeFailedOn | Descrição da cadeia de dependências na qual o objeto apresentou falha. | Objeto de referência, por exemplo, "cascadeFailedOn“: {" ref”:” myRunnableObject Id "} |
emrStepLog | Os registros de etapas estão disponíveis somente nas tentativas de EMR atividade da Amazon. | String |
errorId | O ID do erro se esse objeto apresentou falha. | String |
errorMessage | A mensagem de erro se esse objeto apresentou falha. | String |
errorStackTrace | O rastreamento de pilha com erro se esse objeto apresentou falha. | String |
@failureReason | O motivo da falha de recurso. | String |
@finishedTime | A hora em que esse objeto terminou a execução. | DateTime |
hadoopJobLog | Registros de tarefas do Hadoop disponíveis sobre tentativas de atividades na AmazonEMR. | 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 |
@ healthStatusUpdated Hora | 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 |
@ latestCompletedRun Hora | 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 da programação para o objeto. | DateTime |
@scheduledStartTime | Horário de início da programação 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, por exemplo, "waitingOn“: {" ref”:” myRunnableObject Id "} |
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 | O local de um objeto no ciclo de vida. Objetos de componentes dão origem a objetos de instância, que executam objetos de tentativa. | String |