A DataTorrent é uma plataforma de streaming e análise em tempo real capaz de processar mais de 1 bilhão de eventos por segundo.
Comparado com a média do Twitter de aproximadamente 6.000 tweets por segundo, o recente lançamento da DataTorrent 1.0, capaz de processar mais de 1 bilhão de eventos por segundo, parece ultrapassar qualquer necessidade. Em seus testes com um cluster com 37 nós, cada um com 256 GB de RAM e 12 núcleos de CPU hyper-threaded, a DataTorrent afirma ter atingido uma escalabilidade linear de até 1,6 bilhões de eventos por segundo quando as CPUs saturaram. O cofundador e CEO da DataTorrent, Phu Hoang, contou ao InfoQ.com que a solução deles é "ordens de magnitude" mais performática que a plataforma Apache Spark, utilizando o mesmo hardware.
A DataTorrent é uma plataforma de streaming e análise tolerante a falhas construída sobre Hadoop 2.x e utiliza aplicações nativas do Hadoop que podem coexistir com aplicações dedicadas a outras tarefas, como processamento em batch. A arquitetura da plataforma é retratada na figura a seguir:
A Streaming Application Master (StrAM) é uma aplicação nativa YARN (Application Master) responsável por gerenciar o Directed Acyclic Graph (DAG) lógico que é executado sobre um cluster de Hadoop, incluindo alocação de recursos, particionamento, escalabilidade, agendamento, web services, troca de horários, estatísticas, cumprimento de SLA, segurança, entre outros.
As aplicações de usuário existem no topo mais alto do diagrama como Operadores conectados e templates de aplicação. Exemplos de operadores são: ImputReceiver - simula o recebimento de dados; Average - calcula a quantidade média de dados para uma chave em uma determinada dimensão; RedisAverageOutput - escreve a média calculada para um armazenamento de dados em Redis; SmtpAvgOperator - envia e-mails em situações de alerta. Estes operadores são parte da biblioteca de código aberto Malhar que inclui mais de 400 itens. Vale ressaltar que os operadores também podem ser escritos conforme necessário.
Perguntamos o que torna a DataTorrent mais rápido que a Spark:
Hoang: Há duas diferenças importantes na arquitetura das soluções que decorrem do foco da DataTorrent em possibilitar que empresas respondam em tempo real via streaming e do desejo da Spark em generalizar seu mecanismo para processar streams. Nessas duas áreas chave o foco são desempenho e tolerância a falhas stateful.
1. Desempenho - A DataTorrent RTS foi projetada e construída sobre o Hadoop 2.0 nativo, que oferece foco em desempenho com alta disponibilidade e, como resultado, faz seu processamento evento-por-evento com uma latência sub-segundo. A DataTorrent RTS agenda sua aplicação nos containers do Hadoop quando inicializa, e o mapeamento é corrigido até que a aplicação precise alterá-lo e não introduz nenhuma sobrecarga de agendamento. A Spark, em contrapartida, foi construído no momento pré Hadoop 2.0 e utiliza o mecanismo da Spark para efetivamente rodar vários trabalhos de "map reduce" como pequenos batches ou mini batches. Este decisão de projeto obriga a Spark (via application master) a agendar cada pequeno batch dentro do cluster, o que representa uma grande sobrecarga, tornando o sistema mais lento.
2. Tolerância a falhas stateful -- A DataTorrent RTS foi projetado para permitir computações stateful complexas, de alto desempenho e com tolerância a falhas. Este é o requisito corporativo chave, no qual a capacidade de recuperação, frente a interrupções do sistema, aconteça necessariamente sem perda de dados e sem perda de estado. A essência do projeto da DataTorrent RTS foi usar o Java para programação e remover a sobrecarga da solução da tolerância a falhas do desenvolvedor corporativo/ISV (nomeadamente, este trabalho é realizado pela DataTorrent RTS para o desenvolvedor). A Spark fornece tolerância a falhas, mas apenas para processamento stateless. O design central do Spark usa a linguagem Scala, que é uma linguagem funcional, e os Operadores que processam os streams são stateless. Se uma empresa quisesse adicionar processamento stateful a Spark, ela precisaria escrever o código para fazê-lo, como parte do código de suas aplicações, o que é difícil e causaria impacto no desempenho das aplicações.
De acordo com Hoang, a DataTorrent é certificado para "todas as principais distribuições do Hadoop, tanto para publicação em infraestrutura própria quando na nuvem (como Cloudera, Hortonworks, MapR e na nuvem como Amazon AWS e Google Cloud), fornecendo flexibilidade para que as empresas possam mudar tanto o fornecedor do Hadoop quanto sua opção de publicação de uma forma mais transparente".
Embora a DataTorrent seja uma aplicação comercial, há uma opção gratuita para pequenas e médias aplicações que inclui todas funcionalidades.