Conceitos comuns para chamadas de API
Tópicos
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.
. Se você especificar o endpoint geral (regionname
.amazonaws.comelasticmapreduce.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.