O que é Hadoop?

Hadoop é um framework de código aberto, baseado em Java, usado para armazenar e processar grandes dados. Os dados são armazenados em servidores de commodity de baixo custo que funcionam como clusters. Seu sistema de arquivo distribuído permite o processamento simultâneo e a tolerância a falhas. Desenvolvido por Doug Cutting e Michael J. Cafarella, Hadoop utiliza o modelo de programação MapReduce para um armazenamento e recuperação de dados mais rápidos a partir dos seus nós. O framework é gerenciado pela Apache Software Foundation e é licenciado sob a Licença Apache 2.0.

Durante anos, enquanto o poder de processamento dos servidores de aplicações tem aumentado em vários, as bases de dados têm ficado para trás devido à sua capacidade e velocidade limitadas. No entanto, hoje, como muitas aplicações estão gerando grandes dados a serem processados, o Hadoop tem um papel significativo no fornecimento de uma transformação muito necessária para o mundo das bases de dados.

Download Hadoop e Data Lakes agora.
Lê Agora

Do ponto de vista do negócio, também existem benefícios directos e indirectos. Ao utilizar tecnologia de código aberto em servidores baratos que estão principalmente na nuvem (e às vezes no local), as organizações alcançam economias de custo significativas.

Adicionalmente, a capacidade de coletar dados massivos, e as percepções derivadas do esmagamento desses dados, resulta em melhores decisões de negócios no mundo real – como a capacidade de focar no segmento de consumo certo, eliminar ou corrigir processos errôneos, otimizar operações de chão, fornecer resultados de pesquisa relevantes, realizar análises preditivas, e assim por diante.

Como o Hadoop Melhora em Bases de Dados Tradicionais

Hadoop resolve dois desafios chave com bases de dados tradicionais:

Capacidade: O Hadoop armazena grandes volumes de dados.

Ao usar um sistema de arquivo distribuído chamado HDFS (Hadoop Distributed File System), os dados são divididos em pedaços e salvos através de clusters de servidores de commodities. Como esses servidores de commodity são construídos com configurações de hardware simples, eles são econômicos e facilmente escaláveis conforme os dados crescem.

Velocidade: Hadoop armazena e recupera dados mais rapidamente.

Hadoop usa o modelo de programação funcional MapReduce para executar processamento paralelo entre conjuntos de dados. Assim, quando uma consulta é enviada para o banco de dados, em vez de tratar os dados sequencialmente, as tarefas são divididas e simultaneamente executadas através de servidores distribuídos. Por fim, a saída de todas as tarefas é coligida e enviada de volta para a aplicação, melhorando drasticamente a velocidade de processamento.

5 Benefícios do Hadoop para Grandes Dados

Para grandes dados e análises, o Hadoop é um salva-vidas. Dados coletados sobre pessoas, processos, objetos, ferramentas, etc. são úteis apenas quando surgem padrões significativos que, por sua vez, resultam em melhores decisões. Hadoop ajuda a superar o desafio da vastidão de grandes dados:

  1. Resiliência – Dados armazenados em qualquer nó também são replicados em outros nós do cluster. Isto garante a tolerância a falhas. Se um nó cair, há sempre um backup dos dados disponíveis no cluster.
  2. Escalabilidade – Ao contrário dos sistemas tradicionais que têm uma limitação no armazenamento de dados, o Hadoop é escalável porque opera em um ambiente distribuído. Conforme a necessidade surge, a configuração pode ser facilmente expandida para incluir mais servidores que podem armazenar até vários petabytes de dados.
  3. Baixo custo – Como o Hadoop é um framework open-source, sem licença a ser adquirida, os custos são significativamente mais baixos em comparação com sistemas de bancos de dados relacionais. O uso de hardware de commodity barato também funciona a seu favor para manter a solução econômica.
  4. Velocidade – O sistema de arquivos distribuídos do Hadoop, processamento simultâneo e o modelo MapReduce permitem executar consultas complexas em questão de segundos.
  5. Diversidade de dados – O HDFS tem a capacidade de armazenar diferentes formatos de dados, como não estruturados (por exemplo, vídeos), semi-estruturados (por exemplo, arquivos XML), e estruturados. Ao armazenar dados, não é necessário validar contra um esquema pré-definido. Ao invés disso, os dados podem ser despejados em qualquer formato. Mais tarde, quando recuperados, os dados são analisados e encaixados em qualquer esquema, conforme necessário. Isto dá a flexibilidade de obter diferentes insights usando os mesmos dados.

Download O’Reilly Report: Movendo o Hadoop para a Nuvem agora.
Lê Agora

O Ecossistema Hadoop: Core Components

Hadoop não é apenas uma aplicação, mas uma plataforma com vários componentes integrais que permitem o armazenamento e processamento distribuído de dados. Estes componentes juntos formam o ecossistema Hadoop.

alguns destes são componentes centrais, que formam a base do framework, enquanto alguns são componentes suplementares que trazem funcionalidades adicionais para o mundo Hadoop.

Os componentes centrais do Hadoop são:

HDFS: Maintaining the Distributed File System

HDFS é o pilar do Hadoop que mantém o sistema de arquivos distribuídos. Ele torna possível armazenar e replicar dados em múltiplos servidores.

HDFS tem um NameNode e DataNode. Os DataNodes são os servidores de mercadorias onde os dados são realmente armazenados. O NameNode, por outro lado, contém metadados com informações sobre os dados armazenados nos diferentes nós. A aplicação só interage com o NameNode, que se comunica com os nós de dados conforme necessário.

YARN: Another Resource Negotiator

YARN significa Yet Another Resource Negotiator. Ele gerencia e agenda os recursos e decide o que deve acontecer em cada nó de dados. O nó mestre central que gerencia todos os pedidos de processamento é chamado de Gerenciador de Recursos. O Gerenciador de Recursos interage com os Gerenciadores de Nó; cada nó de dados escravo tem seu próprio Gerenciador de Nó para executar tarefas.

MapReduce

MapReduce é um modelo de programação que foi usado pela primeira vez pelo Google para indexar suas operações de busca. É a lógica usada para dividir os dados em conjuntos menores. Ele funciona com base em duas funções – Map() e Reduce() – que analisam os dados de forma rápida e eficiente.

First, a função Map agrupa, filtra e ordena múltiplos conjuntos de dados em paralelo para produzir tuplos (chave, pares de valores). Então, a função Reduzir agrega os dados desses tuplos para produzir a saída desejada.

O Ecossistema Hadoop: Componentes Suplementares

A seguir estão alguns componentes suplementares que são amplamente utilizados no ecossistema Hadoop.

Colmeia: Data Warehousing

A colmeia é um sistema de armazenamento de dados que ajuda a consultar grandes conjuntos de dados no HDFS. Antes da colmeia, os programadores enfrentavam o desafio de criar trabalhos complexos de MapReduce para consultar os dados do Hadoop. A colmeia utiliza HQL (Hive Query Language), que se assemelha à sintaxe do SQL. Uma vez que a maioria dos programadores vem de um fundo SQL, a Colmeia é mais fácil de integrar.

A vantagem da Colmeia é que um driver JDBC/ODBC actua como interface entre a aplicação e o HDFS. Expõe o sistema de ficheiros Hadoop como tabelas, converte o HQL em trabalhos MapReduce, e vice-versa. Assim, enquanto os desenvolvedores e administradores de banco de dados ganham o benefício de processar grandes conjuntos de dados em lote, eles podem usar consultas simples e familiares para conseguir isso. Originalmente desenvolvida pela equipe do Facebook, a Hive é agora uma tecnologia de código aberto.

Pig: Reduza as Funções MapReduce

Pig, inicialmente desenvolvida pelo Yahoo!, é semelhante à Hive na medida em que elimina a necessidade de criar funções MapReduce para consultar o HDFS. Semelhante ao HQL, a linguagem utilizada – aqui, chamada “Pig Latin” – é mais próxima do SQL. O “Pig Latin” é uma camada de linguagem de fluxo de dados de alto nível no topo do MapReduce.

Pig também tem um ambiente de tempo de execução que faz interface com o HDFS. Scripts em linguagens como Java ou Python também podem ser embutidos dentro de Pig.

Hive Versus Pig

Além de Pig e Hive terem funções similares, um pode ser mais eficaz que o outro em diferentes cenários.

Pig é útil no estágio de preparação de dados, pois pode realizar joins e consultas complexas facilmente. Também funciona bem com diferentes formatos de dados, incluindo semi-estruturados e não estruturados. Pig Latin está mais próximo de SQL mas também varia de SQL o suficiente para que ele tenha uma curva de aprendizado.

Hive, entretanto, funciona bem com dados estruturados e, portanto, é mais eficaz durante o armazenamento de dados. É usado no lado do servidor do cluster.

P>Pesquisadores e programadores tendem a usar Pig no lado do cliente de um cluster, enquanto usuários de business intelligence, como analistas de dados, acham a Colméia como o ajuste certo.

Flume: Big Data Ingestion

Flume é uma grande ferramenta de ingestão de dados que atua como um serviço de courier entre múltiplas fontes de dados e o HDFS. Ela coleta, agrega e envia grandes quantidades de dados de streaming (por exemplo, arquivos de log, eventos) gerados por aplicativos como sites de mídia social, aplicativos IoT e portais de comércio eletrônico no HDFS.

Flume é rico em recursos, it:

  • Tem uma arquitetura distribuída.
  • Segura uma transferência de dados confiável.
  • É tolerante a falhas.
  • Tem a flexibilidade de recolher dados em lotes ou em tempo real.
  • Pode ser escalado horizontalmente para lidar com mais tráfego, conforme necessário.

Fontes de dados comunicam com os agentes Flume – cada agente tem uma fonte, um canal e uma pia. A fonte coleta dados do remetente, o canal armazena temporariamente os dados, e finalmente, a pia transfere dados para o destino, que é um servidor Hadoop.

Sqoop: Data Ingestion for Relational Databases

Sqoop (“SQL,” para Hadoop) é outra ferramenta de ingestão de dados como o Flume. Enquanto o Flume trabalha com dados não estruturados ou semi-estruturados, o Sqoop é usado para exportar e importar dados de e para bases de dados relacionais. Como a maioria dos dados empresariais são armazenados em bancos de dados relacionais, o Sqoop é usado para importar esses dados para o Hadoop para que os analistas examinem.

Database admins e desenvolvedores podem usar uma interface simples de linha de comando para exportar e importar dados. O Sqoop converte esses comandos para o formato MapReduce e os envia para o HDFS usando o YARN. O Sqoop também é tolerante a falhas e executa operações simultâneas como Flume.

Zookeeper: Coordination of Distributed Applications

Zookeeper é um serviço que coordena aplicações distribuídas. No framework Hadoop, ele atua como uma ferramenta de administração com um registro centralizado que possui informações sobre o cluster de servidores distribuídos que ele gerencia. Algumas de suas principais funções são:

  • Mantendo informações de configuração (estado compartilhado de dados de configuração)
  • li>Serviço de nomes (atribuição de nome a cada servidor)Serviço de sincronização (lida com deadlocks, condição de raça e inconsistência de dados)

  • Eleição de líder (elege um líder entre os servidores por consenso)

O cluster de servidores em que o serviço Zookeeper roda é chamado de “ensemble”. O conjunto elege um líder entre o grupo, sendo que os demais se comportam como seguidores. Todas as operações de escrita dos clientes precisam ser encaminhadas através do líder, enquanto as operações de leitura podem ir diretamente para qualquer servidor.

Zookeeper fornece alta confiabilidade e resiliência através da sincronização à prova de falhas, atomicidade e serialização de mensagens.

Kafka: Faster Data Transfers

Kafka é um sistema distribuído de mensagens de publicação e subscrição que é frequentemente usado com o Hadoop para transferências de dados mais rápidas. Um cluster Kafka consiste num grupo de servidores que actuam como intermediário entre produtores e consumidores.

No contexto de grandes dados, um exemplo de um produtor pode ser um sensor que recolhe dados de temperatura para retransmitir de volta ao servidor. Os consumidores são os servidores Hadoop. Os produtores publicam mensagens sobre um tópico e os consumidores puxam mensagens ouvindo o tópico.

Um único tópico pode ser dividido em partições. Todas as mensagens com a mesma chave chegam a uma partição específica. Um consumidor pode ouvir uma ou mais partições.

Ao agrupar mensagens sob uma chave e fazer com que um consumidor atenda a partições específicas, muitos consumidores podem ouvir sobre o mesmo tópico ao mesmo tempo. Assim, um tópico é paralelizado, aumentando o rendimento do sistema. Kafka é amplamente adotado por sua velocidade, escalabilidade e replicação robusta.

HBase: Base Não Relacional de Dados

HBase é uma base de dados não-relacional, orientada a colunas, que se situa no topo do HDFS. Um dos desafios com o HDFS é que ele só pode fazer processamento em lote. Assim, para consultas interativas simples, os dados ainda têm que ser processados em lotes, levando a alta latência.

HBase resolve este desafio permitindo consultas para linhas simples através de tabelas enormes com baixa latência. Ele consegue isso usando tabelas de hash internamente. Ele é modelado de acordo com as linhas do Google BigTable que ajuda a acessar o Sistema de Arquivos do Google (GFS).

HBase é escalável, tem suporte a falhas quando um nó cai, e é bom com dados não estruturados bem como semi-estruturados. Portanto, é ideal para consultar grandes armazenamentos de dados para fins analíticos.

Download O’Reilly Report: Movendo o Hadoop para a nuvem agora.
Lê Agora

Desafios do Hadoop

Embora o Hadoop tenha sido visto amplamente como um facilitador chave de grandes dados, ainda existem alguns desafios a considerar. Estes desafios decorrem da natureza do seu complexo ecossistema e da necessidade de conhecimentos técnicos avançados para executar as funções do Hadoop. No entanto, com a plataforma e ferramentas de integração corretas, a complexidade é reduzida significativamente e, portanto, facilita também o trabalho com ela.

Curva de Aprendizagem do Steep

Para consultar o sistema de arquivos Hadoop, os programadores têm que escrever funções MapReduce em Java. Isto não é simples, e envolve uma curva de aprendizagem íngreme. Além disso, há muitos componentes que compõem o ecossistema, e leva tempo para se familiarizar com eles.

Diferentes conjuntos de dados requerem diferentes abordagens

Não há uma solução ‘tamanho único’ no Hadoop. A maioria dos componentes suplementares discutidos acima foram construídos em resposta a uma lacuna que precisava de ser preenchida.

Por exemplo, a Colmeia e o Porco fornecem uma forma mais simples de consultar os conjuntos de dados. Adicionalmente, ferramentas de ingestão de dados como o Flume e o Sqoop ajudam a recolher dados de múltiplas fontes. Existem inúmeros outros componentes também e é necessária experiência para fazer a escolha certa.

Limitações do MapReduce

MapReduce é um excelente modelo de programação para processar em lote grandes conjuntos de dados. Entretanto, ele tem suas limitações.

A abordagem intensiva de arquivos Its, com múltiplas leituras e gravações, não é adequado para análises de dados interativas e em tempo real ou tarefas iterativas. Para tais operações, o MapReduce não é suficientemente eficiente, e leva a latências elevadas. (Há soluções para este problema. O Apache é uma alternativa que está preenchendo a lacuna do MapReduce.)

Data Security

As grandes dados são movidos para a nuvem, dados sensíveis são despejados nos servidores Hadoop, criando a necessidade de garantir a segurança dos dados. O vasto ecossistema tem tantas ferramentas que é importante assegurar que cada ferramenta tenha os direitos de acesso correctos aos dados. É necessário que haja uma autenticação apropriada, aprovisionamento, encriptação de dados e auditoria frequente. O Hadoop tem a capacidade de enfrentar este desafio, mas é uma questão de ter a experiência e ser meticuloso na execução.

Embora muitos gigantes tecnológicos tenham usado os componentes do Hadoop discutidos aqui, ele ainda é relativamente novo na indústria. A maioria dos desafios provém desta nascença, mas uma grande plataforma robusta de integração de dados pode resolver ou facilitar todos eles.

Hadoop vs Apache Spark

O modelo MapReduce, apesar de suas muitas vantagens, não é eficiente para consultas interativas e processamento de dados em tempo real, pois depende de gravações em disco entre cada estágio do processamento.

Spark é um mecanismo de processamento de dados que resolve este desafio usando armazenamento de dados em memória. Embora tenha começado como um sub-projeto do Hadoop, ele tem sua própria tecnologia de cluster.

Apark é usado em cima do HDFS para alavancar apenas o aspecto de armazenamento do Hadoop. Para o algoritmo de processamento, ele usa suas próprias bibliotecas que suportam consultas SQL, streaming, aprendizado de máquina e gráficos.

Os cientistas de dados usam Spark extensivamente para sua velocidade de relâmpago e APIs elegantes e ricas em recursos que facilitam o trabalho com grandes conjuntos de dados.

Embora Spark possa parecer ter uma vantagem sobre o Hadoop, ambos podem trabalhar em conjunto. Dependendo da necessidade e do tipo de conjuntos de dados, Hadoop e Spark se complementam. A Spark não tem um sistema de arquivo próprio, então ela tem que depender de HDFS, ou outras soluções do gênero, para seu armazenamento.

A comparação real é na verdade entre a lógica de processamento da Spark e o modelo MapReduce. Quando a RAM é uma restrição, e para trabalhos noturnos, o MapReduce é um bom ajuste. Entretanto, para transmitir dados, acessar bibliotecas de aprendizagem de máquinas, e para operações rápidas em tempo real, Spark é a escolha ideal.

Um Futuro com Muitas Possibilidades

Em apenas uma década, a Hadoop fez sua presença em grande escala na indústria de computação. Isto porque finalmente tornou real a possibilidade de análise de dados. Desde a análise de visitas ao site até a detecção de fraudes e aplicações bancárias, suas aplicações são diversas.

Com o Talend Open Studio for Big Data é fácil integrar sua configuração do Hadoop em qualquer arquitetura de dados. O Talend fornece mais conectores de dados incorporados do que qualquer outra solução de gerenciamento de dados, permitindo que você crie fluxos de dados contínuos entre o Hadoop e qualquer formato de arquivo principal (CSV, XML, Excel, etc.), sistema de banco de dados (Oracle, SQL Server, MySQL, etc.), aplicativo empresarial empacotado (SAP, SugarCRM, etc.) e até mesmo serviços de dados em nuvem como Salesforce e Force.com.

Deixe uma resposta

O seu endereço de email não será publicado.