Pouca gente na indústria da informação e em áreas afins ainda não se deparou com os termos Big Data e Hadoop. Porém, apesar da frequência com a qual esses termos são mencionados, muitos profissionais ainda não estão familiarizados com os conceitos envolvidos e, principalmente, em como ambos têm-se tornado importantes para as empresas de análise de dados e para os agentes responsáveis por políticas empresariais.

Introdução

Desde o surgimento e a disseminação da internet, grandes quantidades de dados têm sido geradas. Particularmente nos últimos anos e principalmente com o surgimento das mídias sociais, ocorreu um fenômeno novo: quantidades de dados gigantescas são criadas diariamente pelos usuários. Por serem criados de forma difusa e quase estocástica, a maior parte desses dados não é estruturada. Contudo, tais dados, geralmente, contêm informações extremamente úteis para diversos negócios e para a tomada de decisões estratégicas mais eficientes e inteligentes. Por essas características, a necessidade de manipulação e processamento desses dados (Big Data) impulsionou o surgimento de ferramentas e técnicas especiais para esse fim. É nesse ponto em que se insere o Hadoop.

O Hadoop é uma implementação de código aberto, mantida pela Apache, do paradigma de programação Map-Reduce que foi introduzido pelo Google para processar e analisar grandes quantidades de dados. Tal paradigma define uma arquitetura para a realização do processamento de conjuntos de dados em paralelo, de tal modo que possam ser executados em vários servidores. A razão para a escalabilidade desse paradigma é a natureza intrinsecamente distribuída do funcionamento da solução. Uma tarefa complexa é dividida em várias tarefas menores que são então executadas em máquinas diferentes e posteriormente combinadas para gerar a solução da tarefa mais complexa. Um exemplo comum de uso do Hadoop é a analise de padrões dos usuários em sites de e-commerce, que permite que novos produtos sejam sugeridos ao usuário.

O Hadoop busca simplificar o processamento em paralelo à medida que permite aos desenvolvedores se ocupar com a forma em que os dados devem ser processados, sem precisar se envolver com problemas relativos ao processamento em paralelo.

Componentes do Apache Hadoop

O framework do Hadoop é composto por dois módulos principais: o módulo de armazenamento e o de processamento. O primeiro é denominado HDFS (Hadoop Distributed File System) e gerencia o armazenamento de dados entre as máquinas em que o cluster do Hadoop está sendo executado. Já o segundo, é a implementação do algoritmo do Map-Reduce e é responsável por gerir toda a parte de processamento do framework.

Hadoop 1

HDFS (Hadoop Distributed File System)

O HDFS é um sistema escalável de arquivos distribuídos, cujo esquema é baseado no Google File System. A ideia que norteia essa solução é garantir a escalabilidade do sistema à medida que os dados se tornem grandes demais para serem armazenados em uma única máquina. Além disso, os arquivos no HDFS possuem réplicas, que adicionam confiabilidade e auxiliam o processamento em paralelo.

No HDFS existe o conceito de blocos de dados, que normalmente possuem o tamanho fixo de 64MB.  Assim, um arquivo muito grande pode ter blocos armazenados em mais de um servidor.  Com este conceito, fica mais fácil calcular as necessidades de armazenamento.

Os clusters HDFS são formados por dois tipos de nós, o nó máster denominado Name Node, e os múltiplos nós slaves denominados Data Nodes. É possível ainda haver Name Nodes secundários utilizados como redundância e prevenção a falhas. Enquanto o Name Node armazena informações da distribuição de arquivos e alguns metadados, os Data Nodes armazenam os dados propriamente ditos.  Logo, o Name Node precisa sempre estar disponível.  Para garantir tal disponibilidade pode-se inserir no cluster um Name Node secundário, em outro servidor.  Com essa opção, em caso de falha do Name Node primário, o nó secundário pode assumir o controle do gerenciamento rapidamente.

Name Nodes e Data Nodes são componentes desenvolvidos para executar independentemente em máquinas com sistemas operacionais heterogêneos. Como o HDFS é desenvolvido em Java, qualquer máquina com suporte a Java pode executar um nó do HDFS.

Map-Reduce

O módulo do Map-Reduce é na verdade um framework que define uma solução em que cada tarefa é especificada em termos de funções de mapeamento e redução. Ambas as tarefas rodam em paralelo no cluster, enquanto o sistema de armazenamento necessário para essa funcionalidade é fornecido pelo HDFS.

Os principais componentes do Map-Reduce são o Job Tracker e o Task Tracker.

O Job Tracker é responsável por receber tarefas de Map-Reduce e submetê-las aos Task Trackers. É ele também que deve comunicar-se com o Name Node para conseguir os dados a serem processados. O Job Tracker deve ainda ser reportado pelos Task Tracker a intervalos regulares, especificando que esses estão vivos e efetuando suas tarefas. Se um Task Tracker não se reportar ao Job Tracker, o nó é considerado morto e suas tarefas são redesignadas para outro Task Tracker. O Job Tracker é um ponto crucial de falhas, pois, caso falhe, não será possível rastrear as tarefas.

Os Task Tracker recebem tarefas do Job Tracker e, para cada tarefa, criam um novo processo JVM, a fim de se certificarem de que uma falha no processo não resulte em uma falha do Task Tracker. Os Task Trackers devem se reportar ao Job Tracker continuamente para que este possa manter o registro de tarefas bem ou mal sucedidas.

Por: Marco Túlio Ferreira

Deixe um comentário