Apache Storm - Arquitetura de Cluster
Um dos principais destaques do Apache Storm é que ele é tolerante a falhas, rápido e sem aplicação distribuída de “Ponto Único de Falha” (SPOF). Podemos instalar o Apache Storm em quantos sistemas forem necessários para aumentar a capacidade do aplicativo.
Vamos dar uma olhada em como o cluster Apache Storm foi projetado e sua arquitetura interna. O diagrama a seguir descreve o design do cluster.
Apache Storm tem dois tipos de nós, Nimbus (nó mestre) e Supervisor(nó do trabalhador). Nimbus é o componente central do Apache Storm. A principal tarefa do Nimbus é executar a topologia Storm. O Nimbus analisa a topologia e reúne a tarefa a ser executada. Em seguida, ele distribuirá a tarefa para um supervisor disponível.
Um supervisor terá um ou mais processos de trabalho. O supervisor delegará as tarefas aos processos de trabalho. O processo de trabalho gerará quantos executores forem necessários e executará a tarefa. Apache Storm usa um sistema de mensagens distribuído interno para a comunicação entre o nimbus e os supervisores.
Componentes | Descrição |
---|---|
Nimbus | Nimbus é um nó mestre do cluster Storm. Todos os outros nós do cluster são chamados deworker nodes. O nó mestre é responsável por distribuir dados entre todos os nós de trabalho, atribuir tarefas a nós de trabalho e monitorar falhas. |
Supervisor | Os nós que seguem as instruções dadas pelo nimbo são chamados de Supervisores. UMAsupervisor tem vários processos de trabalho e controla os processos de trabalho para concluir as tarefas atribuídas pelo nimbus. |
Processo de trabalho | Um processo de trabalho executará tarefas relacionadas a uma topologia específica. Um processo de trabalho não executa uma tarefa sozinho, em vez disso, criaexecutorse pede que realizem uma tarefa específica. Um processo de trabalho terá vários executores. |
Executor | Um executor nada mais é do que um único thread gerado por um processo de trabalho. Um executor executa uma ou mais tarefas, mas apenas para um bico ou parafuso específico. |
Tarefa | Uma tarefa executa o processamento de dados real. Portanto, é um bico ou um parafuso. |
Framework ZooKeeper | Apache ZooKeeper é um serviço usado por um cluster (grupo de nós) para coordenar entre si e manter dados compartilhados com técnicas de sincronização robustas. O Nimbus não tem estado, portanto, depende do ZooKeeper para monitorar o status do nó de trabalho. O ZooKeeper ajuda o supervisor a interagir com o nimbo. É responsável por manter o estado de nimbo e supervisor. |
Storm não tem estado por natureza. Embora a natureza sem estado tenha suas próprias desvantagens, ela realmente ajuda Storm a processar dados em tempo real da melhor maneira possível e mais rápida.
No entanto, Storm não é totalmente sem estado. Ele armazena seu estado no Apache ZooKeeper. Como o estado está disponível no Apache ZooKeeper, um nimbus com falha pode ser reiniciado e colocado em funcionamento de onde saiu. Normalmente, ferramentas de monitoramento de serviço comomonit irá monitorar o Nimbus e reiniciá-lo se houver alguma falha.
Apache Storm também tem uma topologia avançada chamada Trident Topologycom manutenção de estado e também fornece uma API de alto nível como o Pig. Discutiremos todos esses recursos nos próximos capítulos.