Iniciar um cluster usando a linha de comando - AWS Data Pipeline

Iniciar um cluster usando a linha de comando

Se você regularmente executa um cluster do Amazon EMR para analisar logs da web ou realizar a análise de dados científicos, você pode usar o AWS Data Pipeline para gerenciar seu clusters do Amazon EMR. Com o AWS Data Pipeline, você pode especificar precondições que devem ser atendidas antes de o cluster ser iniciado (por exemplo, garantindo que os dados de hoje sejam carregados para o Amazon S3). Este tutorial fornece o passo a passo para que você inicie um cluster que pode ser um modelo para um pipeline baseado em Amazon EMR simples ou como parte de um pipeline mais sofisticado.

Pré-requisitos

Antes de usar a CLI, é necessário executar as seguintes etapas:

  1. Instale e configure a Interface da linha de comando (CLI). Para obter mais informações, consulte Como acessar o AWS Data Pipeline.

  2. Certifique-se de que os perfis do IAM chamados DataPipelineDefaultRole e DataPipelineDefaultResourceRole existem. O console do AWS Data Pipeline cria essas funções para você automaticamente. Se você não usou o console do AWS Data Pipeline pelo menos uma vez, deverá criar essas funções manualmente. Para obter mais informações, consulte Funções do IAM para o AWS Data Pipeline.

Criar o arquivo de definição de pipeline

O seguinte código é o arquivo de definição de pipeline para um cluster do Amazon EMR simples que é executado em um trabalho existente do Hadoop Streaming fornecido pelo Amazon EMR. Este aplicativo de exemplo é chamado WordCount e também pode ser executado a partir do console do Amazon EMR.

Copie este código em um arquivo de texto e salve-o como MyEmrPipelineDefinition.json. Você deve substituir o local do bucket do Amazon S3 pelo nome de um bucket do Amazon S3 que você possui. Você também deve substituir as datas de início e término. Para iniciar os clusters imediatamente, defina startDateTime para uma data de um dia atrás e endDateTime para uma data um dia depois. Em seguida, o AWS Data Pipeline iniciará imediatamente os clusters “em atraso” em uma tentativa de processar o que ele considera um acúmulo de trabalho. Essa alocação significa que você não precisa esperar uma hora para ver o AWS Data Pipeline iniciar seu primeiro cluster.

{ "objects": [ { "id": "Hourly", "type": "Schedule", "startDateTime": "2012-11-19T07:48:00", "endDateTime": "2012-11-21T07:48:00", "period": "1 hours" }, { "id": "MyCluster", "type": "EmrCluster", "masterInstanceType": "m1.small", "schedule": { "ref": "Hourly" } }, { "id": "MyEmrActivity", "type": "EmrActivity", "schedule": { "ref": "Hourly" }, "runsOn": { "ref": "MyCluster" }, "step": "/home/hadoop/contrib/streaming/hadoop-streaming.jar,-input,s3n://elasticmapreduce/samples/wordcount/input,-output,s3://myawsbucket/wordcount/output/#{@scheduledStartTime},-mapper,s3n://elasticmapreduce/samples/wordcount/wordSplitter.py,-reducer,aggregate" } ] }

Este pipeline tem três objetos:

  • Hourly, que representa o agendamento do trabalho. Você pode definir uma programação como um dos campos em uma atividade. Quando você fizer isso, a atividade será executada de acordo com a programação, ou neste caso, de hora em hora.

  • MyCluster, que representa o conjunto de instâncias do Amazon EC2 usado para executar o cluster. Você pode especificar o tamanho e o número de instâncias do EC2 para serem executadas como o cluster. Se você não especificar o número de instâncias, o cluster será iniciado com duas, um nó principal e um nó de tarefa. Você pode especificar uma sub-rede para executar o cluster. Você pode acrescentar configurações adicionais ao cluster, como ações de bootstrap para carregar software adicional para a AMI fornecida pelo Amazon EMR.

  • MyEmrActivity, que representa o cálculo para processar com o cluster. O Amazon EMR oferece suporte a vários tipos de clusters, incluindo o streaming, o Cascading e o Hive. O campo runsOn refere-se ao MyCluster, usando aquele como a especificação para a base do cluster.

Fazer upload e ativar a definição do pipeline

Você deve fazer o upload da definição do pipeline e ativá-lo. Nos comandos de exemplo a seguir, substitua pipeline_name por um rótulo para seu pipeline e pipeline_file pelo caminho totalmente qualificado para o arquivo .json de definição de pipeline.

AWS CLI

Para criar sua definição de pipeline e ativar seu pipeline, use o seguinte comando: create-pipeline. Observe a ID do seu pipeline, pois você usará esse valor com a maioria dos comandos da CLI.

aws datapipeline create-pipeline --name pipeline_name --unique-id token { "pipelineId": "df-00627471SOVYZEXAMPLE" }

Atualize a definição do pipeline usando o seguinte comando: put-pipeline-definition.

aws datapipeline put-pipeline-definition --pipeline-id df-00627471SOVYZEXAMPLE --pipeline-definition file://MyEmrPipelineDefinition.json

Se o pipeline for validado com êxito, o campo validationErrors estará vazio. Você deve revisar todos os avisos.

Para ativar o pipeline, use o seguinte comando: activate-pipeline.

aws datapipeline activate-pipeline --pipeline-id df-00627471SOVYZEXAMPLE

Você pode verificar se seu pipeline aparece na lista de pipeline usando o seguinte comando: list-pipelines.

aws datapipeline list-pipelines

Monitorar as execuções do pipeline

Você pode visualizar clusters executados pelo AWS Data Pipeline usando o console do Amazon EMR e você pode visualizar a pasta de saída usando o console do Amazon S3.

Para verificar o andamento dos clusters iniciados pelo AWS Data Pipeline
  1. Abra o console do Amazon EMR.

  2. Os clusters que foram gerados pelo AWS Data Pipeline têm um nome formatado como se segue: <pipeline-identifier>_@<emr-cluster-name>_<launch-time>.

  3. Depois que uma das execuções for concluída, abra o console do Amazon S3 e verifique se a data e hora da pasta de saída existe e contém os resultados esperados do cluster.