P: O que é o Amazon EMR?

O Amazon EMR é um serviço da web que permite às empresas, pesquisadores, analistas de dados e desenvolvedores processar, de modo fácil e econômico, grandes quantidades de dados. Ele utiliza uma estrutura Hadoop hospedada sendo executada na infraestrutura de escala da Web do Amazon Elastic Compute Cloud (Amazon EC2) e Amazon Simple Storage Service (Amazon S3).

P: O que posso fazer com o Amazon EMR?

Usando o Amazon EMR, você pode fornecer imediatamente quanta capacidade desejar para desempenhar tarefas que requerem muitos dados para aplicativos como indexação da Web, mineração de dados, análise de arquivos de log, aprendizagem da máquina, análise financeira, simulação científica e pesquisa bioinformática. O Amazon EMR permite que você se concentre na decodificação ou análise dos dados sem ter de se preocupar com a configuração, a gestão ou o ajuste de clusters Hadoop, o que consome tempo, ou com a capacidade de computação na qual estão baseados.

O Amazon EMR é ideal para problemas que necessitam de processamento rápido e eficiente de grandes quantidades de dados. As interfaces de serviço da Web permitem que você crie fluxos de trabalho de processamento e monitore, de forma programada, o andamento dos clusters em execução. Além disso, você pode usar a interface da web simples do Console de Gerenciamento da AWS para executar seus clusters e monitorar a computação com uso elevado do processamento nos clusters de instâncias do Amazon EC2.

P: Quem pode usar o Amazon EMR?

Qualquer pessoa que solicitar acesso simples à potente análise de dados pode usar o Amazon EMR. Não é necessária experiência com desenvolvimento de software para testar as várias amostras de aplicativos disponíveis no guia do desenvolvedor e no blog de big data da AWS.

P: O que pode ser feito com o Amazon EMR que não podia ser feito antes?

O Amazon EMR reduz significativamente a complexidade da configuração e gerenciamento demorados. e ajuste dos clusters Hadoop ou a capacidade de computação na qual residem. Você pode acionar imediatamente grandes clusters do Hadoop que iniciarão o processamento dentro de minutos, não horas ou dias. Quando o seu cluster terminar o processamento, a menos que especificado de outro modo, ele será encerrado automaticamente para que você não pague por recursos desnecessários.

Usando esse serviço, você pode desempenhar rapidamente tarefas que envolvem muitos dados para aplicativos como indexação da Web, mineração de dados, análise de arquivos de log, aprendizagem da máquina, análise financeira, simulação científica e pesquisa bioinformática.

Como desenvolvedor de software, você também pode desenvolver e executar seus próprios aplicativos mais sofisticados, permitindo a adição de funcionalidades como programação, fluxos de trabalho, monitoramento e outros recursos.

P: Qual é o mecanismo de processamento de dados por trás do Amazon EMR?

O Amazon EMR usa o Apache Hadoop como seu mecanismo de processamento de dados distribuído. O Hadoop é uma estrutura do software Java de código livre que é compatível com aplicativos distribuídos que envolvem muitos dados sendo executados em clusters grandes de hardware tipo "commodities". O Hadoop implementa um modelo de programação chamado "MapReduce", onde os dados são divididos em muitos fragmentos pequenos de trabalho, sendo que cada um deles poderá ser executado em qualquer nó no cluster. Essa estrutura tem sido amplamente usada pelos desenvolvedores, empresas e startups, e tem se mostrado uma plataforma de software confiável para processar até petabytes de dados em clusters de milhares de máquinas tipo "commodities".

P: O que é um cluster EMR?

O Amazon EMR historicamente referiu-se a um cluster do Amazon EMR (e todas as etapas de processamento atribuídas a ele) como um "cluster". Cada cluster ou cluster tem um identificador exclusivo começando com "j-".

P: O que é uma etapa de cluster?

Uma etapa do cluster é uma unidade de processamento definida pelo usuário, mapeando aproximadamente um algoritmo que manipula os dados. Uma etapa é um aplicativo Hadoop MapReduce implementado como um Java jar ou um programa de streaming escrito em Java, Ruby, Perl, Phyton, PHP, R ou C++. Por exemplo, para contar a frequência com a qual as palavras aparecem em um documento e exibi-las de modo classificado pela contagem, a primeira etapa seria um aplicativo MapReduce que conta as ocorrências de cada palavra e a segunda etapa seria um aplicativo MapReduce que classifica o resultado da primeira etapa com base nas contagens.

P: Quais são os diferentes estados do cluster?

STARTING – O cluster fornece, inicia e configura instâncias de EC2.
BOOTSTRAPPING − Há ações de bootstrap em execução no cluster.
RUNNING – Uma etapa do cluster que está em execução no momento.
WAITING – O cluster está ativo no momento, mas não há etapas para executar.
TERMINATING − O cluster está em desativação.
TERMINATED − O cluster foi encerrado sem erros.
TERMINATED_WITH_ERRORS − O cluster foi encerrado com erros.

P: Quais são os diferentes estados das etapas?

PENDING – A etapa está aguardando para ser executada.
RUNNING – A etapa está sendo executada no momento.
COMPLETED – A etapa foi concluída com êxito.
CANCELLED − A etapa foi cancelada antes da execução devido à falha de uma etapa anterior ou porque o cluster foi encerrado antes de executar.
FAILED – Houve falha da etapa durante a execução.

Voltar ao início >>


P: Como posso acessar o Amazon EMR?

Você pode acessar o Amazon EMR usando o AWS Management Console, as Ferramentas de linha de comando, SDKS ou a API do EMR.

P: Como posso iniciar um cluster?

Você pode iniciar um cluster por meio do AWS Management Console ao preencher um formulário simples de solicitação de cluster. No formulário de solicitação, especifique o nome do cluster, a localização no Amazon S3 dos dados de entrada, o aplicativo de processamento, a localização de saída dos dados desejados e o número e tipo de instâncias do Amazon EC2 que gostaria de usar. Também é possível especificar um local para armazenar arquivos de log do cluster e Chave SSH para efetuar login no cluster durante a execução. Além disso, pode-se iniciar um cluster usando a API RunJobFlow ou o comando 'create' em Ferramentas da linha de comando.

P: Como posso começar a usar o Amazon EMR?

Para se cadastrar no Amazon EMR, clique no botão "Cadastrar-se" na página de detalhes do Amazon EMR http://aws.amazon.com/elasticmapreduce. Você deve estar conectado ao Amazon EC2 e ao Amazon S3 para acessar o Amazon EMR; se ainda não estiver conectado a esses serviços, será solicitado que se conecte durante o processo de login do Amazon EMR. Após efetuar login, consulte a documentação do Amazon EMR, que inclui o Guia de conceitos básicos – o melhor lugar para dar continuidade ao serviço.

P: Como posso encerrar um cluster?

A qualquer momento você pode encerrar um cluster por meio do AWS Management Console selecionando um cluster e clicando no botão "Terminate". Também é possível usar a API TerminateJobFlows. Se você encerrar um cluster em execução, os resultados que não tiverem persistido no Amazon S3 serão perdidos e todas as instâncias do Amazon EC2 serão desativadas.

P: O Amazon EMR é compatível com vários clusters simultâneos?

Sim. A qualquer momento você pode criar um novo cluster, mesmo se já estiver executando um ou mais clusters.

P: Quantos clusters posso executar simultaneamente?

Você pode iniciar quantos clusters quiser. Há um limite de 20 instâncias em todos os fluxos clusters. Se você precisar de mais instâncias, preencha o formulário de solicitação de instância Amazon EC2 e seu caso de uso e o aumento das instâncias será considerado. No Amazon EC2, o limite já foi aumentado. O novo limite será aplicado aos clusters do Amazon EMR.

Voltar ao início >>


P: Onde posso encontrar exemplos de códigos?

Verifique o código de exemplo nestes artigos e tutoriais.

P: Como desenvolvo um aplicativo de processamento de dados?

Você pode desenvolver um trabalho de processamento de dados em sua área de trabalho, por exemplo, usando plug-ins Eclipse ou NetBeans, como IBM MapReduce Tools for Eclipse (http://www.alphaworks.ibm.com/tech/mapreducetools). Essas ferramentas facilitam o desenvolvimento e a depuração de trabalhos do MapReduce, além de testá-los localmente em sua máquina. Além disso, você pode desenvolver o cluster diretamente no Amazon EMR usando uma ou mais instâncias.

P: Qual é a vantagem de usar Ferramentas de linha de comando ou APIs em vez do AWS Management Console?

As Ferramentas de linha de comando ou APIs fornecem a capacidade de iniciar programaticamente e monitorar o andamento dos clusters em execução, criar uma funcionalidade personalizada adicional com relação aos clusters (como sequências com várias etapas de processamento, programação, fluxo de trabalho ou monitoramento) ou elaborar ferramentas ou aplicativos de valor agregado para outros clientes do Amazon EMR. Em contrapartida, o AWS Management Console fornece uma interface gráfica fácil de usar para a inicialização e o monitoramento dos clusters diretamente com base em um navegador da Web.

P: Posso adicionar etapas a um cluster que já esteja em execução?

Sim. Assim que o trabalho estiver em execução, também será possível adicionar mais etapas a ele por meio da API AddJobFlowSteps. A API AddJobFlowSteps adicionará novas etapas ao final da sequência atual de etapas. Talvez você queira usar esta API para implementar uma lógica condicional ao cluster ou para depuração.

P: Posso executar um cluster persistente?

Sim. Os clusters do Amazon EMR que são iniciados com a indicação – ativo continuarão até serem explicitamente encerrados. Isso permite que os clientes adicionem etapas a um cluster on demand. Talvez você queira usar isso para depurar seu aplicativo sem ter de esperar repetidamente pela inicialização do cluster. E, talvez, você também queira usar um cluster persistente para executar um cluster de armazém de dados que requeira execução extensa. Isso pode ser combinado com o repositório de dados e pacotes analíticos que são executados na parte superior do Hadoop, como Hive e Pig.

P: Posso ser notificado quando o cluster for concluído?

Você pode cadastrar-se no Amazon SNS para que o cluster seja publicado no seu tópico SNS quando ele terminar. Você também pode ver o progresso do seu cluster no AWS Management Console, ou usar a Linha de comando, SDK ou APIs para obter o status do cluster.

P: Quais linguagens de programação são compatíveis com o Amazon EMR?

Você pode usar Java para implementar jars personalizados de Hadcoop. Ou, talvez, você possa usar outras linguagens, incluindo Perl, Python, Ruby, C++, PHP e R via Hadoop Streaming. Consulte o Guia do desenvolvedor para obter instruções sobre como usar o Hadoop Streaming.

P: Quais versões de SO são compatíveis com o Amazon EMR?

No momento, o Amazon EMR é compatível com Debian/Lenny nos modos de 32 e 64 bits.

P: Posso visualizar o Hadoop UI durante a execução do meu cluster?

Sim. Consulte a seção Hadoop UI no Guia do desenvolvedor para obter instruções sobre como acessar o Hadoop UI.

P: O Amazon EMR oferece suporte a pacotes de software de terceiros?

Sim. A forma recomendada de instalar pacotes de software de terceiros no cluster é usar Bootstrap Actions. Ou é possível empacotar quaisquer bibliotecas de terceiros no seu executável do Mapper ou Reducer. Também é possível fazer upload de executáveis compilados estatisticamente usando o mecanismo de cache distribuído do Hadoop.

P: Quais versões do Hadoop são compatíveis com o Amazon EMR?

Para as versões mais recentes compatíveis com o Amazon EMR, consulte a documentação de referência.

P: Posso usar outro mecanismo de processamento de dados além do Hadoop?

Sim, alguns clientes do EMR usam Spark and Spark (mapreduce na memória e armazenamento de dados) como mecanismo de processamento. Consulte este artigo para obter instruções sobre como fazer.

P: A Amazon contribui com melhorias do Hadoop para a comunidade de código livre?

Sim. O Amazon EMR está ativo junto à comunidade de código livre e contribui com muitas correções para a fonte do Hadoop.

P: O Amazon EMR atualiza a versão do Hadoop com a qual é compatível?

O Amazon EMR atualiza periodicamente sua versão compatível do Hadoop baseada nos releases do Hadoop pela comunidade. O Amazon EMR poderá optar por ignorar algumas releases do Hadoop.

P: Com que rapidez o Amazon EMR deixa de ser compatível com as versões antigas do Hadoop?

O serviço Amazon EMR deixa de ser compatível com as versões antigas do Hadoop vários meses após a desaprovação. No entanto, as APIs do Amazon EMR são compatíveis com as versões anteriores, portanto se você criar ferramentas sobre essas APIs, elas funcionarão mesmo quando o Amazon EMR atualizar a versão do Hadoop que está usando.

Voltar ao início >>


P: Como posso depurar meu cluster?

Primeiro selecione o cluster que deseja depurar e, em seguida, clique no botão "Debug" para acessar a janela depurar um cluster no AWS Management Console. Isso permitirá que você acompanhe o andamento e identifique problemas nas etapas, trabalhos, tarefas ou tentativas de tarefas dos clusters. Ou você pode aplicar SSH diretamente às instâncias do Amazon Elastic Compute Cloud (Amazon EC2) que estão executando seu cluster e usar seu depurador favorito de linha de comando para solucionar problemas no cluster.

P: O que é a ferramenta de depuração de cluster?

A ferramenta de depuração do cluster faz parte do AWS Management Console onde você pode acompanhar o andamento e identificar problemas nas etapas, trabalhos, tarefas ou tentativas de tarefas dos clusters. Para acessar a ferramenta de depuração do cluster, primeiro selecione o fluxo de trabalho que deseja depurar e, em seguida, clique no botão "Debug".

P: Como posso habilitar a depuração do cluster?

Para ativara depuração, você precisa marcar o indicador Enable Debugging ao criar um cluster no Console de Gerenciamento da AWS. Alternativamente, você pode passar os indicadores --enable-debugging e --log-uri no cliente da linha de comando ao criar um cluster.

P: Onde posso encontrar instruções sobre como usar a janela depurar um cluster?

Consulte a seção AWS Management Console do Guia do desenvolvedor para obter instruções sobre como acessar e usar a janela depurar um cluster.

P: Quais tipos de cluster posso depurar com a janela depurar um cluster?

É possível depurar todos os tipos de cluster atualmente compatível com o Amazon EMR, incluindo jar personalizado, streaming, Hive e Pig.

P: Por que tenho de efetuar login no Amazon SimpleDB para usar a depuração do cluster?

O Amazon EMR armazena informações de estado sobre trabalhos do Hadoop, tarefas e tentativas de tarefas na sua conta no Amazon SimpleDB. É possível assinar o Amazon SimpleDB aqui.

P: Posso usar o recurso de depuração do cluster sem a assinatura do Amazon SimpleDB?

Você poderá navegar pelas etapas do cluster e pelos logs das etapas, mas não poderá navegar pelos trabalhos do Hadoop, tarefas ou tentativas de tarefas se não tiver assinado o Amazon SimpleDB.

P: Posso excluir dados históricos do cluster do Amazon SimpleDB?

Sim. É possível excluir domínios do Amazon SimpleDB que o Amazon EMR criou em seu nome. Consulte a documentação do Amazon SimpleDB para obter instruções.

Voltar ao início >>


P: Como obtenho os dados no Amazon S3?

É possível usar APIs do Amazon S3 para fazer o upload de dados para o Amazon S3. Ou, você pode usar muitos clientes de código aberto ou comerciais para fazer o upload de dados com facilidade para o Amazon S3.

P: Como obtenho logs sobre clusters concluídos?

Os logs do sistema Hadoop, assim como logs de usuário, serão posicionados no bucket do Amazon S3 que você especifica ao criar um cluster.

P: Você compacta logs?

Não. No momento, o Amazon EMR não compacta logs à medida que os transfere para o Amazon S3.

P: Posso carregar meus dados com base na Internet ou em outro local além do Amazon S3?

Sim. Seu aplicativo de Handoop pode carregar dados a partir de qualquer lugar da Internet, ou a partir de serviços da AWS. Observe que se você carregar dados a partir da Internet, serão aplicados encargos referentes à largura de banda do EC2. O Amazon EMR também fornece acesso baseado no Hive para dados no DynamoDB.

Voltar ao início >>


P: O Amazon EMR estima quanto tempo levará para que os dados de entrada sejam processados?

Não. Como cada cluster e dados de entrada são diferentes, não podemos estimar a duração do trabalho.

P: Quanto custa o Amazon EMR?

Assim como ocorre com o restante da AWS, você paga apenas por aquilo que usar. Não há uma tarifa mínima e não há compromissos prévios ou contratos de longo prazo. A definição de preço do Amazon EMR é além da definição de preço normal do Amazon EC2 e Amazon S3.

Para obter informações sobre a definição de preço do EMR, visite a Página de definição de preço do EMR.

As cobranças do Amazon EC2, Amazon S3 e Amazon SimpleDB são faturadas separadamente. A definição de preço do Amazon EMR é por segundo consumido em cada tipo de instância (no mínimo, um minuto) desde que o cluster é solicitado até ele ser encerrado. Para obter mais detalhes sobre Tipos de instância do Amazon EC2, Definição de preço do spot do Amazon EC2, Definição de preço de instâncias reservadas do Amazon EC2, Definição de preço do Amazon S3 ou Definição de preço do Amazon SimpleDB, siga os links abaixo:

Tipos de instância do Amazon EC2

Definição de preço de Instâncias Reservadas do Amazon EC2

Definição de preço de instâncias spot do Amazon EC2

Definição de preço do Amazon S3

Definição de preço do Amazon SimpleDB

P: Quando o faturamento do uso que eu fizer do meu cluster Amazon EMR começa e termina?

O faturamento começa quando o Amazon EMR começa a executar seu cluster. Você é cobrado somente pelos recursos realmente consumidos. Por exemplo, digamos que você iniciou 100 instâncias pequenas padrão do Amazon EC2 para um cluster do Amazon EMR, em que o custo do Amazon EMR são mais 0,015 USD por hora. As instâncias do Amazon EC2 começarão a ser inicializadas de imediato, mas nem todas começarão necessariamente no mesmo momento. O Amazon EMR acompanhará quando cada instância começa e irá verificá-la no cluster de forma que possa aceitar tarefas de processamento.

Nos primeiros 10 minutos após a solicitação de início, o Amazon EMR inicia o cluster (se todas as instâncias estiverem disponíveis) ou verifica o máximo de instâncias possíveis. Após 10 minutos, o Amazon EMR começará o processamento (e o carregamento) do cluster assim que 90% das instâncias solicitadas estiverem disponíveis. À medida que os 10% restantes das instâncias solicitadas forem verificados, o Amazon EMR começará a fazer o carregamento dessas instâncias também.

Então, no exemplo acima, se todas as 100 instâncias solicitadas estiverem disponíveis 10 minutos após o lançamento de uma solicitação de início, haverá uma cobrança de 1,50 USD por hora (100 x 0,015 USD) até que o cluster seja concluído. Se somente 90 das suas instâncias solicitadas estiverem disponíveis na marca de 10 minutos, haverá uma cobrança de 1,35 USD por hora (90 x 0,015 USD) desde que este tenha sido o número de instâncias sendo executadas no cluster. Quando as 10 instâncias restantes forem verificadas, haverá uma cobrança de 1,50 USD por hora (100 x 0,015 USD) até que o balanço do cluster seja concluído.

Cada cluster será executado até que ocorra um dos seguintes eventos: você encerre o cluster com a chamada da API TerminateJobFlows (ou uma ferramenta equivalente), o cluster desligue automaticamente ou seja encerrado devido a uma falha de software ou hardware.

P: Onde posso monitorar o uso do Amazon EMR, Amazon EC2 e Amazon S3?

Você pode acompanhar o seu uso no console de gerenciamento de cobrança e custo.

P: Como você calcula as horas de instâncias normalizadas exibidas no console?

No Console de Gerenciamento da AWS, cada cluster tem uma coluna Normalized Instance Hours que exibe o número aproximado de horas de computação usadas pelo cluster, arredondado para a hora mais próxima. As horas de instâncias normalizadas são horas do período computado com base no padrão de uso 1 hora de m1.small = período computado normalizado de 1 hora. A tabela a seguir destaca o fator de normalização usado para calcular as horas de instâncias normalizadas para os vários tamanhos de instância:

Tamanho de instância Fator de normalização
Pequeno 1
Médio 2
Grande 4
Xlarge 8
2xlarge 16
4xlarge 32
8xlarge 64

Por exemplo, se você executar um cluster r3.8xlarge de 10 nós por uma hora, o número total de horas de instâncias normalizadas exibido no console será de 640 ( 10 (número de nós) x 64 (fator de normalização) x 1 (quantidade de horas da execução do cluster) = 640).

 

Trata-se de um número aproximado e não deve ser usado para fins de faturamento. Consulte o Billing & Cost Management Console para obter o uso faturável do Amazon EMR. Observe que nós alteramos recentemente o fator de normalização para que ele reflita precisamente os pesos das instâncias. O fator de normalização não afeta a sua fatura mensal.

P: O Amazon EMR é compatível com instâncias on demand, spot e reservadas do Amazon EC2?

Sim. O Amazon EMR é perfeitamente compatível com Instâncias on demand, spot e reservadas. Clique aqui para obter mais informações sobre Instâncias Reservadas do Amazon EC2. Clique aqui para obter mais informações sobre Instâncias Spot do Amazon EC2.


P: Os preços incluem impostos?

Salvo indicação em contrário, nossos preços excluem impostos e taxas aplicáveis, incluindo o IVA e o imposto de vendas aplicável. Para clientes com endereço de pagamento no Japão, o uso da AWS está sujeito ao imposto sobre consumo japonês. Saiba mais.

Voltar ao início >>


P: Como impeço que outras pessoas visualizem os dados durante a execução do cluster?

O Amazon EMR inicia as instâncias em dois grupos de segurança do Amazon EC2, um para o mestre e outro para os escravos. O grupo de segurança mestre tem uma porta aberta para comunicação com o serviço. Ele também tem a porta SSH aberta para permitir que você aplique o SSH às instâncias, usando a chave especificada na inicialização. Os escravos começam em um grupo de segurança separado, que permite a interação somente com a instância mestre. Como padrão, ambos os grupos de segurança são configurados para não permitir o acesso de fontes externas, incluindo instâncias do Amazon EC2 pertencentes a outros clientes. Como esses grupos de segurança estão dentro da sua conta, é possível configurá-los usando as ferramentas padrão ou o painel do EC2. Clique aqui para obter mais informações sobre grupos de segurança do EC2.

P: Meus dados estão seguros?

O Amazon S3 fornece mecanismos de autenticação para assegurar que os dados armazenados estejam protegidos contra acesso não autorizado. A menos que o cliente que esteja fazendo o upload dos dados especifique em contrário, somente aquele cliente pode acessar os dados. Os clientes do Amazon EMR também podem optar por enviar dados para o Amazon S3 usando o protocolo HTTPS para uma transmissão segura. Além disso, o Amazon EMR sempre usa HTTPS para enviar dados entre o Amazon S3 e o Amazon EC2. Para uma segurança maior, os clientes poderão criptografar os dados de entrada antes de fazerem o upload dos mesmos no Amazon S3 (usando qualquer ferramenta comum de compactação de dados); em seguida, eles têm de adicionar uma etapa de descriptografia ao início do seu cluster quando o Amazon EMR analisa os dados do Amazon S3.

P: É possível obter um histórico de todas as chamadas de API do EMR realizadas na minha conta para auditoria de segurança ou conformidade?

Sim. O AWS CloudTrail é um serviço da web que registra as chamadas de APIs da AWS para a sua conta e envia os arquivos de log para você. O histórico de chamadas de APIs da AWS gerado pelo CloudTrail possibilita análises de segurança, rastreamento de alteração de recursos e auditoria de conformidade. Saiba mais sobre o CloudTrail na página de detalhes do AWS CloudTrail e ative o CloudTrail na página inicial do CloudTrail no AWS Management Console.

Voltar ao início >>


P: Como o Amazon EMR usa as Zonas de disponibilidade?

O Amazon EMR inicia todos os nós para um determinado cluster na mesma Zonas de disponibilidade do Amazon EC2. A execução de um cluster na mesma zona aprimora o desempenho dos fluxos de trabalho porque fornece uma taxa de acesso a dados mais elevada. Como padrão, o Amazon EMR seleciona a Zona de disponibilidade com a maioria dos recursos disponíveis nos quais o cluster será executado. Porém, é possível especificar outra Zona de disponibilidade, se exigido.

P: Em quais regiões esse Amazon EMR está disponível?

Para ver uma lista das regiões da AWS suportadas pelo Amazon EMR, visite a Tabela de regiões da AWS para toda a infraestrutura global da AWS.

P: Qual região deve ser selecionada para execução dos meus clusters?

Ao criar um cluster, normalmente você deve selecionar a região onde os dados estão localizados.

P: Posso usar dados da UE em um cluster sendo executado na região dos EUA e vice-versa?

Sim, você pode usar. Se você transferir dados de uma região para outra, haverá a cobrança dos encargos de largura de banda. Para obter informações sobre a definição de preço da largura de banda, visite a seção de definição de preço na página de detalhes do EC2.

P: Qual é a diferença da região AWS GovCloud (EUA)?

A região AWS GovCloud (US) é destinada para agências e clientes do governo dos EUA. A região cumpre os requisitos do US ITAER. Na GovCloud, o EMR não oferece suporte a instâncias spot nem ao recurso de ativação de depuração. O console de gerenciamento do EMR ainda não está disponível na GovCloud.

Voltar ao início >>


P: Como o Amazon EMR usa o Amazon EC2 e o Amazon S3?

Os clientes fazem upload dos dados de entrada e de um aplicativo de processamento de dados no Amazon S3. Em seguida, o Amazon EMR inicia uma série de instâncias do Amazon EC2 conforme especificado pelo cliente. O serviço inicia a execução do cluster ao obter os dados de entrada do Amazon S3 usando o protocolo S3N nas instâncias iniciadas do Amazon EC2. Assim que o cluster for concluído, o Amazon EMR transferirá os dados de saída para o Amazon S3, onde os clientes poderão, então, recuperá-los ou usar como entrada em outro cluster.

P: Como é feita uma computação no Amazon EMR?

O Amazon EMR usa o mecanismo de processamento de dados do Hadoop para realizar computações implementadas no modelo de programação do MapReduce. O cliente implementa seu algoritmo em termos das funções map() e reduce(). O serviço começa com um número específico de clientes de instâncias do Amazon EC2, composto por um mestre e vários escravos. O Amazon EMR executa o software Hadoop nessas instâncias. O nó mestre divide os dados de entrada em blocos e distribui o processamento dos blocos no nó escravo. Em seguida, cada nó escravo executa a função de mapeamento nos dados que alocou, gerando dados intermediários. Então, os dados intermediários são armazenados e enviados para processos que aplicam a função reducer a eles. Esses processos também são executados nos nós escravos. Finalmente, a saída das tarefas do reducer é coletada nos arquivos. Um único "cluster" poderá envolver uma sequência de etapas MapReduce.

P: O Amazon EMR é confiável?

O Amazon EMR gerencia um cluster do Amazon EC2 de instâncias de computação usando a infraestrutura de rede e os Datacenters altamente disponíveis e comprovados da Amazon. O Amazon EMR usa o software Hadoop tolerante a falhas e testado pelo setor como seu mecanismo de processamento de dados. O Hadoop divide os dados em vários subconjuntos e designa cada sub-rede a mais de uma instância do Amazon EC2. Portanto, se uma instância do Amazon EC2 falhar ao processar um subconjunto de dados, os resultados de outra instância do Amazon EC2 poderão ser usados.

P: Com que rapidez o cluster estará em execução e processará os dados de entrada?

O Amazon EMR inicia o provisionamento de recursos das instâncias On Demand do Amazon EC2 quase imediatamente. Se as instâncias não estiverem disponíveis, o Amazon EMR continuará tentando fornecer os recursos para o cluster até que eles sejam fornecidos ou que você cancele a solicitação. O provisionamento das instâncias é feito da melhor forma possível e depende do número de instâncias solicitadas, do horário no qual o cluster foi criado e do número total de solicitações no sistema. Após o provisionamento dos recursos, normalmente leva menos de 15 minutos para iniciar o processamento.

Para garantir a capacidade dos clusters quando eles forem necessários, você poderá pagar uma tarifa única referente às instâncias reservadas do Amazon EC2 para reservar capacidade de instância na nuvem por uma taxa horária com desconto. Assim como ocorre com as Instâncias On Demand, os clientes pagam tarifas de uso com relação ao tempo no qual suas instâncias estão em execução. Dessa forma, as Instâncias Reservadas permitem que as empresas com requisitos de instâncias conhecidos mantenham a elasticidade e a flexibilidade de Instâncias On Demand, enquanto também reduzem ainda mais os custos de uso previsíveis.

P: Com quais tipos de instâncias do Amazon EC2 o Amazon EMR é compatível?

O Amazon EMR é compatível com 12 tipos de instância do EC2, incluindo padrão, CPU de alta performance, com mais memória, computação em cluster, E/S elevada e armazenamento de alta capacidade. As instâncias padrão têm proporções de memória/CPU adequadas para a maioria dos aplicativos de fins gerais. As instâncias com CPU de alta performance têm proporcionalmente mais recursos de CPU do que memória (RAM) e são adequadas para aplicativos com processamento intensivo. As instâncias com mais memória oferecem tamanhos de memória de grande porte para aplicativos com alta taxa de transferência. Instâncias de computação em cluster fornecem proporcionalmente CPU de alta performance com desempenho de rede maior e são adequadas para aplicativos de Computação de Alta Performance (HPC) e outros aplicativos relacionados à rede. As instâncias de armazenamento de alta capacidade oferecem 48 TB de armazenamento em 24 discos e são ideais para aplicativos que exigem acesso sequencial para conjuntos de dados de porte muito grande, como processamento de logs e warehouse de dados. Consulte a página de definição de preço do EMR para obter detalhes sobre definição de preço e tipos de instância disponíveis por região.

P: Como seleciono o tipo de instância correta do Amazon EC2?

Ao selecionar tipos de instância, você deve considerar as características do seu aplicativo com relação à utilização de recursos e selecionar a família de instância ideal. Uma das vantagens do Amazon EMR com Amazon EC2 é que você paga somente por aquilo que usar, o que o torna conveniente e econômico para testar o desempenho dos clusters em diferentes tipos de instâncias e quantidade. Uma forma efetiva de determinar o tipo de instância mais apropriado é iniciar vários clusters pequenos e assinalar os clusters.

P: Como seleciono o número correto de instâncias para o cluster?

O número de instâncias para usar no cluster depende do aplicativo e deve se basear na quantidade de recursos exigidos para armazenar e processar seus dados e na quantidade de tempo aceitável para que o trabalho seja concluído. Como uma diretriz geral, recomendamos que você limite 60% do espaço em disco para armazenar os dados que processará, deixando o restante para saída intermediária. Assim, considerando uma replicação de 3x no HDFS, se você pretendesse processar 5 TB em instâncias m1.xlarge, que têm 1.690 GB de espaço em disco, recomendamos que o cluster contenha pelo menos (5 TB * 3) / (1.690 GB * 0,6) = nós centrais de 15 m1.xlarge. Talvez você queira aumentar esse número se o trabalho gerar uma alta quantidade de dados intermediários ou tiver requisitos significativos de E/S. Talvez você também queira incluir nós de tarefas adicionais para aprimorar o desempenho do processamento. Consulte Tipos de instâncias do Amazon EC2 para obter detalhes sobre o armazenamento de instâncias locais para a configuração de cada tipo de instância.

P: Quanto tempo levará para executar o cluster?

O período para executar o cluster dependerá de vários fatores, incluindo o tipo de cluster, a quantidade de dados inseridos e o número e tipo de instâncias do Amazon EC2 selecionados para o cluster.

P: Se o nó principal em um cluster for desativado, o Amazon Elastic MapReduce poderá recuperá-lo?

Não. Se o nó principal for desativado, o cluster será encerrado e você terá de executar o trabalho novamente. No momento, o Amazon EMR não oferece suporte a failover automático dos nós mestre ou recuperação do estado dos nós mestre. Em caso de falha do nó principal, o AWS Management Console exibirá a mensagem "The master node was terminated" (O nó principal foi encerrado), que é uma indicação para que você inicie um novo cluster. Os clientes podem capacitar o ponto de verificação em seus cluster para salvar dados intermediários (dados criados durante um cluster que ainda não foram reduzidos) no Amazon S3. Isso permitirá a retomada do cluster a partir do último ponto de verificação em caso de falha.

P: Se um nó escravo for desativado em um cluster, o Amazon EMR poderá recuperá-lo?

Sim. O Amazon EMR é tolerante a falhas com relação a falhas escravas e continua a execução do trabalho se o nó escravo for desativado. Além disso, o Amazon EMR provisionará um novo nó quando um nó core falhar. No entanto, o Amazon EMR não substituirá nós se todos os nós do cluster falharem.

P: Posso executar o SSH nos nós do cluster?

Sim. É possível executar o SSH nos nós do cluster e executar comandos do Hadoop diretamente de lá. Se for necessário executar o SSH em um nó escravo, primeiro você tem de executar o SSH no nó mestre e, em seguida, fazê-lo no nó escravo.

P: Posso usar instâncias do Microsoft Windows com o Amazon EMR?

No momento, o Amazon EMR oferece suporte ao Debian/Lenny em modos de 32 e 64 bit. Sempre ouvimos o feedback dos clientes e vamos adicionar mais recursos ao longo do tempo para ajudar nossos clientes a solucionar seus problemas corporativos de data crunching.

P: Quais são as ações de Bootstrap do Amazon EMR?

O Bootstrap Actions é um recurso do Amazon EMR que fornece aos usuários uma forma de executar a configuração personalizada antes da execução do seu cluster. O Bootstrap Actions pode ser usado para instalar softwares ou configurar instâncias antes da execução do cluster. Você pode ler mais sobre as ações de bootstrap no Guia do desenvolvedor do EMR.

P: Como posso usar as ações de Bootstrap?

É possível gravar um script do Bootstrap Action em qualquer idioma já instalado na instância do cluster, incluindo Bash, Perl, Python, Ruby, C++ ou Java. Há vários Bootstrap Actions pré-definidos disponíveis. Assim que o script for gravado, será necessário fazer o upload do mesmo no Amazon S3 e mencionar sua localização ao iniciar um cluster. Consulte o “Guia do desenvolvedor”: http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/ para obter detalhes sobre como usar o Bootstrap Actions.

P: Como configuro as definições do Hadoop para o cluster?

A configuração padrão do Hadoop do EMR é apropriada para a maioria das cargas de trabalho. No entanto, com base nos requisitos e específicos de memória e processamento do cluster, talvez seja apropriado adaptar essas definições. Por exemplo, se as tarefas do cluster exigirem bastante memória, você poderá optar por usar menos tarefas por núcleo e reduzir o tamanho do heap do mecanismo de acompanhamento do trabalho. Para isso, um Bootstrap Action pré-definido está disponível para configurar o cluster na inicialização. Consulte Configurar ação de bootstrap que requer bastante memória no Guia do Desenvolvedor para obter detalhes de configuração e instruções de uso. Um bootstrap action pré-definido adicional está disponível, permitindo que você personalize as definições do cluster para qualquer valor selecionado. Consulte Configurar ação de bootstrap do Hadoop no Guia do desenvolvedor para obter instruções de uso.

P: Posso modificar o número de nós escravos em um cluster em execução?

Sim. Os nós escravos podem ser de dois tipos: (1) nós centrais, que hospedam dados persistentes usando Hadoop Distributed File System (HDFS) e executam tarefas do Hadoop e (2) nós de tarefas, que somente executam tarefas do Hadoop. Enquanto um cluster estiver sendo executado, você poderá aumentar o número de nós centrais e aumentar ou diminuir o número de nós de tarefa. Isso pode ser feito por meio da API, Java SDK ou do cliente da linha de comando. Consulte a seção Redimensionamento de clusters em execução no Guia do desenvolvedor para mais detalhes sobre como modificar o tamanho de um cluster em execução.

P: Quando vou desejar usar nós centrais em vez de nós de tarefas?

Como nós centrais hospedam dados persistentes no HDFS e não podem ser removidos, os nós centrais devem ser reservados para a capacidade que é exigida até que o cluster seja concluído. Como os nós de tarefas podem ser adicionados ou removidos e não contêm HDFS, são ideais para a capacidade que é necessária apenas temporariamente.

P: Por que eu desejaria modificar o número de nós escravos no cluster em execução?

Há vários cenários onde talvez você queira modificar o número de nós escravos em um cluster em execução. Se o cluster estiver sendo executado com mais lentidão do que o esperado ou os requisitos de sincronismo forem alterados, você poderá aumentar o número de nós centrais para aumentar o desempenho do cluster. Se fases diferentes do cluster tiverem necessidades de capacidade diferentes, você poderá começar com um número pequeno de nós centrais e aumentar ou diminuir o número de nós de tarefas para atender aos requisitos de capacidade variáveis do cluster.

P: Posso modificar automaticamente o número de nós escravos entre as etapas do cluster?

Sim. Você poderá incluir uma etapa pré-definida no fluxo de trabalho que redimensiona automaticamente um cluster entre as etapas que são conhecidas por ter diferentes necessidades de capacidade. Como é assegurado que todas as etapas são executadas sequencialmente, isso permite definir o número de nós escravos que executarão uma determinada etapa do cluster.

P: Como posso permitir que outros usuários de IAM acessem meu cluster?

Para criar um novo cluster que esteja visível para todos os usuários de IAM na CLI EMR: Acrescente o sinalizador --visible-to-all-users ao criar o cluster. Por exemplo: elastic-mapreduce --create --visible-to-all-users. No Management Console, basta selecionar “Visible to all IAM Users”, no painel Advanced Options, do Assistente de criação de cluster.

Para tornar um cluster existente visível para todos os usuários do IAM, é necessário usar a CLI EMR. Use --set-visible-to-all-users e especifique o identificador do cluster. Por exemplo: Elastic-mapreduce --set-visible-to-all-users true --jobflow j-xxxxxxx. Isso pode ser feito somente pelo autor do cluster.

Para saber mais, consulte a seção Configuring User Permissions do EMR Developer Guide.

Voltar ao início >>


P: Em quais recursos do Amazon EMR é possível colocar tag?

É possível adicionar tags a um cluster de Amazon EMR ativo. Um cluster de Amazon EMR consiste de instâncias do Amazon EC2, e um tag adicionado a um cluster de Amazon EMR será propagado para cada instância de Amazon EC2 ativa desse cluster. Não é possível adicionar, editar ou remover tags de clusters terminados ou instâncias de Amazon EC2 terminadas, que faziam parte de um cluster ativo.

P: A colocação de tag do Amazon EMR suporta permissões baseadas em recursos com usuários IAM?

Não, o Amazon EMR não suporta permissões baseadas em recursos por tag. No entanto, é importante notar que tags propagadas para instâncias de Amazon EC2 se comportam como tags normais do Amazon EC2. Portanto, uma política de IAM para Amazon EC2 atuará em tags propagadas do Amazon EMR se corresponderem às condições daquela política.

P: Quantas tags é possível adicionar a um recurso?

É possível adicionar até dez tags em um cluster do Amazon EMR.

P: Os tags em um cluster do Amazon EMR aparecem em cada instância do Amazon EC2 naquele cluster? Se remover um tag no cluster do Amazon EMR, esse tag será automaticamente removido de cada instância EC2 associada?

Sim, o Amazon EMR propaga as tags adicionadas a um cluster para instâncias do EC2 subjacentes ao cluster. Se adicionar uma tag a um cluster do Amazon EMR, ela aparecerá também em instâncias do Amazon EC2 relacionadas. Da mesma forma, se remover uma tag de um cluster do Amazon EMR, ela também será removida das instâncias do Amazon EC2 associadas. No entanto, se estiver usando políticas IAM para o Amazon EC2 e planeja usar a funcionalidade de colocação de tags do Amazon EMR, verifique se foi concedida a permissão para usar as APIs de colocação de tags do Amazon EC2: CreateTags e DeleteTags.

P: Como fazer os tags aparecerem na fatura para segmentar os custos?

Selecione as tags que você gostaria de usar no seu relatório de faturamento AWS aqui. Então, para ver o custo dos recursos combinados, é possível organizar suas informações de cobrança com base em recursos que têm os mesmos valores de chave de tag.

P: Como ver quais instâncias do Amazon EC2 são parte de um cluster do Amazon EMR?

Uma instância do Amazon EC2 associada a um cluster do Amazon EMR terá duas tags de sistema:

  • aws:elasticmapreduce:instance-group-role=CORE
    • Key = instance-group role ; Value = [CORE or TASK] 
  • aws:elasticmapreduce:job-flow-id=j-12345678
    • Key = job-flow-id ; Value = [JobFlowID]

P: É possível editar tags diretamente nas instâncias do Amazon EC2?

Sim, é possível adicionar ou remover tags diretamente nas instâncias do Amazon EC2 que fazem parte de um cluster do Amazon EMR. No entanto, não é recomendado fazer isso porque o sistema de colocação de tags do Amazon EMR não sincronizará as alterações feitas diretamente em uma instância do Amazon EC2 associada. É recomendado que as tags para clusters do Amazon EMR sejam adicionadas e removidas do console do Amazon EMR, CLI ou API para garantir que o cluster e suas instâncias do Amazon EC2 associadas tenham as tags corretas.

Voltar ao início >>

P: O que posso fazer agora que era impossível fazer antes?

A maioria das instâncias do EC2 têm capacidade de armazenamento fixa anexada à instância, conhecida como um "armazenamento de instâncias". Agora, é possível adicionar volumes do EBS às instâncias de um cluster do Amazon EMR, o que permite personalizar o armazenamento de uma instância. O recurso também permite executar clusters do Amazon EMR em famílias de instâncias somente EBS, como M4 e C4.

P: Quais são os benefícios da adição de volumes do EBS a uma instância executada no Amazon EMR?

A adição de volumes do EBS a uma instância é benéfica nos seguintes cenários:

  1. Seus requisitos de processamento exigem uma grande quantidade de armazenamento HDFS (ou local), maior que a disponível atualmente na instância. Com o suporte aos volumes do EBS, você será capaz de personalizar a capacidade de armazenamento em uma instância de acordo com a capacidade computacional fornecida pela instância. A otimização do armazenamento em uma instância permite reduzir custos.
  2. Você está executando em uma família de instâncias de uma geração anterior (como as famílias M1 e M2) e quer mudar para a família de instâncias da geração mais recente, mas enfrenta limitações no armazenamento disponível por nó nesses tipos de instância da próxima geração. Agora, é possível usar qualquer tipo de instância da nova geração e adicionar volumes do EBS para otimizar o armazenamento.  Comparações internas indicam que você pode reduzir o custo e aumentar o desempenho mudando de uma família de instâncias de geração anterior (M1 ou M2) para uma família da nova geração (M4, C4 e R3).  A equipe do Amazon EMR recomenda que você execute a aplicação para chegar à conclusão correta.
  3. Você quer usar ou migrar para as famílias somente EBS M4 e C4 da próxima geração.

P: Posso persistir dados em um volume do EBS após o encerramento de um cluster?

No momento, o Amazon EMR exclui os volumes no encerramento do cluster. Se você quiser persistir dados fora do ciclo de vida de um cluster, considere o uso do Amazon S3 como datastore.

P: Quais tipos de volumes do EBS posso anexar a uma instância?

O Amazon EMR permite usar tipos de volume do EBS diferentes: SSD de propósito geral (GP2), magnético e de IOPS provisionadas (SSD).

P: O que acontece com os volumes do EBS quando o cluster é encerrado?

O Amazon EMR exclui os volumes no encerramento do cluster do EMR.

P: Posso usar um EBS com instâncias que já têm um armazenamento de instâncias?

Sim, você pode adicionar volumes do EBS a instâncias que já têm um armazenamento de instâncias.

P: Posso anexar um volume do EBS a um cluster em execução?

Não. No momento, somente é possível adicionar volumes do EBS ao iniciar um cluster.

P: Posso obter snapshots de volumes de um cluster?

A API do EBS permite obter snapshots de um cluster. No entanto, no momento o Amazon EMR não permite restaurar um snapshot.

P: Posso usar volumes do EBS criptografados?

Não. A versão atual não é compatível com volumes criptografados.

P: O que acontecerá se um volume anexado for removido de um cluster em execução?

A remoção de um volume anexado de um cluster em execução será tratada como uma falha de nó.  O Amazon EMR substituirá o nó e o volume do EBS por outro nó e outro volume.

Voltar ao início >>


P: O que é o Apache Hive?

O Hive é um datawarehouse e um pacote analítico de código livre que é executado no topo do Hadoop. O Hive é operado por uma linguagem baseada em SQL chamada Hive QL, que permite que os usuários estruturem, resumam e consultem fontes de dados armazenadas no Amazon S3. O Hive QL vai além do SQL padrão, adicionando suporte de primeira classe às funções mapear/reduzir e a tipos de dados complexos e extensíveis definidos pelo usuário, como Json e Thrift. Essa capacidade permite o processamento de fontes de dados complexas e até não estruturadas, como documentos de texto e arquivos de log. O Hive permite extensões do usuário por meio de funções definidas por este gravadas em Java e implementadas via armazenamento no Amazon S3.

P: O que pode ser feito com o Hive sendo executado no Amazon EMR?

Usando o Hive com o Amazon EMR, é possível implementar aplicativos sofisticados de processamento de dados com uma linguagem familiar semelhante ao SQL e ferramentas fáceis de usar disponíveis com o Amazon EMR. Com o Amazon EMR, você pode transformar seus aplicativos Hive em um warehouse de dados confiável para executar tarefas como analítico de dados, monitoramento e de inteligência corporativa.

P: Como o Hive diferencia-se dos sistemas RDBMS tradicionais?

Os sistemas RDBMS tradicionais fornecem semântica de transação e propriedades ACID. Eles também permitem que tabelas sejam indexadas e armazenadas em cache, de forma que pequenas quantidades de dados possam ser recuperadas com bastante rapidez. Eles fornecem uma atualização rápida de pequenas quantidades de dados e a imposição de restrições referenciais de integridade. Normalmente, eles são executados em uma única máquina grande e não fornecem suporte para a execução das funções mapear e reduzir na tabela, nem a ações em tipos de dados complexos definidos pelo usuário.

Em contrapartida, o Hive executa consultas semelhantes ao SQL usando MapReduce. Consequentemente, ele é otimizado para realizar digitalizações de tabelas completas ao ser executado em um cluster de máquinas e, portanto, é capaz de processar grandes quantidades de dados. O Hive fornece tabelas particionadas, que permitem a digitalização de uma partição de uma tabela, em vez de toda a tabela, se isso for apropriado para a consulta que está executando.

Os sistemas RDMS tradicionais são ideais para quando a semântica transacional e a integridade referencial forem exigidas, e pequenas atualizações frequentes forem desempenhadas. O Hive é ideal para o informe off-line, a transformação e a análise de grandes conjuntos de dados; por exemplo, desempenhar a análise do fluxo de cliques em um site grande ou em um conjunto de sites.

Uma das práticas comuns é exportar dados dos sistemas RDBMS para o Amazon S3 onde a análise off-line pode ser desempenhada usando fluxos de trabalho do Amazon EMR executando o Hive.

P: Como posso começar a usar o Hive em execução no Amazon EMR?

O melhor ponto para começar é analisar nosso tutorial por escrito ou em vídeo localizado aqui http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2862

P: Há novos recursos no Hive específicos para o Amazon EMR?

Sim. Há quatro novos recursos que tornam o Hive ainda mais robusto quando usado com o Amazon EMR, incluindo:

a/ A capacidade de carregar partições de tabelas automaticamente com base no Amazon S3. Anteriormente, para importar uma tabela particionada, você precisava de uma instrução de tabela de alteração separada para cada partição individual na tabela. O Amazon EMR agora inclui um novo tipo de instrução para a linguagem Hive: "alter table recover partitions". Essa instrução permite que você importe facilmente tabelas de forma simultânea em muitos clusters sem ter de manter um repositório de metadados compartilhado. Use esta funcionalidade para ler com base em tabelas nas quais processos externos estão depositando dados, por exemplo arquivos de log.

b/ A capacidade de especificar um repositório de metadata fora da instância. Como padrão, o repositório de metadata onde o Hive armazena as informações do seu schema está localizado no nó principal e deixa de existir quando o cluster é encerrado. Esse recurso permite que você substitua a localização do repositório de metadata para uso, por exemplo, uma instância MySQL que já está sendo executada no EC2.

c/ Gravação de dados diretamente no Amazon S3. Ao gravar dados nas tabelas no Amazon S3, a versão do Hive instalada no Amazon EMR grava diretamente no Amazon S3 sem o uso de arquivos temporários. Isso gera uma melhoria de desempenho significativa, mas quer dizer que o HDFS e o S3 comportam-se de forma diferente com base em uma perspectiva do Hive. Não será possível ler e gravar na mesma instrução na mesma tabela se a tabela estiver localizada no Amazon S3. Se você quiser atualizar uma tabela localizada no S3, então crie uma tabela temporária no sistema de arquivos do HDFS local do cluster, grave os resultados na tabela e, em seguida, copie-os no Amazon S3.

d/ Acesso a recursos localizados no Amazon S3. A versão do Hive instalada no Amazon EMR permite que você mencione recursos como scripts para operações personalizadas de mapeamento e redução, ou bibliotecas adicionais localizadas no Amazon S3 diretamente com base no script do Hive (por ex., adicionar jar s3://elasticmapreduce/samples/hive-ads/libs/jsonserde.jar).

P: Quais tipos de clusters do Hive são compatíveis?

Há dois tipos de clusters compatíveis com o Hive: Interativo e em lote. Em um modo interativo, um cliente pode iniciar um cluster e executar scripts do Hive interativamente, direto no nó principal. Normalmente, esse modo é usado para executar análises de dados ad hoc e para o desenvolvimento de aplicativos. No modo em lote, o script do Hive é armazenado no Amazon S3 e é mencionado no início do cluster. Em geral, o modo em lote é usado para execuções repetíveis, como a geração de relatórios.

P: Como posso iniciar um cluster do Hive?

Os clusters em lote e interativos podem ser iniciados com base no AWS Management Console, no cliente de linha de comando do EMR ou em APIs. Consulte a seção Uso do Hive no Guia do desenvolvedor para obter mais detalhes sobre o início de um cluster do Hive.

P: Quando devo usar o Hive em vez do PIG?

O Hive e o PIG oferecem linguagens de processamento de dados de alto nível com suporte para tipos de dados complexos para a operação em conjuntos de dados grandes. A linguagem do Hive é uma variante do SQL e, portanto, é mais acessível para pessoas já familiarizadas com SQL e bancos de dados relacionais. O Hive tem suporte para tabelas particionadas que permitem que os clusters do Amazon EMR extraiam somente a partição da tabela relevante para a consulta sendo executada, em vez de realizar uma digitalização completa da tabela. O PIG e o Hive têm otimização de planos de consulta. O PIG pode otimizar uma gama de scripts completos, enquanto as consultas do Hive são otimizadas no nível de instrução.

Em uma análise, a escolha pelo uso do Hive ou PIG dependerá dos requisitos exatos do domínio do aplicativo e das preferências dos implementadores e daqueles que gravam consultas.

P: Qual versão do Hive é compatível com o Amazon EMR?

O Amazon EMR oferece suporte a várias versões do Hive, inclusive a versão 0.11.0.

P: Posso gravar em uma tabela com base em dois clusters simultaneamente

Não. O Hive não oferece suporte à gravação simultânea das tabelas. Você deve evitar a gravação simultânea na mesma tabela ou a leitura de uma tabela enquanto estiver gravando nela. O Hive tem um comportamento não determinístico ao ler e gravar ao mesmo tempo, ou ao gravar e gravar ao mesmo tempo.

P: Posso compartilhar dados entre clusters?

Sim. Você pode ler dados no Amazon S3 dentro de um script do Hive ao contar com instruções 'create external table' no topo do script. É necessário criar uma instrução de tabela para cada recurso externo acessado.

P: Devo executar um cluster grande e compartilhá-lo entre muitos usuários ou muitos clusters menores?

O Amazon EMR fornece uma capacidade exclusiva para uso de ambos os métodos. Por um lado, um cluster grande poderá ser mais eficiente para o processamento de cargas de trabalho em lote regulares. Por outro lado, se você exigir consultas ad hoc ou cargas de trabalho que variem com o tempo, poderá optar por criar vários clusters separados, adaptados para fontes de dados de compartilhamento de tarefas específicas armazenadas no Amazon S3.

P: Posso acessar um script ou recurso jar que esteja no sistema de arquivos local?

Não. É necessário fazer o upload do script ou jar no Amazon S3 ou no nó principal do cluster antes que ele possa ser referenciado. Para fazer o upload do Amazon S3, você pode usar ferramentas incluindo s3cmd, jets3t ou S3Organizer.

P: Posso executar um cluster persistente executando várias consultas Hive?

Sim. Execute um cluster em um modo de encerramento normal de forma que ele não seja encerrado entre as etapas do Hive. Para reduzir o risco da perda de dados, recomendamos a persistência periódica de todos os dados importantes no Amazon S3. Recomenda-se transferir regularmente seu trabalho para um novo cluster para testar o processamento quanto à recuperação de falhas do nó principal.

P: Vários usuários podem executar etapas do Hive nos mesmos dados de origem?

Sim. Os scripts do Hive executados por vários usuários em clusters separados poderão conter instruções criar tabelas externas para importar simultaneamente dados de origem que residem no Amazon S3.

P: Vários usuários podem executar consultas no mesmo cluster?

Sim. No modo em lote, as etapas são serializadas. Vários usuários podem adicionar etapas do Hive ao mesmo cluster, porém, as etapas serão executadas serialmente. No modo interativo, vários usuários podem ser conectados ao mesmo cluster e executar instruções do Hive simultaneamente.

P: Os dados podem ser compartilhados entre vários usuários do AWS?

Sim. Os dados podem ser compartilhados usando o mecanismo padrão de compartilhamento do Amazon S3 descrito aqui http://docs.amazonwebservices.com/AmazonS3/latest/index.html?S3_ACLs.html

P: O Hive suporta acesso com base no JDBC?

Sim. O Hive fornece a unidade JDBC, que pode ser usada para executar instruções do Hive de forma programada. Para iniciar um serviço do JDBC no cluster, é necessário transmitir um parâmetro opcional no cliente da linha de comando do Amazon EMR. Você também tem de estabelecer um túnel de SSH porque o grupo de segurança não permite conexões externas.

P: Qual é o procedimento para atualizar pacotes nas AMIs do EMR?

Executamos um conjunto selecionado de pacotes do Debian/stable, incluindo patches de segurança. Faremos o upgrade de um pacote sempre que houver o upgrade no Debian/stable. O pacote “r-recommended” em nossa imagem está atualizado com Debian/stable (http://packages.debian.org/search?keywords=r-recommended).

P: Posso atualizar meus próprios pacotes nos clusters EMR?

Sim. Você pode usar o Bootstrap Actions para instalar atualizações nos pacotes em seus clusters.

P: Posso processar dados do DynamoDB com o Hive?

Sim. Defina simplesmente uma tabela do Hive externa com base na sua tabela do DynamoDB. Você pode usar o Hive para analisar dados armazenados no DynamoDB e também carregar os resultados de volta no DynamoDB, ou arquivá-los no Amazon S3. Para obter mais informações, visite nosso Guia do desenvolvedor.

Voltar ao início >>


 

P: O que é o Impala?

Impala é uma ferramenta de código aberto no ecossistema Hadoop para consulta ad hoc interativa que usa sintaxe SQL. Em vez de usar o MapReduce, ele utiliza um mecanismo de processamento maciçamente paralelo (MPP) semelhante ao encontrado em sistemas de gestão tradicional de banco de dados relacional (RDBMS). Com essa arquitetura, é possível consultar os dados nas tabelas HDFS ou HBase muito rapidamente e aproveitar a capacidade do Hadoop em processar tipos de dados diversos e fornecer o schema em tempo de execução. Isto atribui o Impala à análise interativa e de baixa latência. Além disso, Impala usa o Hive Metastore para armazenar informações sobre os dados de entrada, incluindo os nomes de partição e tipos de dados. Também, o Impala no Amazon EMR requer AMIs executando Hadoop 2.x ou superior. Clique aqui para saber mais sobre o Impala.

P: O que pode ser feito com o Impala sendo executado no Amazon EMR?

Tão semelhante quanto usar o Hive com Amazon EMR, aproveitar o Impala com o Amazon EMR pode implementar aplicativos sofisticados de processamento de dados com sintaxe SQL. No entanto, o Impala é construído para executar mais rápido em certos casos de uso (veja abaixo). Com o Amazon EMR, é possível usar o Impala como um data warehouse confiável para executar tarefas como análise de dados, de monitoramento e de inteligência corporativa. Aqui estão três casos de uso:

  • Use o Impala em vez do Hive em clusters de longa duração para executar consultas ad hoc. O Impala reduz consultas interativas para segundos, tornando-o uma excelente ferramenta para rápida investigação. É possível executar o Impala no mesmo cluster que os fluxos de trabalho de MapReduce de lote, usar Impala em um cluster de análise de longa duração com o Hive e o Pig ou criar um cluster especificamente sintonizado para consultas do Impala.
  • Use o Impala em vez do Hive para jobs em ETL de lote em clusters transitórios do Amazon EMR. O Impala é mais rápido do que o Hive para muitas consultas, o que fornece melhor desempenho para essas cargas de trabalho. Tal como o Hive, o Impala usa SQL; portanto, as consultas podem ser facilmente modificadas do Hive para o Impala.
  • Use o Impala junto com uma ferramenta de inteligência empresarial de um terceiro. Conecte um cliente ODBC ou driver JDBC com o cluster para usar o Impala como mecanismo para painéis e ferramentas poderosos de visualização.

Tanto os clusters interativos quanto em lote do Impala podem ser criados no Amazon EMR. Por exemplo, é possível ter um cluster do Amazon EMR de longa duração executando o Impala para consultas ad hoc interativas ou usar clusters transitórios do Impala para fluxos de trabalho ETL rápidos.

P: Qual é a diferença do Impala para os RDBMSs tradicionais?

Sistemas de banco de dados relacional tradicionais fornecem semântica de transação e atomicidade de banco de dados, consistência, isolamento e propriedades (ACID) de durabilidade. Eles também permitem que as tabelas sejam indexadas e armazenadas em cache para que pequenas quantidades de dados possam ser recuperadas rapidamente, forneçam atualizações rápidas de pequenas quantidades de dados e para a imposição de restrições de integridade referencial. Normalmente, eles são executados em uma única máquina grande e não fornecem suporte para agir em tipos complexos de dados definidos pelo usuário. O Impala usa um sistema similar de consulta distribuída para aquela descoberta em RDBMSs, porém consulta os dados armazenados no HDFS e usa o Hive Metastore para armazenar informações sobre os dados de entrada. Tal como acontece com o Hive, o schema para uma consulta é fornecido em tempo de execução, permitindo alterações de schema com maior facilidade. Além disso, o Impala pode consultar uma variedade de tipos complexos de dados e executar as funções definidas pelo usuário. No entanto, porque o Impala processa dados na memória, é importante compreender as limitações de hardware do cluster e otimizar as consultas para o melhor desempenho.

P: Qual é a diferença do Impala para o Hive?

O Impala executa consultas SQL usando um mecanismo de processamento maciçamente paralelo (MPP), enquanto o Hive executa consultas SQL usando o MapReduce. O Impala evita sobrecargas do Hive em criar jobs no MapReduce, dando-lhe tempos de consulta mais rápidos do que o Hive. No entanto, o Impala usa recursos de memória significativos e a memória disponível do cluster coloca uma restrição na quantidade de memória que qualquer consulta possa consumir. O Hive não é limitado da mesma forma e pode processar com êxito conjuntos de dados maiores com o mesmo hardware. Geralmente, você deve usar o Impala para consultas rápidas, interativas, enquanto o Hive é melhor para cargas de trabalho ETL em grandes conjuntos de dados. O Impala é construído para a velocidade e é ótima para consulta ad hoc, mas requer uma quantidade significativa de memória para executar consultas caras ou processar conjuntos de dados muito grandes. Devido a essas limitações, o Hive é recomendado para cargas de trabalho onde a velocidade não é tão crucial quanto a conclusão. Clique aqui para visualizar alguns benchmarks de desempenho entre o Impala e o Hive.

P: É possível usar Hadoop 1?

Não, o Impala requer o Hadoop 2 e não será executado em um cluster com um AMI executando o Hadoop 1. x.

P: Que tipos de instância são necessários usar para o cluster do Impala?

Para a melhor experiência com o Impala, recomendamos o uso de instâncias de memória otimizadas para o seu cluster. No entanto, mostramos que existem ganhos de desempenho no Hive quando se usa também tipos de instância padrão. Sugerimos ler nossa seção de Testes de Desempenho e Otimização de Consulta no Guia do Desenvolvedor Amazon EMR para melhor estimar os recursos de memória que o cluster precisará com relação aos tipos de conjunto de dados e consulta. O tipo de compressão, as partições e a consulta real (número de junções, tamanho do resultado, etc.) todos desempenham um papel na memória necessária. Você pode usar o comando EXPLAIN para estimar a memória e outros recursos necessários para uma consulta do Impala.

P: O que acontece se a memória acabar durante uma consulta?

Se memória acabar, as consultas falham e o daemon do Impala instalado no nó afetado é desligado. Em seguida, o Amazon EMR reinicia o daemon no nó para que o Impala esteja pronto para executar outra consulta. Seus dados no HDFS no nó permanecem disponíveis, porque somente o daemon em execução no nó é desligado, ao invés do nó inteiro em si. Para a análise ad-hoc com Impala, o tempo de consulta muitas vezes pode ser medido em segundos; portanto, se uma consulta falhar, é possível descobrir o problema rapidamente e será possível apresentar uma nova consulta em rápida sucessão.

P: O Impala suporta funções definidas pelo usuário?

Sim, o Impala suporta funções definidas pelo usuário (UDFs). Você pode gravar UDFs específicos do Impala no Java ou C++. Além disso, é possível modificar UDFs ou funções de agregação definidas pelo usuário criadas para o Hive para uso com o Impala. Para obter mais informações sobre as UDFs do Hive, clique aqui.

P: Onde são armazenados os dados para o Impala consultar?

O Impala consulta dados nas tabelas HDFS ou HBase.

P: É possível executar o Impala e o MapReduce ao mesmo tempo em um cluster?

Sim, é possível configurar um cluster de múltiplos usuários com o Impala e o MapReduce. No entanto, deve-se alocar recursos (memória, disco e CPU) para cada aplicativo usando o YARN no Hadoop 2.x. Os recursos alocados devem depender das necessidades de jobs que você pretende executar em cada aplicativo.

P: O Impala suporta drivers ODBC e JDBC?

O Impala usa drivers ODBC além de ser um grande mecanismo para ferramentas de terceiros conectados através do JDBC. Você pode baixar e instalar o driver JDBC do cliente Impala pelo link http://elasticmapreduce.s3.amazonaws.com/libs/impala/1.2.1/impala-jdbc-1.2.1.zip. Do computador cliente onde a ferramenta de inteligência empresarial está instalada, conecte o driver JDBC ao nó principal de um cluster de Impala usando SSH ou uma VPN na porta 21050. Para obter mais informações, consulte Open an SSH Tunnel to the Master Node.

Voltar ao início >>


P: O que é o Apache Pig?

O Pig é um pacote analítico de código livre que é executado no topo do Hadoop. O Pig é operado por uma linguagem semelhante ao SQL chamada Pig Latin, que permite que os usuários estruturem, resumam e consultem fontes de dados armazenadas no Amazon S3. Assim como as operações semelhantes ao SQL, o Pig Latin também adiciona suporte de primeira classe para funções mapear/reduzir e tipos de dados complexos e extensíveis definidos pelo usuário. Essa capacidade permite o processamento de fontes de dados complexas e até não estruturadas, como documentos de texto e arquivos de log. O Pig permite extensões de usuário por meio de funções definidas por este gravadas no Java e implementadas via armazenamento no Amazon S3.

P: O que pode ser feito com o Pig sendo executado no Amazon EMR?

Usando o Pig com o Amazon EMR, você pode implementar aplicativos de processamento de dados sofisticados com uma linguagem familiar semelhante ao SQL e ferramentas fáceis de usar com o Amazon EMR. Com o Amazon EMR, você pode transformar os aplicativos Pig em um warehouse de dados confiável para executar tarefas como analítico de dados, de monitoramento e de inteligência corporativa.

P: Como posso começar a usar o Pig sendo executado no Amazon EMR?

O melhor ponto para começar é analisar nosso tutorial por escrito ou em vídeo localizado aqui http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2735&categoryID=269

P: Há recursos novos no Pig específicos do Amazon EMR?

Sim. Há três novos recursos que tornam o Pig ainda mais robusto quando usado com o Amazon EMR, incluindo:

a/ Acesso a vários sistemas de arquivos. Como padrão, um trabalho do Pig pode acessar somente um sistema de arquivos remoto, seja um repositório do HDFS ou um balde do S3, para dados de entrada, de saída e temporários. O EMR estendeu o Pig para que qualquer trabalho possa acessar quantos sistemas de arquivos desejar. Uma vantagem disso é que os dados intratrabalho temporários sempre são armazenados no HDFS local, gerando maior desempenho.

b/ Carregamento de recursos do S3. O EMR estendeu o Pig de forma que JARs e scripts personalizados possam ser extraídos do sistema de arquivos do S3, por exemplo “REGISTER s3:///my-bucket/piggybank.jar”

c/ Função adicional Piggybank para processamento de String e DateTime. Eles estão documentados aqui http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2730.

P: Quais tipos de clusters do Pig são compatíveis?

Há dois tipos de cluster compatíveis com o Pig: Interativo e em lote. Em um modo interativo, um cliente pode iniciar um cluster e executar scripts do Pig interativamente, direto no nó principal. Normalmente, esse modo é usado para executar análises de dados ad hoc e para o desenvolvimento de aplicativos. No modo em lote, o script do Pig é armazenado no Amazon S3 e é mencionado no início do cluster. Em geral, o modo em lote é usado para execuções repetíveis, como a geração de relatórios.

P: Como posso iniciar um cluster do Pig?

Os clusters em lote e interativos podem ser iniciados com base no AWS Management Console, no cliente de linha de comando do EMR ou em APIs.

P: Qual versão do Pig é compatível com o Amazon EMR?

O Amazon EMR oferece suporte a várias versões do Pig, inclusive a 0.11.1.

P: Posso gravar em um bucket do S3 com base em dois clusters simultaneamente

Sim, você pode gravar no mesmo bucket com base em dois clusters simultâneos.

P: Posso compartilhar dados de entrada no S3 entre clusters?

Sim, você pode ler os mesmos dados no S3 com base em dois clusters.

P: Os dados podem ser compartilhados entre vários usuários do AWS?

Sim. Os dados podem ser compartilhados usando o mecanismo padrão de compartilhamento do Amazon S3 descrito aqui http://docs.amazonwebservices.com/AmazonS3/latest/index.html?S3_ACLs.html

P: Devo executar um cluster grande e compartilhá-lo entre muitos usuários ou muitos clusters menores?

O Amazon EMR fornece uma capacidade exclusiva para uso de ambos os métodos. Por um lado, um cluster grande poderá ser mais eficiente para o processamento de cargas de trabalho em lote regulares. Por outro lado, se você exigir consultas ad hoc ou cargas de trabalho que variem com o tempo, poderá optar por criar vários clusters separados, adaptados para fontes de dados de compartilhamento de tarefas específicas armazenadas no Amazon S3.

P: Posso acessar um script ou recurso jar que esteja no sistema de arquivos local?

Não. É necessário fazer o upload do script ou jar no Amazon S3 ou no nó principal do cluster antes que ele possa ser referenciado. Para fazer o upload do Amazon S3, você pode usar ferramentas incluindo s3cmd, jets3t ou S3Organizer.

P: Posso executar um cluster existente executando várias consultas Pig?

Sim. Execute um cluster em um modo de encerramento manual de forma que ele não encerre entre etapas do Pig. Para reduzir o risco da perda de dados, recomendamos a persistência periódica de todos os dados importantes no Amazon S3. Recomenda-se transferir regularmente seu trabalho para um novo cluster para testar o processamento quanto à recuperação de falhas do nó principal.

P: O Pig suporta acesso com base no JDBC?

Não. O Pig não suporta acesso por meio do JDBC.

Voltar ao início >>


P: O que é o Apache HBase?

HBase é um banco de dados de código aberto, não relacional e distribuído, modelado de acordo com o BigTable da Google. Foi desenvolvido como parte do projeto Hadoop da Apache Software Foundation e é executado sobre o Hadoop Distributed File System(HDFS) para fornecer recursos similares aos da BigTable para Hadoop. O HBase fornece uma maneira eficiente, tolerante a falhas, de armazenar grandes quantidades de dados esparsos usando compressão e armazenamento baseado em colunas. Além disso, o HBase oferece consulta de dados rápida, pois os dados são armazenados na memória, em vez de no disco. O HBase é otimizado para operações de gravação sequencial, e é altamente eficiente para inserções, atualizações e exclusões em lote. O HBase funciona sem dificuldade com o Hadoop, compartilhando seu sistema de arquivos e servindo como entrada e saída direta para os trabalhos do Hadoop. O HBase também se integra ao Apache Hive, possibilitando consultas tipo SQL em tabelas HBase, junções com tabelas baseadas no Hive e suporte para Java Database Connectivity (JDBC).

P: Há novos recursos no HBase específicos para o Amazon EMR?

Com o EMR, você pode fazer backup do HBase no Amazon S3 (total ou incremental, manual ou automático) e você pode restaurar de um backup criado anteriormente. Saiba mais sobre o HBase e o EMR.

P: Quais versões do HBase são compatíveis com o Amazon EMR?

O Amazon EMR é compatível com o HBase 0.94.7 e HBase 0.92.0. Para usar o HBase 0.94.7, você precisa especificar AMI versão 3.0.0. Se estiver usando a CLI, precisa usar a versão 2013-10-07 ou posterior.

Voltar ao início >>


P: O que o conector EMR para o Kinesis possibilita?

O conector possibilita que o EMR leia e consulte dados diretamente de streams do Kinesis. Agora você pode executar o processamento em lote de streams do Kinesis usando ferramentas já existentes do ecossistema do Hadoop como o Hive, Pig, MapReduce, Streaming do Hadoop e o Cascading.

P: O que o conector do EMR para o Kinesis possibilita que eu não podia fazer antes?

Ler e processar dados de um stream do Kinesis necessitaria que você escrevesse, implementasse e mantivesse aplicativos independentes de processamento de streams. Estes consomem tempo e esforço. Porém, com este conector, você pode começar a ler e analisar um stream do Kinesis escrevendo um simples script do Hive ou Pig. Isso significa que você pode analisar os streams do Kinesis usando SQL! Obviamente, outras ferramentas do ecossistema do Hadoop podem ser usadas também. Você não precisa desenvolver ou manter um novo conjunto de aplicativos de processamento.

P: Quem irá considerar útil esta funcionalidade?

Os seguintes tipos de usuários acharão esta integração útil:

  • Usuários do Hadoop interessados em utilizar a extensa gama de ferramentas do ecossistema do Hadoop para analisar streams do Kinesis.
  • Usuários do Kinesis que procuram uma forma fácil de começarem no processamento de streams e ETL de dados do Kinesis.
  • Analistas de negócios e profissionais de TI que gostariam de executar análises diretas de dados em streams do Kinesis usando ferramentas familiares como o SQL (através do Hive) ou linguagens de script como o Pig.

P: Quais são alguns casos de uso para esta integração?

Estes são alguns casos de uso representativos possibilitados por esta integração:

  • Análise de log de streaming: Você pode analisar logs web de streaming para gerar uma lista dos 10 maiores tipos de erros, em intervalos de minutos, por região, navegador e domínios de acesso.
  • Fluxos de trabalho complexos de processamento de dados: Você pode juntar um stream do Kinesis a dados armazenados no S3, tabelas do DynamoDB e HDFS. Você pode escrever consultas que unem dados de rastro de cliques do Kinesis com informações de uma campanha de anúncios armazenadas em uma tabela do DynamoDB para identificar as categorias mais efetivas de anúncios exibidos em determinados websites.
  • Consultas diretas: Você pode carregar periodicamente dados do Kinesis no HDFS e torná-lo disponível como uma tabela local do Impala para realizar consultas velozes, interativas e analíticas.

P: Qual versão da AMI do EMR eu preciso para poder usar o conector?

Você precisa usar a AMI do EMR nas versões 3.0.4 e superiores.

P: O conector é uma ferramenta separada?

Não, ele é um componente integrado da distribuição Hadoop da Amazon e está presente na AMI do EMR nas versões 3.0.4 e superiores. O cliente precisa apenas ativar um cluster com a AMI versão 3.0.4 ou superior para começar a usar este recurso.

P: Qual formato de dados é necessário para permitir que o EMR leia um stream do Kinesis?

A integração do EMR com o Kinesis não tem um tipo de dados específico. Você pode ler dados em qualquer formato. Registros individuais do Kinesis são apresentados ao Hadoop como registros comuns que podem ser lidos com qualquer estrutura de MapReduce do Hadoop. Estruturas individuais como o Hive, Pig e o Cascading têm componentes integrados que ajudam na serialização e desserialização, tornando fácil para os desenvolvedores consultarem dados em diversos formatos ser terem de implementar código próprio. Por exemplo, no Hive os usuários podem ler dados de arquivos JSON, arquivos XML e arquivos SEQ especificando o Hive SerDe apropriado ao definirem a tabela. O Pig tem um componente similar chamado Loadfunc/Evalfunc e o Cascading tem um componente similar chamado Tap. Os usuários do Hadoop podem aproveitar o amplo ecossistema de adaptadores do Hadoop sem terem de escrever código para formatos específicos. Você também pode implementar formatos customizados de desserialização para ler dados específicos de domínio em qualquer uma destas ferramentas.

P: Como analiso um stream do Kinesis usando o Hive no EMR?

Crie uma tabela que faz referência a um stream do Kinesis. Então, analise a tabela como com qualquer outra tabela no Hive. Veja a nossa página de tutoriais para maiores detalhes.

P: Usando o Hive, como eu crio consultas que combinam dados de um stream do Kinesis com outra fonte de dados?

Primeiro, crie uma tabela que referencia um stream do Kinesis. Criada a tabela do Hive, você pode fazer a união (join) dela com tabelas que apontam para outras fontes de dados como o Amazon S3, Amazon DynamoDB e o HDFS. Efetivamente isto resulta na união de dados de um stream do Kinesis com outras fontes de dados.

P: Esta integração só é disponível para o Hive?

Não, você pode utilizar o Hive, Pig, MapReduce, Hadoop Streaming e o Cascading.

P: Como configuro tarefas agendadas para executarem em um stream do Kinesis?

O conector de entrada do EMR do Kinesis oferece recursos que ajudam a configurar e gerenciar tarefas agendadas periódicas em mecanismos tradicionais de agendamento como o Cron. Por exemplo, você pode desenvolver um script do Hive que executa a cada N minutos. Nos parâmetros de configuração de uma tarefa, você pode especificar um nome lógico para a tarefa. O nome lógico é um rótulo que irá informar o conector de entrada do EMR do Kinesis quais instâncias individuais da tarefa são membros do mesmo agendamento periódico. O nome lógico permite que o processo aproveite a iteratividade, o que é explicado a seguir.

Como o MapReduce é um framework de processamento em lotes, para analisar um stream do Kinesis com o EMR o stream contínuo é dividido em lotes. Cada lote é chamado de uma iteração. Cada iteração recebe um número, começando com 0. Os limites de cada iteração são definidos por um número de início de sequência e um número de fim de sequência. As iterações são então processadas sequencialmente pelo EMR.

Na ocasião de falha de uma das tentativas, o conector de entrada do EMR do Kinesis irá tentar executar a iteração novamente, no contexto do nome lógico, a partir do número de início de sequência da iteração. Esta funcionalidade garante que sucessivas tentativas na mesma iteração terão precisamente os mesmos registros de entrada do stream do Kinesis que as tentativas anteriores. Isto garante o processamento idempotente (consistente) do stream do Kinesis.

Você pode especificar nomes lógicos e iterações como parâmetros de tempo de execução nas suas respectivas ferramentas do Hadoop. Por exemplo, na seção “Executando consultas com pontos de verificação” do tutorial, o exemplo de código demonstra uma consulta agendada do Hive que designa um nome lógico para a consulta e incrementa a iteração a cada execução consecutiva da tarefa.

Adicionalmente, um script de exemplo de agendamento com o cron é fornecido nos tutoriais.

P: Onde os metadados para os nomes lógicos e iterações são armazenados?

Os metadados que permitem ao conector de entrada do EMR do Kinesis funcionar integrado a fluxos de trabalho periódicos agendados são armazenados no Amazon DynamoDB. Você deve provisionar uma tabela do Amazon DynamoDB e especificá-la como um parâmetro de entrada na tarefa do Hadoop. É importante que você configure as IOPS apropriadas para a tabela para permitir esta integração. Verifique o tutorial de conceitos básicos para obter mais informações sobre a configuração da sua tabela do Amazon DynamoDB.

P: O que acontece quando o processamento de uma iteração falha?

Os identificadores de iteração são valores fornecidos pelo usuário que são mapeados dentro de um limite específico (números de início e fim de sequência) em um stream do Kinesis. Os dados correspondentes a estes limites são carregados na fase Map da tarefa MapReduce. Esta fase é gerenciada pelo framework e será automaticamente reexecutada (três vezes por padrão) no caso de uma falha na tarefa. Se todas as tentativas falharem, você ainda teria as opções de tentar novamente o processamento a partir do último limite de dados executado com sucesso ou limites anteriores de dados. Este comportamento é controlado com o fornecimento do parâmetro kinesis.checkpoint.iteration.no durante o processamento. Verifique o tutorial de conceitos básicos para obter mais informações sobre como este valor é configurado para diferentes ferramentas do ecossistema do Hadoop.

P: Posso executar múltiplas consultas na mesma iteração?

Sim, você pode especificar uma iteração executada anteriormente configurando o parâmetro kinesis.checkpoint.iteration.no em cada processamento sucessivo. A implementação garante que as execuções sucessivas na mesma iteração terão precisamente os mesmos registros de entrada do stream do Kinesis que as execuções anteriores.

P: O que acontece se os registros em uma iteração expiram no stream do Kinesis?

Na ocasião do número de início de sequência e/ou o número de fim de sequência de uma iteração pertencerem a registros que estejam expirados no stream do Kinesis, a tarefa do Hadoop irá falhar. Você precisaria utilizar um nome lógico diferente para processar os dados do início do stream do Kinesis.

P: Posso enviar dados do EMR para um stream do Kinesis?

Não. O conector do EMR do Kinesis atualmente não dá suporte à escrita de dados de volta no stream do Kinesis.

P: O conector de entrada do EMR do Hadoop para o Kinesis permite o processamento contínuo do stream?

O framework de MapReduce do Hadoop é um sistema de processamento em lotes. Portanto, ele não oferece suporte a consultas contínuas. Porém, há um conjunto emergente de frameworks do ecossistema do Hadoop, como o Twitter Storm e o Spark Streaming, que permitem aos desenvolvedores criarem aplicativos para processamento contínuo de streams. Um conector do Storm para o Kinesis está disponível no GitHub aqui, e você pode encontrar um tutorial explicando a configuração do Spark Streaming no EMR e execução de consultas contínuas aqui.

Adicionalmente, os desenvolvedores podem utilizar a biblioteca cliente do Kinesis para desenvolver aplicativos de processamento em tempo real de streams. Você pode encontrar mais informações sobre o desenvolvimento de aplicativos customizados para o Kinesis na documentação do Kinesis aqui.

P: Posso especificar uma credencial de acesso para ler um stream do Kinesis que é gerenciado em outra conta da AWS?

Sim. Você pode ler streams de outra conta da AWS especificando as credenciais de acesso apropriadas da conta que controla o stream do Kinesis. Por padrão, o conector do Kinesis usa as credenciais de acesso fornecidas pelo usuário que são especificadas quando o cluster é criado. Você pode substituir estas credenciais para acessar streams de outras contas da AWS configurando os parâmetros kinesis.accessKey e kinesis.secretKey. Os exemplos seguintes mostram como configurar os parâmetros kinesis.accessKey e kinesis.secretKey no Hive e Pig.

Exemplo de código do Hive:
...
ARMAZENADO POR
'com.amazon.emr.kinesis.hive.KinesisStorageHandler'
TBLPROPERTIES(
"kinesis.accessKey"="AwsAccessKey",
"kinesis.secretKey"="AwsSecretKey",
);

Exemplo de código do Pig:

raw_logs = LOAD 'AccessLogStream' USING com.amazon.emr.kinesis.pig.Kin
esisStreamLoader('kinesis.accessKey=AwsAccessKey', 'kinesis.secretKey=AwsSecretKey'
) AS (line:chararray);

P: Posso executar múltiplas consultas em paralelo em um único stream do Kinesis? Há impacto no desempenho?

Sim, um cliente pode executar múltiplas consultas paralelas no mesmo stream utilizando nomes lógicos individuais para cada consulta. Porém, a leitura de um particionamento em um stream do Kinesis tem um limite de transmissão de 2 MB por segundo. Portanto, se há N consultas paralelas executando no mesmo stream, cada uma conseguiria atingir uma taxa de saída de (2/N) MB por segundo por partição no stream. Isto pode tornar o processamento mais lento e em alguns casos ocasionar a falha das consultas também.

P: Posso unir e analisar múltiplos streams do Kinesis no EMR?

Sim, por exemplo, no Hive, você pode criar duas tabelas mapeadas para dois streams distintos do Kinesis e criar uniões entre as tabelas.

P: O conector do EMR do Kinesis faz o tratamento de eventos de escalabilidade do Kinesis, como fusão e divisão?

Sim. A implementação trata eventos de divisão e fusão. O conector do Kinesis faz ligações de partições individuais do Kinesis (a unidade lógica de escala em um stream do Kinesis) com tarefas de mapeamento do Hadoop MapReduce. Cada partição individual existente em um stream no período lógico de uma iteração irá resultar em exatamente uma tarefa de mapeamento. No caso de um evento de divisão ou fusão de partição, o Kinesis irá provisionar novos Ids únicos de partições. Como resultado, o framework do MapReduce irá provisionar mais tarefas de mapeamento para leitura do Kinesis. Tudo isso é transparente para o usuário.

P: O que acontecerá se houverem períodos de “silêncio” no meu stream?

A implementação permite que você configure um parâmetro chamado kinesis.nodata.timeout. Por exemplo, considere um cenário onde o kinesis.nodata.timeout esteja configurado para 2 minutos e você queira executar uma consulta do Hive a cada 10 minutos. Também leve em consideração que alguns dados foram escritos no stream após a última iteração (há 10 minutos atrás). Porém, no momento nenhum novo registro está chegando, ou seja, há silêncio no stream. Neste caso, quando a iteração atual da consulta executar, o conector do Kinesis observará que não há novos registros chegando. O conector continuará verificando o stream por 2 minutos e se nenhum registro chegar neste intervalo ele irá parar e processar apenas os registros que já foram lidos no lote atual do stream. Porém, se novos registros começarem a chegar antes do fim do intervalo kinesis.nodata.timeout, então o conector irá aguardar por um intervalo adicional correspondente a um parâmetro chamado kinesis.iteration.timeout. Veja os tutoriais para verificar como definir estes parâmetros.

P: Como depuro uma consulta que falha continuamente em cada iteração?

Na ocasião de uma falha de processamento, você pode utilizar as mesmas ferramentas que usa para depurar tarefas do Hadoop. Incluindo o web console do Amazon EMR, que ajuda a identificar e acessar logs de erro. Mais detalhes sobre a depuração de uma tarefa do EMR podem ser encontrados aqui.

P: O que acontece se eu especificar uma tabela do DynamoDB à qual eu não tenha acesso?

A tarefa irá falhar e a exceção irá aparecer nos logs de erro da tarefa.

P: O que acontece se uma tarefa não falha mas a verificação junto ao DynamoDB falha?

A tarefa irá falhar e a exceção irá aparecer nos logs de erro da tarefa.

P: Como maximizo a taxa de transferência de leitura do stream do Kinesis para o EMR?

A taxa de transferência de leitura do stream do Kinesis aumenta de acordo com o tamanho da instância utilizada e o tamanho do registro no stream do Kinesis. Recomendamos que você utilize m1.xlarge ou superior para os nós master e core para este recurso.

Voltar ao início >>