Conceitos comuns para chamadas de API - Amazon EMR

Conceitos comuns para chamadas de API

Ao escrever uma aplicação que chama a API do Amazon EMR, há vários conceitos que se aplicam ao chamar uma das funções wrapper de um SDK.

Endpoints para o Amazon EMR

Um endpoint é uma URL que é o ponto de entrada para um serviço da Web. Toda solicitação de serviço da web deve conter um endpoint. O endpoint especifica a região da AWS em que os clusters são criados, descritos ou encerrados. Ele tem o formato elasticmapreduce.regionname.amazonaws.com. Se você especificar o endpoint geral (elasticmapreduce.amazonaws.com), o Amazon EMR direcionará sua solicitação para um endpoint na região padrão. Para contas criadas a partir de 8 de março de 2013, a região padrão é us-west-2; para contas mais antigas, a região padrão é us-east-1.

Para obter mais informações sobre os endpoints do Amazon EMR, consulte Regions and endpoints na Referência geral da Amazon Web Services.

Especificação dos parâmetros de cluster no Amazon EMR

Os parâmetros Instances permitem que você configure os tipos e o número de instâncias do EC2 para criar os nós que vão processar os dados. O Hadoop distribui o processamento dos dados entre os vários nós do cluster. O nó principal é responsável por acompanhar a integridade dos nós core e de tarefas e por sondar os nós para obter o status dos resultados de trabalhos. Os nós core e de tarefa realizam o processamento real dos dados. Se você tem um cluster com um único nó, este nó serve como nó principal e também como nó core.

O parâmetro KeepJobAlive em uma solicitação RunJobFlow determina se um cluster deve ser encerrado quando não tem mais etapas para executar. Defina este valor como False quando você sabe que o cluster está sendo executado como esperado. Quando você estiver tentando resolver problemas no fluxo de trabalho e adicionando etapas enquanto a execução do cluster é suspensa, defina este valor como True. Isso reduz a quantidade de tempo e as despesas de upload dos resultados para o Amazon Simple Storage Service (Amazon S3), apenas para repetir o processo após a modificação de uma etapa para reiniciar o cluster.

Se KeepJobAlive for true, após o cluster concluir seu trabalho com êxito, você deverá enviar uma solicitação TerminateJobFlows. Caso contrário, o cluster continuará a ser executado e gerar cobranças da AWS.

Para obter mais informações sobre os parâmetros exclusivos de RunJobFlow, consulte RunJobFlow. Para obter mais informações sobre os parâmetros genéricos na solicitação, consulte Common request parameters.

Zonas de disponibilidade no Amazon EMR

O Amazon EMR usa instâncias do EC2 como nós para o processamento de clusters. Essas instâncias do EC2 têm locais que são compostos por regiões e zonas de disponibilidade. As regiões são dispersas e localizadas em diferentes áreas geográficas. As zonas de disponibilidade são locais distintos dentro de uma região, que são isolados de falhas que ocorrem em outras zonas de disponibilidade. Cada zona de disponibilidade fornece conectividade de rede de baixa latência e custo reduzido para outras zonas de disponibilidade na mesma região. Para obter uma lista de regiões e endpoints para o Amazon EMR, consulte Regions and endpoints na Referência geral da Amazon Web Services.

O parâmetro AvailabilityZone especifica a localização geral do cluster. Esse parâmetro é opcional e, em geral, não recomendamos o seu uso. Quando AvailabilityZone não é especificado, o Amazon EMR escolhe automaticamente o melhor valor de AvailabilityZone para o cluster. Esse parâmetro pode ser útil se você desejar compartilhar os locais de suas instâncias com outras instâncias existentes em execução e seu cluster precisar ler ou gravar dados dessas instâncias. Para obter mais informações, consulte o Guia do usuário do Amazon EC2 para instâncias do Linux.

Como usar arquivos e bibliotecas adicionais em clusters do Amazon EMR

Em algumas ocasiões você pode querer usar arquivos adicionais ou bibliotecas personalizadas com seus aplicativos de mapeador ou reducer. Por exemplo, você pode querer usar uma biblioteca que converte um arquivo PDF em texto simples.

Para armazenar um arquivo em cache a ser usado pelo mapeador ou reducer quando usarem o streaming do Hadoop
  • No campo args do JAR, adicione o seguinte argumento:

    -cacheFile s3://bucket/path_to_executable#local_path

    O arquivo local_path está no diretório de trabalho do mapeador, que pode referenciar o arquivo.