Hadoop – Blog CPS TI
Home / programação / Hadoop
na Categoria: programação
com as Tags : clusters, escalabilidade, framework, hadoop, programação, sistemas distribuídos
É um framework que usando modelos de programação simples proporciona o processamento distribuído de grandes massas de dados em clusters de computadores. Ele foi projetado para ser altamente escalável de forma que a partir de um único servidor seja possível expandir para milhares de máquinas, sendo que cada um dos nós oferece computação e armazenamento local. Outra característica importante está no fato de que ao contrário de outras ferramentas onde o hardware é o responsável por proporcionar alta disponibilidade, no caso do Hadoop o próprio framework foi projetado para detectar e fazer o tratamento de falhas na camada de aplicação. Desta forma a entrega de um serviço altamente disponível, fica sob responsabilidade não só do hardware, mas também sob o framework Hadoop.
A plataforma Apache Hadoop possui os seguintes principais módulos:
Hadoop Common: Conjunto de utilitários de suporte e infraestrutura de rede comumente utilizados pelos demais módulos do Hadoop.
Hadoop Distributed File System (HDFS ™) : É o sistema de arquivos utilizado pela plataforma que funciona de modo distribuído fornecendo acesso às informações das massas de dados
Hadoop YARN: Conjunto de bibliotecas para programação de tarefas e gerenciamento dos recursos de cluster.
Quem utiliza o Hadoop?
Abaixo segue lista de alguns dos projetos que utilizam a plataforma Hadoop:
Ambari: Uma ferramenta baseada na Web para o provisionamento, gerenciamento e monitoramento de grupos, que inclui suporte para HDFS, bem como suporte a outras plataformas e tecnologias que também usam o Hadoop tais como MapReduce, Hive, HCatalog, HBase, ZooKeeper, Oozie, Pig e Sqoop. Ambari também fornece um painel para visualização Health Cluster como heatmaps e capacidade de visualizar aplicativos MapReduce, Pig e Hive. Visualmente fornece recursos user-friendly para diagnosticar o estado do Health Cluster bem como suas características de desempenho.
Cassandra: Banco de Dados NoSQL criado pelo Facebook. O Banco de Dados Cassandra usa o Hadoop como parte de armazenamento dos dados. É um Banco de Dados multi-mestre, escalável e isolamento contra falha unitário dos nós do cluster.
HBase: Um Banco de Dados escalável, distribuído que suporta o armazenamento de dados estruturado para grandes massas.
Hive: É a infraestrutura de armazenamento de dados que fornece sumarização de dados e consultas ad hoc.
Mahout: É uma tecnologia de aprendizagem de máquina, escalável e também contém uma biblioteca de mineração de dados.
Pig: Uma linguagem de fluxo de dados de alto nível e uma estrutura de execução para computação paralela.
Spark: É um motor de computação rápida e de uso geral de dados. O Spark fornece um modelo de programação simples e expressiva que suporta uma ampla gama de aplicações, incluindo ETL, aprendizagem de máquina, processamento de fluxo e gráfico computacional.
Tez: É um framework para criação de aplicações de processamento de alta performance em modo batch ou interativo. Construída sobre o Hadoop YARN, que fornece um motor potente e flexível para executar um DAG arbitrária de tarefas para processar os dados, tanto de lote e casos de uso interativos. Tez está sendo adotada por Hive ™, Pig™ e outras estruturas no ecossistema Hadoop, e também por outros softwares comerciais (por exemplo, ferramentas de ETL), para substituir o MapReduce ™ como o mecanismo de execução subjacente.
ZooKeeper: É um serviço de coordenação de alto desempenho para aplicações distribuídas.
Razões para usar Hadoop
Segue abaixo algumas das características que fazem com que seja adotado o uso do Hadoop:
Alto Grau de Flexibilidade: Atualmente o Hadoop é um dos melhores sistemas de armazenamento que possui a capacidade de armazenar desde conteúdos estruturados como tabelas e arquivos texto, até vídeos, fotos, etc. de forma redundante, rápida e eficiente. Outra característica é o fato de ter estrutura baseada em file system, ou seja, seu armazenamento tem as características do sistema operacional Linux e proporciona o uso de comandos POSIX.
Alto Desempenho: Uma das características que faz com que o Hadoop tenha um ótimo desempenho é a sua capacidade de processamento em paralelo tornando as suas cargas de dados extremamente rápidas. Um exemplo que pode ser citado é o fato que operações de MapReduce possuíam baixa performance, assim sendo ele mostrava-se ineficiente para alguns tipos de tarefas, mas aceleradores como Impala e Tez, ou mesmo processadores em Memória como Spark ou Flink, conseguiram fazer com que tais operações se tornassem mais ágeis.
Alta Escalabilidade: Considerando um cenário aonde temos um cluster que está com sua capacidade de processamento perto do seu limite, ao adicionarmos novos nós de processamento ao cluster a plataforma Hadoop irá automaticamente identificar o novo recurso disponível e efetuar o balanceamento da carga, sem haver a necessidade de configurações adicionais.
Evolução Contínua: A Apache Foundation é a mantenedora do Ecossistema Hadoop, seus usuários ou desenvolvedores estão em todo o mundo usando, testando, sugerindo e melhorando a versão constantemente. Na prática é como ter equipes de desenvolvimento 24×7, antecipando problemas e correções, antes mesmo de nos depararmos com eles. Devido ao fato de ser Open Source, qualquer um pode identificar e sugerir mudanças, diferentemente dos sistemas proprietários, onde somente o desenvolvedor conhece o código e suas peculiaridades.
Custo Zero: Qual o custo do Hadoop? Pode ser Zero, somente acessar a página da Apache Foundation, baixar, instalar e começar a usar. Mas claro que poucos colocariam um sistema em produção sem nenhum tipo de suporte, aí podemos pensar em escolher uma distribuição disponível no mercado, tais como fornecidas pelas empresas: