O que é o Hadoop?
O Hadoop é um projeto open source da Apache Foundation, introduzido em 2006, e desenvolvido em Java, cujo objetivo é oferecer um ambiente de trabalho de acordo com as necessidades da Big Data (os 4 V's). O Hadoop, portanto, foi concebido para trabalhar com volumes de dados massivos (Volume), estruturados ou não estruturados (Variedade), e processá-los de forma segura e eficiente (Veracidade / Velocidade), tanto em termos de custo como de tempo.
No início, à medida que o volume de dados a processar aumentava, a solução tradicional era investir em equipamento mais potente, com maiores capacidades de processamento de armazenamento e, é claro, mais caro. Mas depressa se tornou claro que tinha de ser considerada uma forma diferente de fazer as coisas. Esse caminho não era viável. A solução era distribuir, tanto o armazenamento da informação, como o seu processamento, entre muitas equipas a trabalhar de forma coordenada “em clusters”, com um ou vários nós mestres encarregados de gerir, por um lado, o sistema de ficheiros distribuídos onde os dados são armazenados em diferentes blocos redundantes; e, por outro lado, a coordenação e execução dos diferentes jobs ou tarefas entre os membros do cluster.
Ao trabalhar de forma distribuída, os principais desafios eram: poder aceder aos dados, processá-los a alta velocidade e evitar a perda de informação se algum dos nós falhasse.
O Hadoop deu uma resposta a estes problemas, oferecendo:
- Fiabilidade. Distribui dados e tarefas entre os diferentes nós. Em caso de falha de um nó, a tarefa é automaticamente reatribuída a outro nó e os dados não são perdidos porque são replicados em outros nós do cluster.
- Escala horizontal: o mesmo programa pode ser testado numa só máquina, e depois escalonado para 1000 ou 4000 máquinas.
- APIS muito simples, tanto para o processamento como para o acesso aos dados.
- Potência, ao dividir o processamento entre diferentes máquinas, podendo processar enormes volumes de dados em tempos eficientes.
A sua capacidade de distribuir a capacidade de armazenamento e processamento de dados por um grande número de máquinas, e de fornecer redundância baseada em software, traduzem-se na outra grande vantagem de trabalhar com o Hadoop: Não há necessidade de comprar hardware especial ou sistemas RAID dispendiosos. Pode funcionar com “commodity hardware”, o que oferece grande flexibilidade e poupanças significativas.
Outra vantagem do Hadoop é a sua escalabilidade. Especialmente quando é implantado em plataformas de nuvem públicas, como Microsoft Azure, Amazon AWS e Google Compute Cloud, que permitem adicionar e reduzir recursos à medida que as necessidades das empresas variam. Nestes casos, os próprios sistemas de armazenamento destas plataformas são frequentemente utilizados para dissociar a computação do armazenamento. Assim, a computação é dedicada à execução, processamento e análise dos dados, em vez de manter o sistema de ficheiros que os suporta.
Tal como com outros projetos open source, alguns fornecedores oferecem distribuições estáveis, que apetrecham com as suas próprias ferramentas e, acima de tudo, apoio técnico. Os mais comuns são Cloudera Hadoop, HortonWorks, MapR, Microsoft HD Insight, IBM InfoShere BigInsights, AWSEMR (Elastic MapReduce), etc.