Hadoop




Arquivo:Apresentação.pdf


   Segundo [1] você não pode ter uma longa conversa sobre Big Data[2] sem que um elefante entre na sala: Hadoop.


   Hadoop é uma plataforma open source mantida pela Apache Software Foundation que tem se mostrado muito útil tanto no armazenamento quanto no processamento de grandes volumes de dados, de forma barata e eficiente.


   O Projeto é mantido pela Apache, porém conta com a colaboração de várias grandes empresas, entre elas: Yahoo, Facebook, Google e IBM[3].


   Basicamente Hadoop é uma forma de armazenar grandes quantidades de dados distribuídos em máquinas distintas e, em seguida, distribuir também o processamento desses dados em cada máquina.

  • Descrição da Apache em relação ao Hadoop:
    • É um Framework que permite o processamento distribuído de grandes quantidades de dados em clusters utilizando modelos de programação simples;
    • Foi projetado para trabalhar desde uma única máquina a várias, cada uma delas oferecendo armazenamento e processamento próprios;
    • A Biblioteca em si foi projetada para detectar e lidar com falhas, fornecendo alta disponibilidade.


  • O Hadoop é tido como uma solução adequada para Big Data por vários motivos:
    • É um projeto open source, como já informado, fato que permite a sua modificação para fins de customização e o torna suscetível a melhorias constantes graças à sua rede de colaboração. Por causa desta característica, vários projetos derivados ou complementares foram - e ainda são - criados;
    • Proporciona economia, já que não exige o pagamento de licenças e suporta hardware convencional, permitindo a criação de projetos com máquinas consideravelmente mais baratas;
    • O Hadoop conta, por padrão, com recursos de tolerância a falhas, como replicação de dados;
    • O Hadoop é escalável: havendo necessidade de processamento para suportar maior quantidade de dados, é possível acrescentar computadores sem necessidade de realizar reconfigurações complexas no sistema.


   Hadoop é baseado em duas partes principais, um sistema de arquivo HDFS (Hadoop Distributed File System) e o sistema para distribuir o processamento MapReduce.

Hadoop DFS

  • Otimizado para processamento em lote;
  • Arquivos são quebrados em Blocos;
  • Blocos são distribuídos em Nós;
  • Os Blocos de um Arquivo são acessados diretamente nos Nós, aumentando a velocidade de acesso;


  • HDFS dividido em:
    • NameNode:
      • Gerencia o sistema de arquivos, mapeando os Arquivos em Blocos e os Blocos nos DataNodes;
      • Gerencia a replicação.
    • DataNode:
      • É um servidor de Blocos;
      • Facilita o pipeline para outros DN`s.



Hadoop MapReduce

  • É útil para processamento e análise de grande quantidade de dados;
  • Utiliza os Blocos armazenados nos DN`s;
  • Manipula o paralelismo.


  • Se ouve mais sobre MapReduce no que HDFS em relação ao Hadoop, por dois motivos:
    • É a ferramenta que realmente processa os dados;
    • As pessoas ficam fascinadas quando trabalham com isso.


  • O MapReduce realiza vários trabalhos, cada qual com uma aplicação separada, que entra nos dados e retira informações conforme necessário.
    • Utilizando MapReduce ao invés de comandos, como no SQL, aumenta a complexidade porém dá mais poder pra quem os processa.


  • Existem ferramentas que diminuem a complexidade, é o caso do Hive[4] também da apache, que ajuda a converter linguagens de comando para trabalhos em MapReduce.


  • Dividido em:
    • JobTracker:
      • Conhece os dados dos Trabalhos sendo realizados, status do trabalho e das tarefas rodando nos TaskTracker;
      • Decide como será o cronograma dos trabalhos.
    • TaskTracker:
      • Realiza os trabalhos do JT;
      • Comunica-se com o JT sobre as tarefas;


Conclusão

  • O Hadoop fornece[5]:
    • Um sistema de arquivos distribuído (HDFS) que armazena os dados em vários servidores;
    • Um meio de realizar tarefas (MapReduce) entre esses servidores;
    • rodando todo o trabalho próximo aos dados.



  • Hadoop não é um Sistema de Banco de Dados, é mais próximo de um sistema de armazenamento de dados, por isso é necessário um sistema como o MapReduce para realizar o processamento desses dados.


  • O que o Hadoop não é [6], não é um substituto para um banco de dados, o MapReduce nem sempre é o mais eficiente, entre outros.

Utilização de Hadoop com baixo custo[7]

  • Raspberry PI:
    • Computador de baixo custo, US$ 35,00, 512 MB Ram, 700 Mhz.


  • Teste feito com um arquivo de texto de 35MB:
    • Utilizando um Raspberry PI o tempo de processamento foi de 9:19 minutos;
    • Após várias configurações, utilizando três Raspberry PI o tempo de processamento foi de 5:26.


Referências


Discussão

Conceito

O Hadoop é um projeto da Apache Foundation para o desenvolvimento de ferramentas para computação distribuída e que inclui os seguintes sub-projetos:

  • Hadoop Common: Programas que dão suporte aos demais subprojetos do Hadoop.
  • HDFS: É um sistema de arquivos distribuídos que provê um alto throughput no accesso aos dados de aplicações.
  • MapReduce: É um framework para a distribuição do processamento de grandes volumes de dados em clusters de computadores.


Outros projetos relacionados com o Hadoop:

  • Avro: Sistema de serialização de dados.
  • Chukwa: A data collection system for managing large distributed systems.
  • HBase: A scalable, distributed database that supports structured data storage for large tables.
  • Hive: A data warehouse infrastructure that provides data summarization and ad hoc querying.
  • Mahout: A Scalable machine learning and data mining library.
  • Pig: Linguagem de fluxo de dados de alto nível e framework de execução para computação paralela.
  • ZooKeeper: Serviço de coordenação de alta performance para aplicações distribuídas.


Características

Hadoop é uma ferramenta (java!) para lidar com grandes quantidades de dados: terabytes ( 1TB = 1024GB ), petabytes ( 1PB = 1024TB ), ...

É composta por dois módulos: HDFS e MapReduce


HDFS (Hadoop Distributed File System) é o sistema de armazenamento baseado num sistema de arquivos próprio e distribuído.

  • Tolerante a falhas
  • Alto throughput
  • Write-once-read-many - baixo controle de concorrência
  • Mantém a lógica de processamento próxima aos dados ao invés de movê-la para o espaço de aplicação
  • Recuperação automática e rápida de falhas
  • Commodity hardware - nós do cluster podem ser personal computers 
  • Escalabilidade
  • Confiabilidade
  • Formas de acesso: API (Java, C), Command Shell, Web application for browsing data, mount over NFS, WebDAV, REST API, HttpFS


MapReduce (YARN ou NextGen MapReduce) é um modelo de programação para escrita de aplicações que rapidamente processam grandes quantidades de dados em paralelo.

  • Executa sobre dados armazenados, por exemplo, no HDFS, Cassandra e MongoDB
  • Ferramentas como Pig, Hive, Avro utilizam MapReduce em seus algoritmos de processamento


Business Case

Caso de negócio 1: Plataforma de Big Data

O Hadoop é definitivamente a ferramenta base para uma plataforma de Big Data.

Quando falamos em Big Data na CTBC, falamos de negócios do tipo: DW (data warehouse), CDRs (call detail records), sistemas para Internet como o Coreo, sistemas para redes sociais, bases de dados de clientes, etc..

Lembrando que "sozinho", o Hadoop não é uma ferramenta produtiva para desenvolvimento, mas atualmente existe uma suite de ferramentas que abstraem suas camadas e que se encaixariam numa "Plataforma de Big Data". São elas: HBase, Hive, Zookeeper, Pig, Sqoop ...

Exemplos de plataformas de Big Data que têm como base o Hadoop: IBM Big Data Platform, Oracle Big Data Platform, Talend Big Data Platform, ...

Assim, esse caso de negócio dentro do P&D do Hadoop é apenas uma pontapé para a montagem de uma plataforma flexível e coesa com os requisitos que a Algar Telecom venha a elicitar nos futuros sistemas. Não vemos a CTBC utilizando uma dessas plataformas acima. Vemos um caso de negócio no qual o CDS deve construir sua própria solução, tendo como base o Hadoop, de acordo com o sistema a ser desenvolvido.


Caso de negócio 2: Mineração de Dados não Estruturados

A mineração de dados não estruturados na Algar Telecom pode acontecer sob duas perspectivas principais: (1) desenvolvimento de pesquisa científica dentro do núcleo de P&D do CDS e (2) desenvolvimento de algoritmos que mineram a base de dados de clientes da CTBC. Acreditamos que a segunda perspectiva seja consequência da primeira. É um assunto muito interessante e em alta no meio acadêmico, que pode ser muito enriquecida com testes em bases de dados reais de clientes CTBC ou mesmo em dados de redes sociais.




Bibliografia


'

  • Hadoop: The Definitive Guide, Second Edition By Tom White. Publisher: O'Reilly Media Released: September 2010 Pages: 624
  • Pro Hadoop By Jason Venner. Publisher: Apress : Published Jun 2009: Pages: 440


Apresentações e Documentos


Artigos


Vídeos