Apache Flink - Arquitetura

Apache Flink trabalha na arquitetura Kappa. A arquitetura Kappa possui um único processador - stream, que trata todas as entradas como stream e o mecanismo de streaming processa os dados em tempo real. Os dados em lote na arquitetura kappa são um caso especial de streaming.

O diagrama a seguir mostra o Apache Flink Architecture.

A ideia principal na arquitetura Kappa é lidar com dados em lote e em tempo real por meio de um único mecanismo de processamento de fluxo.

A maior parte da estrutura de big data funciona na arquitetura Lambda, que possui processadores separados para dados em lote e streaming. Na arquitetura Lambda, você tem bases de código separadas para visualizações em lote e fluxo. Para consultar e obter o resultado, as bases de código precisam ser mescladas. Não manter bases de código / visualizações separadas e mesclá-las é uma dor, mas a arquitetura Kappa resolve esse problema, pois tem apenas uma visualização - em tempo real, portanto a mesclagem da base de código não é necessária.

Isso não significa que a arquitetura Kappa substitui a arquitetura Lambda, ela depende completamente do caso de uso e do aplicativo que decide qual arquitetura seria preferível.

O diagrama a seguir mostra a arquitetura de execução de trabalho do Apache Flink.

Programa

É um trecho de código, que você executa no Flink Cluster.

Cliente

Ele é responsável por pegar o código (programa) e construir o gráfico do fluxo de dados do trabalho e, em seguida, passá-lo para o JobManager. Ele também recupera os resultados do trabalho.

JobManager

Após receber o Job Dataflow Graph do Client, ele é responsável por criar o gráfico de execução. Ele atribui o trabalho a TaskManagers no cluster e supervisiona a execução do trabalho.

Gerenciador de tarefas

É responsável por executar todas as tarefas atribuídas pelo JobManager. Todos os TaskManagers executam as tarefas em seus slots separados no paralelismo especificado. É responsável por enviar o status das tarefas ao JobManager.

Recursos do Apache Flink

Os recursos do Apache Flink são os seguintes -

  • Possui um processador de streaming, que pode executar programas em lote e stream.

  • Ele pode processar dados em alta velocidade.

  • APIs disponíveis em Java, Scala e Python.

  • Fornece APIs para todas as operações comuns, o que é muito fácil para os programadores usarem.

  • Processa dados em baixa latência (nanossegundos) e alta taxa de transferência.

  • É tolerante a falhas. Se um nó, aplicativo ou hardware falhar, isso não afetará o cluster.

  • Pode se integrar facilmente com Apache Hadoop, Apache MapReduce, Apache Spark, HBase e outras ferramentas de big data.

  • O gerenciamento in-memory pode ser personalizado para melhor computação.

  • É altamente escalonável e pode escalar até milhares de nós em um cluster.

  • O janelamento é muito flexível no Apache Flink.

  • Fornece processamento de gráficos, aprendizado de máquina e bibliotecas de processamento de eventos complexos.