O Hadoop talvez seja o principal produto relacionado a Big Data, estando presente em praticamente todos os pacotes comerciais ou não de Big Data. Porém nem todos sabem o que é o Hadoop e o que se pode fazer com ele. É isso que pretendo explicar resumidamente nesse post.
O que é o Hadoop ?
O Hadoop em si é um produto open-source da Apache e serve para realizar basicamente duas tarefas: o armazenamento distribuído de dados e o processamento distribuído. Distribuído, nesse caso, significa que o armazenamento e o processamento são realizados em paralelo através de várias máquinas em cluster. O Hadoop possui uma infraestrutura, ou framework, que permite o gerenciamento de seu ambiente de cluster. Uma das premissas do Hadoop, no início, era permitir a utilização de máquinas “commodity”, criando clusters a um custo reduzido e com fácil de adição de novos nós.
A arquitetura em cluster do Hadoop traz os seguintes benefícios:
- alta performance de armazenamento e processamento, já que isso é realizado em paralelo;
- alta disponibilidade, pois o Hadoop faz o gerenciamento necessário caso uma ou mais máquinas falhem;
- alta confiabilidade, pois o Hadoop faz o gerenciamento de redundância dos dados;
- não há necessidade de realização de backups, o que aumenta ainda mais a disponibilidade;
- conectividade ou facilidade de integração: existem centenas de outros produtos que funcionam de forma integrada ao Hadoop.
Armazenamento Distribuído
O Hadoop possui um sistema de arquivos (file system) chamado HDFS (Hadoop Distributed File System). Quando o HDFS recebe um arquivo que precisa ser armazenado, ele “quebra” o arquivo em pequenos segmentos e distribui estes segmentos pelas máquinas (data nodes) do cluster. Uma área de índices guarda a posição de cada segmento de cada arquivo ao longo do cluster (name node). Cada segmento ou, melhor dizendo, bloco, é gravado redundantemente em três nós distintos, para que não haja perda de dados em caso de falha.
O armazenamento distribuído permite que um cluster Hadoop suporte uma quantidade enorme de dados, que podem ser estruturados, semi-estruturados ou não-estruturados.
Processamento Distribuído
O Hadoop possui um framework de processamento distribuído chamado de Map-Reduce. Esse modelo atua em modo Batch e permite que os dados armazenados no HDFS sejam processados em paralelo com alta performance. Para explicar o processo, o que ocorre é como se o Hadoop recebesse um processamento e “quebrasse” esse processamento através das máquinas do cluster, de forma semelhante ao que ocorre no armazenamento dos blocos. Essa “quebra” dos “jobs” em “tasks” prioriza o processamento de blocos na mesma máquina ou pelo menos perto de onde o dado está armazenado e isso tudo ocorre em paralelo. Após o processamento em cada nó, os resultados obtidos são então consolidados e retornados (ou armazenados).
Existem diversos produtos e linguagens de programação que fazem uso do framework Map-Reduce do Hadoop. Vamos falar sobre isso adiante. O processamento distribuído permite uma alta performance e confere um enorme poder de processamento a um cluster Hadoop.
Ecossistema do Hadoop
Como já disse, o objetivo do Hadoop é armazenar e processar dados. Existe também uma grande variedade de projetos relacionados ao Hadoop, a maioria também open-source. Esses outros produtos funcionam de forma integrada ao Hadoop, beneficiando-se de seu framework de armazenamento e processamento distribuído de alta performance. A lista de produtos é bem extensa e já abordamos isso em outro post. De forma a ilustrar esse rico ecossistema, vamos relacionar apenas alguns produtos: Zookeeper, PIG, Hive, Jaql, Hue, Sqoop, Flume, HBase, Avro, Thrift, Oozie, Mahout, Chukwa, Drill, Lucene, Solr e R.
Para que serve o Hadoop
Pois bem, o Hadoop (em conjunto com o seu ecossistema) possui uma tremenda infraestrutura mas para que serve isso? Essa infraestrutura permite variados tipos de processamento de dados que suportam diversos aspectos do conceito de Big Data e seus Vs (cada autor utiliza a sua versão de número de Vs: 3 Vs, 4 Vs ou ainda mais), resumidamente:
- Volume – processamento de enorme volume de dados;
- Variedade – processamento dos mais diversos tipos e formatos de dados, estruturados ou não, provenientes de logs de máquina e web, sensores, redes sociais, documentos, emails etc;
- Velocidade – performance que permite o armazenamento, processamento e análise de dados em grande volume e variedade.
Ao abrir possibilidades de processamento que antes não eram possíveis, o Hadoop e outras tecnologias de Big Data permitem a implementação de casos de uso para os mais diversos objetivos e indústrias, dentre os quais citaremos alguns. As análises podem ter objetivos específicos e definidos assim como também podem ser feitas para descobrir novos padrões e alavancar insights, interativamente ou usando ferramentas estatísticas ou de mineração de dados:
- análise de dados de redes sociais, feedback e melhoria de produtos ou serviços, sentiment analysis, visão em 360 graus do consumidor, personalização, segmentação, promoção;
- análise de dados de sensores, gerenciamento de inventário e estoque, logística, telecomunicações, geolocalização, indústrias de energia alternativas, petróleo, dados ambientais, plantações, entre outras;
- análise de logs de transações financeiras, detecção de fraudes, risco, segurança;
- setores públicos, transportes, trânsito, utilities, tragédias e desastres;
- saúde, genoma, pesquisas, experimentos, diagnósticos;
- etc.
É claro que, para atender aos objetivos dos casos de uso acima relacionados, o ecossistema do Hadoop deve fazer parte de uma solução mais abrangente, que envolva também tecnologias já consolidadas e implementadas nas empresas. A palavra chave aqui é Integração. O Hadoop deve funcionar integrado a bancos de dados relacionais, sistemas de BI (Business Intelligence) e Data Warehouses, Data Discovery, analytics, governança, segurança… Vamos dar um exemplo: uma vez que o dado foi armazenado, processado e consolidado em alta performance no Hadoop, por que não exportá-lo para o Data Warehouse/Data Mart e permitir assim sua consulta em dashboards, análises ou relatórios do BI pelos mais diversos níveis da organização? A infraestrutura existente será desta forma enriquecida com o Big Data.
Pacotes Comerciais com Hadoop
Grandes fornecedores da indústria de tecnologia de informação estão usando o Hadoop em suas soluções comerciais de Big data. Além de outros produtos para Big Data, em relação ao Hadoop a IBM possui o produto IBM InfoSphere BigInsights e a Oracle possui o Oracle Big Data Appliance e o Oracle Big Data Connectors. Os pacotes comerciais tendem a ser mais interessantes, pois possuem maior nível de integração, facilidades de instalação, configuração e gerenciamento, suporte, conectividade, aceleradores (tais como conectividade a redes sociais, sentiment analysis, processamento de texto) e ferramentas que estendem a capacidade do Hadoop e facilitam o seu uso, ou seja, são soluções completas para extrair o máximo que esse tipo de tecnologia tem a oferecer.
Big Data é um assunto bastante abrangente e complexo. Estarei postando, sempre que possível, novas matérias sobre o tema. Fique a vontade para comentar meus artigos e para sugerir temas para os próximos posts