Usar o HDInsight Spark e o Kafka

Concluído

Como Engenheiro de Dados, você precisa determinar o tipo mais apropriado de cluster do HDInsight a ser criado para criar sua solução. Os clusters Spark e Kafka, quando usados juntos, fornecem uma ótima maneira de ingerir e processar fluxos de dados em tempo real ou quase em tempo real.

Use o Kafka para ingerir dados em tempo real

O Apache Kafka pode ser usado como um sistema de mensagens, um sistema de assinatura de publicação ou uma plataforma de processamento de streaming. Ele armazena dados em um log que pode ser lido em tempo real, pós-processado e lido por vários consumidores ao mesmo tempo.

Usar o streaming estruturado do Spark para processar eventos em tempo real

O Apache Spark é um mecanismo de processamento de dados distribuído de software livre que pode ser usado em muitas circunstâncias para rapidamente processar, consultar, analisar e transformar dados em escala. O Spark é comumente usado para executar trabalhos do ETL e do SQL em Big Data, processar dados de streaming e executar o machine learning.

O streaming estruturado do Spark tem recursos não disponíveis em outras plataformas, como garantias de tolerância a falhas, a capacidade de unir dados de lote e de streaming, a capacidade de lidar com os dados de chegada tardias e muito mais, que aprenderemos mais adiante neste módulo. Além disso, com o Azure HDInsight, você pode criar uma VNet que hospeda o cluster do Spark e do Kafka. Com ambos os clusters em uma VNet, o cluster Spark pode acessar partições individuais de dados no cluster Kafka, em vez de se comunicar entre clusters ou pontos de extremidade. Ao fornecer acesso a partições de dados individuais, você aumenta o paralelismo que tem no trabalho de processamento em tempo real, o que proporciona uma melhor taxa de transferência.

Cenários para usar o Kafka com o Spark

Há muitos cenários de análise em tempo real que se beneficiariam do streaming em tempo real que o Apache Kafka e o Spark habilitam. Todos esses cenários têm um componente de ingestão de dados de streaming, que é o componente Kafka, e um processo analítico em execução nos dados, que é o componente do Spark.

Scenarios for using Kafka with Spark

  • detecção de fraudes em tempo real para ingerir dados de transações financeiras e compará-los a padrões históricos de comportamento fraudulento.
  • Gerenciamento de frota e cenários de carros conectados nos quais você está ingerindo dados do dispositivo IoT e reage quando determinados dados de sensor, como quilometragem, velocidade, localização ou temperatura, atingem um limite.
  • Análise de cliques em soluções de comércio eletrônico para analisar como o posicionamento de página de produtos pode influenciar compras por impulso e cliques.
  • Monitoramento de pacientes em tempo real para observar as informações de pressão arterial e frequência cardíaca e notificar os médicos quando um paciente estiver em um estado crítico.
  • Soluções de rede elétrica inteligente que inspecionam o uso elétrico e respondem conforme as demandas mudam.
  • Comportamento do cliente em lojas, para descobrir quais compras são feitas em determinados horários do dia para agendar o reabastecimento de estoque e modificar a equipe da pista de check-out.
  • Monitoramento de rede e infraestrutura de TI para observar a disponibilidade e a largura de banda do servidor e redirecionar o tráfego quando necessário.
  • gerenciamento de estoque e demanda em tempo real para observar níveis de estoque baixo e solicitar novos pedidos ou reabastecimento desses itens.

Migração fácil de lote para streaming

Em muitos casos, esses cenários são iniciados localmente ou com processamento em lote de dados, porém, à medida que as soluções se desenvolvem e as necessidades evoluem, o processamento em lotes passa para o streaming e os aplicativos locais passam para a nuvem. Como mencionado acima, o streaming estruturado do Spark é exclusivo em sua capacidade de lidar com trabalhos de streaming e de lote, o que facilita a transição de qualquer processamento em lotes que você faça em trabalhos em tempo real, pois você pode fazer a transição de um para outro ou usá-los ao mesmo tempo, usando os mesmos aplicativos e as mesmas estruturas.