Para melhorar a eficiência de uma aplicação Spark, é essencial monitorar seu desempenho e comportamento. Nesta postagem, demonstramos como publicar métricas detalhadas do Spark de Amazon EMR para Amazon CloudWatch. Isso lhe dará a capacidade de identificar gargalos e, ao mesmo tempo, otimizar a utilização de recursos.
O CloudWatch fornece uma solução de monitoramento robusta, escalonável e econômica para recursos e aplicações da AWS, com poderosas opções de personalização e integração perfeita com outros serviços da AWS. Por padrão, o Amazon EMR envia métricas básicas ao CloudWatch para rastrear a atividade e a integridade de um cluster. O sistema de métricas configuráveis do Spark permite que as métricas sejam coletadas em vários coletores, incluindo arquivos HTTP, JMX e CSV, mas é necessária configuração adicional para permitir que o Spark publique métricas no CloudWatch.
Visão geral da solução
Esta solução inclui configuração do Spark para enviar métricas para um coletor personalizado. O coletor personalizado coleta apenas as métricas definidas em um arquivo Metricfilter.json. Ele utiliza o agente CloudWatch para publicar as métricas em um namespace personalizado do Cloudwatch. O script de ação de bootstrap incluído é responsável por instalar e configurar o agente CloudWatch e a biblioteca de métricas no Amazon Elastic Compute Nuvem (Amazon EC2) Instâncias EMR. Um painel do CloudWatch pode fornecer insights instantâneos sobre o desempenho de um aplicativo.
O diagrama a seguir ilustra a arquitetura e o fluxo de trabalho da solução.
O fluxo de trabalho inclui as seguintes etapas:
- Os usuários iniciam um trabalho do Spark EMR, criando uma etapa no cluster do EMR. Com o Apache Spark, a carga de trabalho é distribuída entre os diferentes nós do cluster EMR.
- Em cada nó (instância EC2) do cluster, uma biblioteca Spark captura e envia dados métricos para um agente CloudWatch, que agrega os dados métricos antes de enviá-los para o CloudWatch a cada 30 segundos.
- Os usuários podem visualizar as métricas acessando o namespace personalizado no console do CloudWatch.
Nós fornecemos um Formação da Nuvem AWS modelo nesta postagem como um guia geral. O modelo demonstra como configurar um agente do CloudWatch no Amazon EMR para enviar métricas do Spark ao CloudWatch. Você pode revisá-lo e personalizá-lo conforme necessário para incluir as configurações de segurança do Amazon EMR. Como prática recomendada, recomendamos incluir as configurações de segurança do Amazon EMR no modelo para criptografar dados em trânsito.
Você também deve estar ciente de que alguns dos recursos implantados por esta pilha incorrem em custos quando permanecem em uso. Adicionalmente, Métricas EMR não incorra em custos do CloudWatch. No entanto, as métricas personalizadas incorrem em cobranças com base nos preços das métricas do CloudWatch. Para mais informações, veja Preços do Amazon CloudWatch.
Nas próximas seções, passamos pelas seguintes etapas:
- Crie e carregue a biblioteca de métricas, o script de instalação e a definição de filtro para um Serviço de armazenamento simples da Amazon (Amazon S3).
- Use o modelo CloudFormation para criar os seguintes recursos:
- Monitore as métricas do Spark no console do CloudWatch.
Pré-requisitos
Este post pressupõe que você tenha o seguinte:
- An Conta da AWS.
- Um bucket S3 para armazenar o script de bootstrap, a biblioteca e a definição de filtro de métrica.
- Uma VPC criada em Nuvem virtual privada da Amazon (Amazon VPC), onde seu cluster EMR será iniciado.
- Funções de serviço padrão do IAM para permissões do Amazon EMR para serviços e recursos da AWS. Você pode criar essas funções com o comando aws emr create-default-roles no arquivo Interface de linha de comando da AWS (AWSCL).
- Um par de chaves EC2 opcional, se você planeja se conectar ao cluster por meio de SSH em vez de Session Manager, uma capacidade de Gerente de Sistemas AWS.
Defina as métricas necessárias
Para evitar o envio de dados desnecessários ao CloudWatch, nossa solução implementa um filtro de métrica. Reveja o Documentação do Spark para se familiarizar com os namespaces e suas métricas associadas. Determine quais métricas são relevantes para sua aplicação específica e metas de desempenho. Diferentes aplicações podem exigir métricas diferentes para monitorar, dependendo da carga de trabalho, dos requisitos de processamento de dados e dos objetivos de otimização. Os nomes das métricas que você deseja monitorar devem ser definidos no arquivo Metricfilter.json, juntamente com seus namespaces associados.
Criamos um exemplo de definição de Metricfilter.json, que inclui a captura de métricas relacionadas à E/S de dados, coleta de lixo, pressão de memória e CPU e métricas de trabalho, estágio e tarefa do Spark.
Observe que determinadas métricas não estão disponíveis em todas as versões do Spark (por exemplo, appStatus foi introduzido no Spark 3.0).
Crie e faça upload dos arquivos necessários para um bucket S3
Para mais informações, consulte Fazendo upload de objetos e Instalando e executando o agente do CloudWatch em seus servidores.
Para criar e fazer upload do script bootstrap, conclua as seguintes etapas:
- No console do Amazon S3, escolha seu bucket S3.
- No objetos guia, escolha Escolher arquivo.
- Escolha Adicionar arquivos, então escolha o Filtro métrico.json, instalador.sh e exemplojob.sh arquivos.
- Além disso, carregue o
emr-custom-cw-sink-0.0.1.jar
arquivo de biblioteca de métricas que corresponde à versão do Amazon EMR que você usará: - Escolha Escolher arquivoe anote os URIs do S3 para os arquivos.
Provisionar recursos com o modelo CloudFormation
Escolha Pilha de Lançamento para iniciar uma pilha do CloudFormation em sua conta e implantar o modelo:
Este modelo cria uma função do IAM, um perfil de instância do IAM, um cluster EMR e um painel do CloudWatch. O cluster inicia um básico Exemplo de aplicativo Spark. Você será cobrado pelos recursos da AWS usados se criar uma pilha a partir desse modelo.
O assistente do CloudFormation solicitará que você modifique ou forneça estes parâmetros:
- Tipo de instância - A tipo de instância para todos os grupos de instâncias. O padrão é m5.2xlarge.
- InstanceCountCore – O número de instâncias no grupo de instâncias principais. O padrão é 4.
- EMRRleaseLabel - A Etiqueta de lançamento do Amazon EMR você quer usar. O padrão é emr-6.9.0.
- BootstrapScriptPath – O caminho S3 do script de inicialização de instalação installer.sh que você copiou anteriormente.
- MetricFilterPath – O caminho S3 da sua definição Metricfilter.json que você copiou anteriormente.
- MétricasLibraryPath – O caminho S3 da biblioteca CloudWatch emr-custom-cw-sink-0.0.1.jar que você copiou anteriormente.
- CloudWatchNamespace – O nome do namespace personalizado do CloudWatch a ser usado.
- SparkDemoApplicationPath – O caminho S3 do script examplejob.sh que você copiou anteriormente.
- Sub-rede – A sub-rede do EC2 na qual o cluster é iniciado. Você deve fornecer esse parâmetro.
- EC2KeyPairName – Um par de chaves EC2 opcional para conexão com nós de cluster, como alternativa ao Session Manager.
Veja as métricas
Após a implantação bem-sucedida da pilha do CloudFormation, o trabalho de exemplo será iniciado automaticamente e levará aproximadamente 15 minutos para ser concluído. No console do CloudWatch, escolha Dashboards no painel de navegação. Em seguida, filtre a lista pelo prefixo SparkMonitoring.
O painel de exemplo inclui informações sobre o cluster e uma visão geral dos trabalhos, estágios e tarefas do Spark. As métricas também estão disponíveis em um namespace personalizado começando com EMRCustomSparkCloudWatchSink
.
Memória, CPU, E/S e métricas adicionais de distribuição de tarefas também estão incluídas.
Finalmente, métricas detalhadas de coleta de lixo Java estão disponíveis por executor.
limpar
Para evitar cobranças futuras em sua conta, exclua os recursos criados neste passo a passo. O cluster EMR incorrerá em cobranças enquanto estiver ativo, portanto, interrompa-o quando terminar. Conclua as seguintes etapas:
- No console do CloudFormation, no painel de navegação, escolha Pilhas.
- Escolha a pilha que você lançou (
EMR-CloudWatch-Demo
), então escolha Apagar. - Esvazie o balde S3 você criou.
- Excluir o balde S3 você criou.
Conclusão
Agora que você concluiu as etapas deste passo a passo, o agente do CloudWatch está em execução nos hosts do cluster e configurado para enviar métricas do Spark para o CloudWatch. Com esse recurso, você pode monitorar com eficácia a integridade e o desempenho dos trabalhos do Spark em execução no Amazon EMR, detectando problemas críticos em tempo real e identificando rapidamente as causas principais.
Você pode empacotar e implantar esta solução por meio de um modelo do CloudFormation como este modelo de exemplo, que cria a função de perfil de instância do IAM, o painel do CloudWatch e o cluster do EMR. O código fonte da biblioteca está disponível em GitHub para personalização.
Para levar isso adiante, considere usar essas métricas em alarmes do CloudWatch. Você poderia coletá-los com outros alarmes em um alarme composto ou configurar ações de alarme, como enviar Serviço de notificação simples da Amazon (Amazon SNS) notificações para acionar processos orientados a eventos, como AWS Lambda funções.
Sobre o autor
Le Clue Lubbe é engenheiro principal da AWS. Ele trabalha com nossos maiores clientes empresariais para resolver alguns de seus problemas técnicos mais complexos. Ele impulsiona soluções amplas por meio da inovação para impactar e melhorar a vida de nossos clientes.
- Conteúdo com tecnologia de SEO e distribuição de relações públicas. Seja amplificado hoje.
- PlatoData.Network Gerativa Vertical Ai. Capacite-se. Acesse aqui.
- PlatoAiStream. Inteligência Web3. Conhecimento Amplificado. Acesse aqui.
- PlatãoESG. Automotivo / EVs, Carbono Tecnologia Limpa, Energia, Ambiente, Solar, Gestão de resíduos. Acesse aqui.
- PlatoHealth. Inteligência em Biotecnologia e Ensaios Clínicos. Acesse aqui.
- ChartPrime. Eleve seu jogo de negociação com ChartPrime. Acesse aqui.
- BlockOffsets. Modernizando a Propriedade de Compensação Ambiental. Acesse aqui.
- Fonte: https://aws.amazon.com/blogs/big-data/monitor-apache-spark-applications-on-amazon-emr-with-amazon-cloudwatch/
- :é
- :não
- :onde
- 1
- 100
- 107
- 15%
- 20
- 30
- 9
- a
- habilidade
- acessando
- Conta
- familiarizado
- em
- Açao Social
- ações
- ativo
- atividade
- Adicional
- Adicionalmente
- Agente
- alarme
- Todos os Produtos
- permite
- juntamente
- tb
- alternativa
- Amazon
- Amazon EC2
- Amazon EMR
- Amazon Web Services
- an
- e
- apache
- Apache Spark
- Aplicação
- aplicações
- aproximadamente
- arquitetônico
- arquitetura
- SOMOS
- AS
- associado
- assume
- At
- autor
- automaticamente
- disponível
- evitar
- consciente
- AWS
- baseado
- basic
- BE
- antes
- MELHOR
- Bootstrap
- amplo
- mas a
- by
- CAN
- capacidade
- capturas
- Capturar
- causas
- certo
- acusações
- Escolha
- Agrupar
- código
- coletar
- coleção
- coleta
- completar
- Efetuado
- integrações
- Computar
- Configuração
- configurado
- Contato
- Conexão de
- Considerar
- cônsul
- núcleo
- corresponde
- relação custo-benefício
- custos
- poderia
- CPU
- crio
- criado
- cria
- Criar
- crítico
- personalizadas
- Clientes
- personalização
- personalizar
- painel de instrumentos
- dados,
- informática
- Padrão
- definido
- definição
- demonstrar
- demonstra
- Dependendo
- implantar
- implantado
- implanta
- detalhado
- Determinar
- diferente
- distribuído
- distribuição
- feito
- não
- Acionadores
- cada
- Mais cedo
- efetivamente
- eficiência
- permitir
- engenheiro
- Empreendimento
- clientes corporativos
- essencial
- Éter (ETH)
- exemplo
- Característica
- Envie o
- Arquivos
- filtro
- seguinte
- Escolha
- da
- funções
- mais distante
- futuro
- Geral
- ter
- OFERTE
- Go
- Objetivos
- Grupo
- Do grupo
- guia
- Ter
- he
- Saúde
- anfitriões
- Como funciona o dobrador de carta de canal
- Como Negociar
- Contudo
- HTML
- http
- HTTPS
- IAM
- identificar
- identificar
- if
- ilustra
- ilustrando
- Impacto
- implementa
- melhorar
- in
- incluir
- incluído
- inclui
- Incluindo
- INFORMAÇÕES
- Inovação
- introspecção
- instalação
- instalando
- instância
- instantâneos
- integração
- para dentro
- introduzido
- questões
- IT
- ESTÁ
- Java
- Trabalho
- Empregos
- json
- Chave
- maior
- lançamento
- lançado
- lança
- Biblioteca
- vida
- como
- Line
- Lista
- longo
- Gerente
- Posso..
- Memória
- métrico
- Métrica
- minutos
- modificar
- Monitore
- monitoração
- mais
- a maioria
- devo
- nome
- nomes
- Navegação
- necessário
- Próximo
- nó
- nós
- nota
- notificação
- notificações
- número
- objetivos
- of
- on
- só
- otimização
- otimizando
- Opções
- or
- Outros
- A Nossa
- Visão geral
- pacote
- par
- pão
- parâmetro
- parâmetros
- caminho
- para
- atuação
- permissões
- plano
- platão
- Inteligência de Dados Platão
- PlatãoData
- retrato
- Publique
- poderoso
- prática
- pressão
- preços
- Diretor
- privado
- problemas
- processos
- em processamento
- Perfil
- fornecer
- fornece
- publicar
- Empurrar
- empurra
- Empurrando
- rapidamente
- em vez
- reais
- em tempo real
- recomendar
- relacionado
- liberar
- relevante
- permanecem
- requerer
- requeridos
- Requisitos
- recurso
- utilização de recursos
- Recursos
- responsável
- rever
- uma conta de despesas robusta
- Tipo
- papéis
- raiz
- corrida
- escalável
- desatado
- Seção
- seções
- segurança
- Vejo
- enviar
- envio
- envia
- serviço
- Serviços
- Sessão
- rede de apoio social
- simples
- So
- solução
- Soluções
- RESOLVER
- alguns
- fonte
- código fonte
- Faísca
- específico
- pilha
- Etapa
- Estágio
- começo
- Comece
- começa
- Passo
- Passos
- Dê um basta
- armazenamento
- sub-rede
- entraram com sucesso
- tal
- RESUMO
- .
- sistemas
- Tire
- toma
- Tarefa
- tarefas
- Dados Técnicos:
- modelo
- do que
- que
- A
- A fonte
- deles
- Eles
- então
- Este
- deles
- isto
- Através da
- tempo
- para
- pista
- desencadear
- para
- usar
- usava
- utilização
- utiliza
- variedade
- versão
- Ver
- Virtual
- Passo a passo
- queremos
- foi
- we
- web
- serviços web
- quando
- qual
- enquanto
- precisarão
- de
- de gestão de documentos
- trabalho
- X
- yaml
- Você
- investimentos
- zefirnet