1. Hadoop
Gustavo de Lima Rosolen
Bacharelado em Ciência da Computação
Universidade Federal de São Paulo
2.
3. Introdução
● Uso potêncial em aplicações big data
○ conjunto de dados na ordem de peta bytes
○ Computação intensiva sobre os dados
● Computação paralela não é trivial
○ Divisão das subtarefas
○ Escalonamento das subtarefas
○ Balanceamento de carga
4. Motivação
● Hadoop remove a complexidade da computação de alto
desempenho
● Custo eficiente
● Máquinas comuns
● Rede comum
● Tolerância a falhas automática
● Poucos administradores
● Facilidade de uso
● Poucos programadores
5. O que é
● Uma plataforma de software em Java de computação
distribuída voltada para clusters e processamento de
grandes massas de dados:
○ Código aberto
○ Implementado em Java
○ Inspirado no GFS e MapReduce do Google
○ Projeto top-level da Fundação Apache
○ Tecnologia muito utilizada
6. História
● 2003 Google publica artigo do GFS
● 2004 Google publica artigo do MapReduce
● 2005 Doug Cutting cria uma versão do MapReduce
para o projeto Nutch
● 2006 Hadoop se torna um subprojeto do Apache
Lucene
7. História
● 2007 Yahoo! Inc. se torna o maior contribuidor e
utilizador do projeto (aglomerado com mais de 1.000
nós)
● 2008 Hadoop deixa a tutela do projeto Lucene e se
transforma em um projeto top-level da Apache
● 2010 Facebook anuncia o maior aglomerado Hadoop
do mundo (mais de 2.900 nós e 30 petabytes de dados)
● 2011 Apache disponibiliza a versão 1.0.0
8. História
● 2012 Apache lança a versão Hadoop 2.0 (Yarn)
● 2015 Última versão disponibilizada Hadoop 2.7.0
10. Onde é usado
Yahoo!
○ Mais de 100.000 CPUs em 40.000 computadores com o Hadoop
○ Maior cluster: 4500 nós (2*4 núcleos com 4*1 TB de disco e 16 GB
RAM)
○ Usado para apoio à investigação em Sistemas de anúncios e Web
Search
11. Onde é usado
EBay
● Cluster de 532 nodos (8 * 532 núcleos, 5.3PB).
● Uso intenso de Java MapReduce , Apache Pig, Apache Hive, HBase
● Usado para pesquisa otimização e Research.
12. Onde é usado
Spotify
● Usado para geração de conteúdo, agregação de dados, relatórios e
análise
● Cluster com 1300 nodos: 15.600 núcleos físicos, ~ 70TB RAM, ~ 60 PB de
armazenamento
● Uso crescendo rapidamente
13. Onde é usado
LinkedIn
● Clusters:
○ 800 nodos (HP SL 170x, com núcleos de 2x4, 24GB RAM, 6x2TB
SATA)
○ 1900 nodos (SuperMicro X8DTT-H, com núcleos de 2x6, 24GB de
RAM, 6x2TB SATA)
○ 1400 nodos (Sandy SuperMicro com núcleos 2x6, 32GB de RAM,
6x2TB SATA)
14. Onde é usado
Facebook
● Usado para armazenar cópias de log interno, fontes de dados e fonte de
informação para análise e / aprendizagem de máquina.
● Atualmente, dois grandes grupos:
● Um cluster com 1100 máquinas com 8800 núcleos e cerca de 12 PB de
armazenamento bruto.
● Um conjunto de 300 máquinas com 2400 núcleos e cerca de 3 PB
armazenamento bruto.
● Cada nó (commodities) tem 8 núcleos e 12 TB de armazenamento.
18. Robusto
● Se em 1 máquina há probabilidade de haver falhas...
● Tempo médio entre falhas para 1 nó: 3 anos
● Tempo médio entre falhas para 1.000 nós: 1 dia
● Estratégias
● Replicação dos dados
● Armazenamento de metadados
19. Escalável
● Permite facilmente adicionar máquinas ao aglomerado
● Adição não implica na alteração do código-fonte
● Limitação apenas relacionada a quantidade de recursos
disponíveis
20. Foco na regra de negócio
● Hadoop realiza todo o “trabalho duro”
● Desenvolvedores podem focar apenas na
abstração do problema
21. Desvantagens
● Único nó mestre
● Ponto único de falha
● Pode impedir o escalonamento
● Dificuldade das aplicações paralelas
● Problemas não paralelizáveis
● Processamento de arquivos pequenos
● Muito processamento em um pequeno conjunto de
dados
22. Problemas e Soluções
● Problemas
○ Os dados que serão processados não cabem em
um nó
○ Cada nó é composto por hardware comum
○ Falhas podem (e irão) acontecer
● Ideias e soluções do Apache Hadoop
○ Sistema de arquivos distribuído
○ Replicação interna
○ Recuperação de falhas automática
23. Problemas e Soluções
● Problemas
○ Mover dados é caro (largura de banda pequena)
○ Mover computação é barato
○ Programação paralela e distribuída é difícil
● Ideias e soluções do Apache Hadoop
○ Mover a computação para onde estão os dados
○ Escrever programas que são fáceis de se distribuir
○ Paralelismo de dados utilizando conceitos de
linguagem funcional
24. Onde não usar
● problemas não paralelizáveis
● processamento de arquivos pequenos
● muito processamento e poucos dados
26. Common
Hadoop Common refere-se à coleção de utilitários e
bibliotecas comuns que suportam outros módulos do
Hadoop.(Core)
● Paralelização automática
● Balanceamento de carga
● Otimização nas transferências de disco e rede
● Tratamento de falhas
● Robustez
● Escalabilidade
27. HDFS
● Um sistema de arquivos distribuído que fornece acesso
de alto rendimento para os dados do aplicativo.
○ Sistema de arquivos distribuído
○ Arquitetura Mestre/Escravo
○ Inspirado no Google FileSystem (GFS)
29. Mapreduce
● Um modelo de programação especializado no
processamento de conjuntos de dados distribuídos.
○ Abstrai toda a computação paralela em apenas duas
funções: Map e Reduce.
○ Baseado no Google Mapreduce
30. Yarn
● Um framework para escalonamento de tarefas e
gerenciamento de recursos de um cluster
● Funciona como uma camada de abstração para
gerenciamento de recursos do cluster, permitindo assim
que outros frameworks se conectem sem ter que
interagir com o MapReduce.
32. outros projetos
● Avro: seriação de dados e chamada a procedimentos
remotos (Remote Procedure Call )
● Chukwa: monitoramento e coleta de dados de sistemas
distribuídos
● HBase: banco de dados não-relacional distribuído e
escalável (baseado no Google Bigtable)
● Hive: infraestrutura de data warehouse (relacional,
SQL-like)
● ZooKeeper: coordenação de serviços distribuídos
(configurações, nomes, sincronização, etc.)
33. outros projetos
● Pig: linguagem de alto-nível para expressar programas
de análise de dados (Pig Latin)
● Mahout: É uma biblioteca de algoritmos de
aprendizado de máquina