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 cluster do Amazon EMR. 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ão de lançamento do Amazon EMR
Uma versão do Amazon EMR corresponde a um conjunto de aplicações de código aberto do ecossistema de big data. Cada versão contém diferentes aplicações de big data, componentes e recursos que você seleciona para que o Amazon EMR instale e configure quando você 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
. Os clusters do Amazon EMR baseados no rótulo de versão emr-4.0.0
e posterior usam a propriedade releaseLabel
para especificar o rótulo de versão de um objeto EmrCluster
. Versões anteriores usam a propriedade amiVersion
.
Importante
Todos os clusters do Amazon EMR criados usando a versão 5.22.0 ou posterior usam o Signature versão 4 para autenticar solicitações ao 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 configuração do Amazon EMR. Para obter mais informações, consulte Configurar aplicativos no Guia de apresentação do Amazon EMR e nas referências de objeto EmrConfiguration e Propriedade.
Support for IMDSv2
Anteriormente, somente AWS Data Pipeline suportado IMDSv1. Agora, AWS Data Pipeline oferece suporte IMDSv2 no Amazon EMR 5.23.1, 5.27.1 e 5.32 ou posterior e no Amazon EMR 6.2 ou posterior. IMDSv2 usa 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 de lançamento do Amazon EMR 5.32 ou posterior e Amazon EMR 6.x usam o Hadoop versão 3.x, 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 para os arquivos Jar executados sem problemas usando as versões de lançamento 5.x do Amazon EMR.
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 um 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ê usa um recurso autogerenciado, pode baixar o script para a instância do cluster e executá-lo na linha de comando usando SSH. 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
Permissões do Amazon EMR
Ao criar um perfil do IAM personalizado, considere cuidadosamente as permissões mínimas necessárias para que seu cluster realize os trabalhos. Certifique-se de conceder acesso aos recursos necessários, como arquivos no Amazon S3 ou dados no Amazon RDS, 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 |
---|---|---|
programar | 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 cluster EMR, que segue o formato sg-01. XXXX6a Para obter mais informações, consulte Grupos de segurança adicionais do Amazon EMR no Guia de gerenciamento do Amazon EMR. | String |
additionalSlaveSecurityGroupIds | O identificador de security groups subordinados adicionais do cluster do EMR, que segue o formulário sg-01XXXX6a . |
String |
amiVersion | A versão da imagem de máquina da Amazon (AMI) que o Amazon EMR usa para instalar nós do cluster. Para obter mais informações, consulte o Guia de gerenciamento do Amazon EMR. | String |
aplicações | 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 apenas para a versão 4.0 do Amazon EMR e versões posteriores. | 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 de cluster do Amazon EMR. Esse parâmetro é aplicável apenas para a versão 4.0 do Amazon EMR e versões posteriores. | 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 uma sugestão de preço for especificada, o Amazon EMR usará instâncias spot para o grupo de instâncias. Especificado em dólares americanos (USD). | 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 EC2 Instâncias da Amazon suportadas para clusters do Amazon EMR . | String |
coreGroupConfiguration | A configuração para o cluster de grupo de instâncias core do Amazon EMR. Esse parâmetro é aplicável apenas para a versão 4.0 do Amazon EMR e versões posteriores. | Objeto de referência. Por exemplo “configuration”: {“ref”:
“myEmrConfigurationId”} |
coreEbsConfiguration | A configuração para volumes do Amazon EBS que serão anexadas a cada um dos nós centrais no grupo central do cluster do Amazon EMR. Para obter mais informações, consulte Tipos de instância que suportam a otimização do EBS no Guia do EC2 usuário da Amazon. | Objeto de referência. Por exemplo “coreEbsConfiguration”: {“ref”:
“myEbsConfiguration”} |
customAmiId | Aplica-se apenas às versões 5.7.0 e posterior do Amazon EMR. Especifica o ID da AMI de uma AMI personalizada a ser usada quando o Amazon EMR provisiona instâncias da Amazon EC2 . 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 referente no Guia de Gerenciamento do Amazon EMR. Usar uma AMI personalizada | String |
EbsBlockDeviceConfig |
A configuração de um dispositivo de blocos do Amazon EBS solicitado que está 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 cluster do Amazon EMR, que segue a forma sg-01XXXX6a . Para obter mais informações, consulte Configurar grupos de segurança no Guia de gerenciamento do Amazon EMR. |
String |
emrManagedSlaveSecurityGroupId | O identificador do grupo de segurança subordinado do cluster do Amazon EMR, que segue a forma sg-01XXXX6a . |
String |
enableDebugging | Ativa a depuração no cluster do 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 do proxy que os clientes utilizarão na conexão com serviços da AWS. | 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 cluster do Amazon EMR. | 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 em dólares americanos (USD). A definição deste valor permite instâncias spot para o nó principal do cluster do Amazon EMR. Se uma sugestão de preço for especificada, o 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 EC2 Instâncias da Amazon suportadas para clusters do Amazon EMR . | String |
masterGroupConfiguration | A configuração para o cluster de grupo de instâncias principal do Amazon EMR. Esse parâmetro é aplicável apenas para a versão 4.0 do Amazon EMR e versões posteriores. | Objeto de referência. Por exemplo “configuration”: {“ref”:
“myEmrConfigurationId”} |
masterEbsConfiguration | A configuração para volumes do Amazon EBS que serão anexadas a cada um dos nós principais no grupo principal do cluster do Amazon EMR. Para obter mais informações, consulte Tipos de instância que suportam a otimização do EBS no Guia do EC2 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 URI do Amazon S3 (como 's3://BucketName/Key/ ') para carregar registros para o pipeline. | String |
região | O código da região na qual a instância do cluster do Amazon EMR deve ser executada. 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 liberação para o cluster do EMR. | 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 função do IAM AWS Data Pipeline usada para criar o cluster do Amazon EMR. A função padrão é DataPipelineDefaultRole . |
String |
retryDelay | A duração do tempo limite entre duas novas tentativas. | Período |
perfil | A função do IAM foi passada para o 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 segurança do EMR que será aplicado ao cluster. Esse parâmetro é aplicável apenas para a versão 4.8.0 do Amazon EMR e versões posteriores. | String |
serviceAccessSecurityGroupId | O identificador do grupo de segurança de acesso ao serviço do cluster do Amazon EMR. | 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 subrede em que o cluster do Amazon EMR será executado. | String |
supportedProducts | Um parâmetro que instala software de terceiros em um cluster do Amazon EMR, por exemplo, uma distribuição de terceiros 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 em dólares americanos (USD). Se uma sugestão de preço for especificada, o Amazon EMR usará instâncias spot para o grupo de instâncias. | String |
taskInstanceCount | O número de nós de tarefa a serem usados no cluster do Amazon EMR. | Inteiro |
taskInstanceType | O tipo de EC2 instância da Amazon a ser usada para nós de tarefas. | String |
taskGroupConfiguration | A configuração para o cluster de grupo de instâncias de tarefa do Amazon EMR. Esse parâmetro é aplicável apenas para a versão 4.0 do Amazon EMR e versões posteriores. | Objeto de referência. Por exemplo “configuration”: {“ref”:
“myEmrConfigurationId”} |
taskEbsConfiguration | A configuração para volumes do Amazon EBS que serão anexadas a cada um dos nós de tarefa no grupo de tarefa do cluster do Amazon EMR. Para obter mais informações, consulte Tipos de instância que suportam a otimização do EBS no Guia do EC2 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 volume do Amazon EBS, como tipo de volume, IOPS e tamanho em Gigibytes (GiB) que serão solicitadas para o volume do Amazon EBS anexado a uma instância EC2 da Amazon no cluster do Amazon 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. | Booliano |
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 | O motivo do cancelamento, 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 | Logs da etapa do disponíveis somente nas tentativas de atividade do Amazon EMR. | 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 | Registos de trabalho do Hadoop disponíveis nas tentativas de atividades do Amazon 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 |
@ 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 |