Você usa o Apache Kafka como uma fila distribuída e robusta que pode lidar com dados de alto volume e permite que você passe mensagens de um terminal para outro.
Storm não é uma fila. É um sistema que possui capacidades de processamento distribuído em tempo real, o que significa que você pode executar todo tipo de manipulação de dados em tempo real em paralelo.
O fluxo comum dessas ferramentas (como eu sei) é o seguinte:
sistema em tempo real -> Kafka -> Tempestade -> NoSql -> BI (opcional)
Então você tem seu aplicativo em tempo real gerenciando dados de alto volume e os envia para a fila Kafka. Storm extrai os dados do kafka e aplica alguma manipulação necessária. Neste ponto, você normalmente gostaria de obter alguns benefícios desses dados, então você os envia para algum banco de dados Nosql para cálculos adicionais de BI ou pode simplesmente consultar este NoSql de qualquer outro sistema.