Concrete Logo
Hamburger button

Hadoop, parte I

  • Blog
  • 12 de Dezembro de 2012
Share

 
Este post faz parte da série sobre BigData, MapReduce e Hadoop cujos primeiros posts foram os seguintes:

 
Big data é o novo hype?

Dizem que Hadoop ajuda quando a solução pode usar MapReduce (não é exatamente só quando se pode usar MapReduce). Confira comigo.

 

O que é o Hadoop em poucas frases

Um sistema distribuído que consiste em um sistema de arquivos distribuídos mais ferramentas para tornar paralelos e executar programas em clusters.

Bem nas suas origens, antes mesmo de 2006 quando foi separado do Nutch sob o nome de Hadoop, já era uma implementação de um sistema de arquivos distribuído (NDFS Nutch Distributed File System) e de MapReduce.

A definição atual é que o Hadoop é um framework open source para escrever e processar de forma escalável aplicações distribuídas com grandes volumes de dados.

Sua biblioteca ou API, constitue um framework que permite usar modelos de programação simples, para fazer processamento distribuído clusterizado de grandes volumes de dados.

 

E o que mais se pode dizer a favor dele

É escalável e tolerante a falhas. Viabiliza de forma econômica processar grandes volumes de dados.

Hadoop

 

Quem adota

O Hadoop já está por aí há um bom tempo e ainda tem gente que o considera como uma solução em busca de um problema. Não creio que seja possível falar de adoção maciça do Hadoop. Se você resolver se dedicar a ele, não espere chover oportunidades na sua caixa postal.

Mas já há gigantes da web adotando ou no mínimo experimentando.

No último Java One Latin America, aconteceu uma ótima apresentação sobre o Hadoop do Fábio Velloso, velho conhecido do SouJava e Gerente de Arquitetura de Sistemas da Telefonica/VIVO. Eles estão usando por lá. Vejam os slides do Fábio em Big Data e Hadoop – A nova fronteira para inovação

O próprio site do Hadoop mostra muitos casos “PoweredBy Hadoop”, entre eles os seguintes:

    – eBay

      cluster com 532 nós, uso pesado de Java MapReduce, Pig, Hive, HBase para otimização de buscas e pesquisas

    – Facebook

      Usa para armazenar cópias do log, como fonte dos estudos analíticos e de machine learning. São 2 clusters:

        – 1100 máquinas com 8800 cores e mais ou menos 12 PB de raw storage.
        – 300 máquinas com 2400 cores e mais ou menos 3 PB de raw storage.

        Cada nó (commodity) tem 8 cores e 12 TB de storage.

      São usuários pesados tanto de streaming como também das APIs Java APIs.

    – Last.fm

      100 nós usados para cálculos de gráficos, royalty reporting, análise de logs, testes A/B, merge de datasets e também análise de características de aúdio em milhões de trilhas

    – LinkedIn

      Grids múltiplos, usa Hive, Avro, Kafka, e outras coisas mais para descobrir pessoas que você pode conhecer e outros fatos interessantes.

    – Rakuten

      Cluster de 69 nós usado para analisar logs e minerar dados para o sistema de recomendação.

    – Spotify

      Cluster de 120 nós usados para gerar conteúdo, agregar dados, fazer análises e relatórios.

    – Twitter

      Usa para armazenar e processar tweets, arquivos de log e muitos outros tipos de dados.

    – Yahoo!

      Mais de 100.000 CPUs em mais de 40.000 computadores. O maior cluster tem 4500 nodes. Usa para suportar pesquisa dos Ad Systems e buscas na web. Usa também para fazer testes de escala necessários ao desenvolvimento do Hadoop em grandes clusters

 
Então não é 100% correto incluí-lo no rol das soluções em busca de um problema, coisas tão comuns na área de TI.

Dominar o Hadoop pode abrir um mundo de possibilidades na área de data mining e machine learning. Ele foi projetado para analisar não só dados estruturados como também dados mais complexos oriundos da web.

Veja mais em:

 

Links para aprender sobre o Hadoop

Na série sobre Hadoop deste blog que começa hoje, serão discutidos aspectos importantes. Mas sem nenhuma pretensão de esgotar o assunto.

Então vou listar abaixo algumas dicas onde se pode aprender mais pois de algumas destas fontes, vieram o que será mostrado aqui:

Artigos:

Livros:

 

Como o Hadoop é executado

O Hadoop roda em uma coleção de servidores que não compartilham nada. Estes servidores não precisam ser máquinas caríssimas mas elas devem ter um mínimo de recursos que aqui no Brasil, ainda não exatamente o que podemos chamar de servidores commodity.

É possível adicionar ou remover servidores em um cluster do Hadoop. O sistema detecta e compensa problemas de hardware ou de software em qualquer dos servidores.

Conforme mostra a figura lá em cima, consiste de 2 serviços chave:

    – armazenamento de dados usando o Hadoop Distributed File System (HDFS)
    – processamento paralelo de alta performance de dados usando a técnica de MapReduce.

 

História

O Hadoop começou como um subprojeto do Nutch, que por sua vez era subprojeto do Lucene, todos de criação do Doug Cutting.

O Lucene, cujas versões 4.0 do core dele e do SOLR foram lançadas em 10/10/2012, é uma biblioteca para indexação e busca de texto.

O Nutch era uma ambiciosa extensão do Lucene que tentava ser um parser para HTML, um web crawler, um banco de dados para grafos de links e mais alguns outros componentes necessários para ser um motor de busca na web. Era como se fosse uma alternativa aberta às soluções de busca proprietárias do tipo das do Google.

O Lucene foi concebido para indexar milhões de documentos mas para ser o que se propunha, o Nutch precisava lidar com grandezas muito maiores. Precisava rodar em clusters de máquinas commodities, com redundância e tolerância a falha. Estes desafios não eram nada triviais.

Em 2004, com a publicação do famoso artigo do pessoal do Google MapReduce: Simplified Data Processing on Large Clusters, que descrevia o framework MapReduce e o GFS, Google File System, o Doug viu que por ali era o caminho.

No início de 2005, time dele começou a implementar um framework nos mesmos moldes. Já em meados de 2005 a maioria dos algoritmos do Nutch já tinha sido portado para funcionar com MapReduce e com NDFS (Nutch Distributed File System).

O Doug percebeu que um projeto dedicado era necessário e assim nasceu o Hadoop.

O nome, como sempre, teve origem na família do Doug. Veio de um elefantinho amarelo chamado assim por seu filho pequeno (o mesmo que usava a palavra Nutch para designar todo e qualquer tipo de alimento – Lucene era o nome do meio da sua mulher e primeiro nome da sua avó materna).

Em 2006 o Doug foi contratado pelo Yahoo para trabalhar dedicado em aprimorar o Hadoop mantendo-o como open source (hoje o Doug é arquiteto chefe na Cloudera).

Em 2008 o Yahoo anunciou que tinha o Hadoop rodando em um cluster de mais de 10 mil núcleos Linux no seu sistema de indexação da Web. Ver Yahoo! Launches World’s Largest Hadoop Production Application

 

Primeiros passos com Hadoop

 

Instalação

Antes de instalar, é necessário ter o Java funcionando (1.6 ou maior)

 
O Hadoop foi feito no Linux para rodar em Linux. A instalação segue o modo tradicional de baixar o tar.gz.

Depois de descompactada a distribuição, se deve editar o arquivo conf/hadoop-env.sh para descomentar e substituir a linha abaixo
[sourcecode language=”bash” autolinks=”false”]
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun
[/sourcecode]
para apontar JAVA_HOME correspondente à sua instalação do Java.

No meu caso aqui no OSX Lion, ficou assim (é a saída de /usr/libexec/java_home)
[sourcecode language=”bash” autolinks=”false”]
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_07.jdk/Contents/Home[/sourcecode]

 
Um outro modo de instalar no OSX, bem prático para quem tem instalados o XCode 4.3.x e o ruby e já usa o homebrew, é simplesmente fazer:
[sourcecode language=”bash” autolinks=”false”]
brew install hadoop[/sourcecode]

 
Só para conferir que está funcionando, rode [sourcecode language=”bash” autolinks=”false”]
bin/hadoop[/sourcecode]

 
Você já tem o Hadoop instalado.

Para deixar um gostinho de quero mais e porque este post já ficou grande, vou deixar a execução dos exemplos para a parte 2 sobre o Hadoop.

Então aguardem mais um pouco.

Até a próxima.