Você está na página 1de 24

Hadoop: fundamentos e instalao

Pgina 1 de 24

www.devmedia.com.br
[verso para impresso]
Link original: http://www.devmedia.com.br/articles/viewcomp.asp?comp=29466

Hadoop: fundamentos e
instalao
Este artigo aborda os fundamentos bsicos e a instalao
da tecnologia Apache Hadoop em um ambiente para
desenvolvimento de aplicaes que manipulam grandes
volumes de dados (big data).

Fique por dentro


Este artigo aborda os fundamentos bsicos e a instalao da tecnologia Apache
Hadoop em um ambiente para desenvolvimento de aplicaes que manipulam
grandes volumes de dados (big data). Hadoop destaca-se como uma tecnologia
aberta, baseada no paradigma MapReduce, que utiliza a computao paralela e
distribuda para resolver o problema da escalabilidade no processamento de
Bigdata, com garantias de tolerncia a falhas. Das vantagens em adot-lo, est o
fato de se utilizar aglomerados de mquinas convencionais, tornando-o eficaz como
soluo de baixo custo de implantao. Ademais, com ele as empresas podem
conquistar uma grande vantagem competitiva, dispondo de um mecanismo que
possibilita avaliar grandes quantidades de dados em busca de novas informaes.

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 2 de 24

Vivenciamos a era da informao, na qual volumes expressivos de dados so


produzidos pelas mais diversas organizaes e estruturas de sistemas, alcanando
dimenses que superam com facilidade os petabytes dirios. Tal volume surge de
diversas fontes de dados, como, por exemplo, medies coletadas por sensores dos
mais diversos tipos, histrico dos servios oferecidos por sistemas Web, variados
contedos produzidos pelos usurios em redes sociais, acesso a bases de dados de
imagens e mapas, e muito mais. Tais fontes heterogneas produzem uma quantidade
de dados acima da capacidade que normalmente pode ser processada por tecnologias
tradicionais de banco de dados relacional.
Nesse contexto, o termo Big Data (aqui denominado Bigdata) foi definido
considerando as seguintes questes: (a) volume de dados em grande quantidade
(acima de terabytes); (b) velocidade na criao e captura de dados brutos a taxas
muito rpidas, podendo ser arquivos em lote, obtidos de bancos de dados, ou dados
gerados em tempo real (em streaming); e, (c) variedade no formato dos dados,
podendo ser estruturado, semiestruturado, e at mesmo no estruturado, ou uma
combinao dessas variaes. Essas trs questes esto ilustradas na Figura 1.

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 3 de 24

Figura 1. As trs dimenses do Bigdata: volume, variedade e velocidade.


Assim, considerando as caractersticas extremas do Bigdata, uma nova classe de
aplicaes deve ser construda para analisar grandes bases de dados, processar
pesados clculos sobre esses dados, identificar comportamentos e disponibilizar
servios especializados em seus domnios.
Entretanto, no uma tarefa trivial implementar tais solues, pois h, na maioria das
vezes, a inviabilidade de execut-las no modelo computacional tradicional, usando
tecnologias baseadas em banco de dados relacional, e processando em mquinas com
escalabilidade baixa. Os ditos problemas grandes ou complexos chegam a consumir
horas ou dias de processamento nas arquiteturas convencionais. Embora em
constante evoluo, os recursos computacionais convencionais so insuficientes para
acompanhar a crescente complexidade das novas aplicaes.

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 4 de 24

Como proposta para superar os desafios, surge o Apache Hadoop, um framework para
o processamento de grandes quantidades de dados em aglomerados e grades
computacionais. A ideia de promover solues para os desafios dos sistemas
distribudos em uma s plataforma o ponto central do projeto Hadoop. Nessa
plataforma, problemas como integridade dos dados, disponibilidade dos ns,
escalabilidade da aplicao e recuperao de falhas so simplificadas para quem
desenvolve as aplicaes.
Alm disso, seu modelo de programao e sistema de armazenamento dos dados
promove um rpido processamento, muito superior s outras tecnologias similares.
Atualmente, alm de estar consolidado no mundo empresarial, o Hadoop tem obtido
crescente apoio da comunidade acadmica, proporcionando, assim, estudos cientficos
e prticos.
Com base em tudo o que foi citado, este artigo apresenta os fundamentos das
tcnicas e dos conceitos envolvidos no projeto Apache Hadoop, em especial o modelo
de programao MapReduce. Em seguida, so detalhadas as etapas para a instalao
e configurao de um ambiente Hadoop a ser utilizado no desenvolvimento e testes de
aplicaes Bigdata.

O Apache Hadoop um framework open source para o armazenamento e


processamento de dados em larga escala. Ele oferece como ferramentas principais
uma implementao do modelo MapReduce, responsvel pelo processamento
distribudo, e o Hadoop Distributed File System (HDFS), para armazenamento de
grandes conjuntos de dados, tambm de forma distribuda.
Embora recente, o Apache Hadoop tem se destacado como uma ferramenta eficaz,
sendo utilizado por grandes corporaes como IBM, Oracle, Facebook, Yahoo!, entre
outras. Mas para chegar nesse ponto, alguns eventos importantes ocorreram nos
ltimos dez anos, como demonstram os fatos histricos a seguir:
Fevereiro de 2003: Jeffrey Dean e Sanjay Ghemawat, dois engenheiros do Google,
desenvolvem a tecnologia MapReduce, que possibilitou otimizar a indexao e
catalogao dos dados sobre as pginas Web e suas ligaes. O MapReduce permite

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 5 de 24

dividir um grande problema em vrios pedaos e distribu-los em diversos


computadores. Essa tcnica deixou o sistema de busca do Google mais rpido mesmo
sendo executado em computadores convencionais e menos confiveis, diminuindo
assim os custos ligados infraestrutura;
Outubro de 2003: O Google desenvolve o Google File System, um sistema de
arquivos distribudo (o GoogleFS, depois chamado de GFS), criado para dar suporte ao
armazenamento e processamento do grande volume de dados da tecnologia
MapReduce;
Dezembro de 2004: o Google publica o artigo Simplified Data Processing on Large
Clusters, de autoria dos engenheiros Dean e Ghemawat, onde eles apresentam os
principais conceitos e caractersticas da tecnologia MapReduce, porm, sem detalhes
sobre a implementao;
Dezembro de 2005: o consultor de software Douglas Cutting divulgou a
implementao de uma verso do MapReduce e do sistema de arquivos distribudos
com base nos artigos do GFS e do MapReduce publicados pelos engenheiros do
Google. A implementao faz parte do subprojeto Nutch, adotado pela comunidade de
software livre para criar um motor de busca na Web, normalmente denominado web
crawler (um software que automatiza a indexao de pginas) e um analisador de
formato de documentos (parser).
Tempos depois o Nutch seria hospedado como o projeto Lucene, na Apache Software
Foundation (ver seo Links), tendo como principal funo fornecer um poderoso
mecanismo de busca e indexao de documentos armazenados em diversos formatos,
como arquivos de texto, pginas web, planilhas eletrnicas, ou qualquer outro formato
do qual se possa extrair informao textual;
Fevereiro de 2006: a empresa Yahoo! decide contratar Cutting e investir no projeto
Nutch, mantendo o cdigo aberto. Nesse mesmo ano, o projeto recebe o nome de
Hadoop, passando a ser um projeto independente da Apache Software Foundation;
Abril de 2007: o Yahoo! anuncia ter executado com sucesso uma aplicao Hadoop
em um aglomerado de 1.000 mquinas. Tambm nessa data, o Yahoo! passa a ser o

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 6 de 24

maior patrocinador do projeto. Alguns anos depois, a empresa j contava com mais de
40.000 mquinas executando o Hadoop (White, 2010);
Janeiro de 2008: o Apache Hadoop, na verso 0.15.2, amadurece como um projeto
incubado na fundao Apache, e torna-se um dos principais projetos abertos da
organizao;
Julho de 2008: uma aplicao Hadoop em um dos aglomerados do Yahoo! quebra o
recorde mundial de velocidade de processamento na ordenao de 1 terabyte de
dados. O aglomerado era composto de 910 mquinas e executou a ordenao em 209
segundos, superando o recorde anterior que era de 297 segundos;
Setembro de 2009: a empresa Cloudera, especializa em Bigdata, contrata Cutting
como lder do projeto. Cloudera uma empresa que redistribui uma verso comercial
derivada do Apache Hadoop;
Dezembro de 2011: passados seis anos desde seu lanamento, o Apache Hadoop
disponibiliza sua verso estvel (a 1.0.0). Entre as melhorias, destaca-se o uso do
protocolo de autenticao de rede Kerberos, para maior segurana de rede; a
incorporao do subprojeto HBase, oferecendo suporte a BigTable; e o suporte
interface WebHDFS, que permite o acesso HTTP para leitura e escrita de dados;
Maio de 2012: a Apache faz o lanamento da verso da 2.0 do Hadoop, incluindo alta
disponibilidade no sistema de arquivos (HDFS) e melhorias no cdigo.
Ao ser hospedado como um projeto da Apache Software Foundation, o Hadoop segue
o modelo de licenciamento da Apache, bem mais flexvel que outras modalidades de
licena para software livre, permitindo modificaes e redistribuio do cdigo-fonte.
Dessa forma, vrias empresas surgiram no mercado distribuindo implementaes do
Hadoop.
Cada uma dessas implementaes normalmente acrescentam novas funcionalidades,
aplicam especificidades de um nicho de mercado, ou ainda limitam-se a prestao de
servios como implantao, suporte e treinamento. Dentre algumas empresas com
estes objetivos temos a Amazon Web Service, Cloudera, Hortonworks, KarmaSphere,
Pentaho e Tresada. Atualmente, a Cloudera uma das lderes no mercado, chefiada
por Douglas Cutting, um dos criadores do Apache Hadoop original.

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 7 de 24

Nota: A licena Apache exige a incluso do aviso de direitos autorais (copyright)e


termo de responsabilidade, mas no uma licena totalmente livre, comcopyleft,
permitindo seu uso em um software comercial.

Os componentes chave do Hadoop so o modelo de programao MapReduce e o


sistema de arquivos distribudo HDFS. Entretanto, em meio a sua evoluo, novos
subprojetos, que so incorporados como componentes arquitetura Hadoop,
completam a infraestrutura do framework para resolver problemas especficos. Uma
viso simplificada dessa organizao de componentes pode ser vista na Figura 2.
Na camada de armazenamento de dados h o sistema de arquivos distribudo Hadoop
Distributed File System (HDFS), um dos principais componentes do framework. J na
camada de processamento de dados temos o MapReduce, que tambm figura como
um dos principais subprojetos do Hadoop. Na camada de acesso aos dados so
disponibilizadas ferramentas como Pig, Hive, Avro, Mahout, entre outras.
Estas ferramentas tendem a facilitar a anlise e consulta dos dados, fornecendo uma
linguagem de consulta similar s utilizadas em bancos de dados relacionais (como a
SQL, por exemplo). Assim, todo um ecossistema em volta do Hadoop criado com
ferramentas que suprem necessidades especficas; por exemplo, ZooKeeper, Flume e
Chukwa, que melhoram a camada de gerenciamento. Essas ferramentas fornecem
uma interface com o usurio que busca diminuir as dificuldades encontradas no
manuseio das aplicaes que rodam nessa plataforma.

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 8 de 24

Figura 2. Componentes da arquitetura Hadoop (verso 1.x).


Para funcionar, uma aplicao Hadoop exige no mnimo a utilizao das ferramentas
da camada de armazenamento (HDFS) e processamento (MapReduce). As demais
camadas podem ser adicionadas conforme a necessidade. A seguir, cada componente
explicado em sua essncia.

O projeto Hadoop, em sua verso estvel (a 1.0), atualmente sob a tutela da


Fundao Apache, inclui os seguintes mdulos, mantidos como subprojetos:
Hadoop Common: contm um conjunto de utilitrios e a estrutura base que d
suporte aos demais subprojetos do Hadoop. Utilizado em toda a aplicao, possui
diversas bibliotecas como, por exemplo, as utilizadas para serializao de dados e
manipulao de arquivos. neste subprojeto tambm que so disponibilizadas as
interfaces para outros sistemas de arquivos, tais como Amazon S3 e CloudSource;
Hadoop MapReduce: implementa um modelo de programao na forma de uma
biblioteca de classes especializadas no processamento de conjuntos de dados
distribudos em um aglomerado computacional. Abstrai toda a computao paralela
em apenas duas funes: Map e Reduce;

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 9 de 24

Hadoop Distributed File System (HDFS): um sistema de arquivos distribudo


nativo do Hadoop. Permite o armazenamento e transmisso de grandes conjuntos de
dados em mquinas de baixo custo. Possui mecanismos que o caracteriza como um
sistema altamente tolerante a falhas.

Alm desses, h outros projetos na comunidade Apache que adicionam


funcionalidades ao Hadoop, como:
Ambari: ferramenta baseada na Web para o suporte, gerenciamento e
monitoramento de outros mdulos Hadoop, como HDFS, MapReduce, Hive, HCatalog,
HBase, ZooKeeper, Oozie, Pig e Sqoop;
Avro: sistema de serializao de dados;
Cassandra: banco de dados escalvel, com tolerncia a falhas;
Flume e Chukwa: sistemas que tratam da coleta de ocorrncias (logs) para o
monitoramento do Hadoop;
HBase: banco de dados escalvel e distribudo que suporta o armazenamento de
dados estruturados para grandes tabelas;
Hive: infraestrutura de data warehouse que fornece sumarizao de dados e
consultas ad hoc;
Mahout: sistema para desenvolvimento de aplicaes de aprendizagem de mquina
e biblioteca com funes de minerao de dados;
Pig: fornece uma linguagem de consulta de alto nvel (PigLatin) orientada a fluxo de
dados, e uma estrutura de execuo para computao paralela;
ZooKeeper: servio de coordenao de alto desempenho para aplicaes
distribudas.

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 10 de 24

O Hadoop fornece uma arquitetura para que aplicativos MapReduce funcionem de


forma distribuda em um cluster de mquinas, organizadas em uma mquina mestre e
vrias escravo. Para simplificar o desenvolvimento dessas aplicaes, possvel
instalar e executar o framework no modo simplificado, utilizando apenas uma mquina
(que ir simular um ambiente paralelizvel/distribudo).
Para que o Hadoop funcione, necessrio cinco processos: NameNode, DataNode,
SecondaryNameNode, JobTracker e TaskTracker. Os trs primeiros so integrantes do
modelo de programao MapReduce, e os dois ltimos do sistema de arquivo HDFS.
Os componentes NameNode, JobTracker e SecondaryNameNode so nicos para toda
a aplicao, enquanto que o DataNode e JobTracker so instanciados para cada
mquina do cluster.
Considerando os dois principais componentes do Hadoop (MapReduce e HDFS), a
arquitetura bsica ser explica a seguir.

Um sistema de arquivos distribudo responsvel pela organizao, armazenamento,


localizao, compartilhamento e proteo de arquivos que esto distribudos em
computadores de uma rede. Em sistemas distribudos, quando mais de um usurio
tenta gravar um mesmo arquivo simultaneamente, necessrio um controle da
concorrncia (acesso simultneo ao mesmo recurso) para que haja uma operao
atmica dos processos a fim de garantir a consistncia das informaes.
Neste caso, um sistema de arquivos distribudos deve garantir a atomicidade nas
operaes de leitura, escrita, criao ou remoo de um arquivo, de forma
transparente para quem manipula os dados, como se fosse similar a um sistema de
arquivos local.

Nota: Um sistema de arquivos um componente do sistema operacional que


permite ao usurio interagir com os arquivos e diretrios, seja para salvar,
modificar ou excluir arquivos e diretrios (pastas), bem como instalar, executar
ou configurar programas. Um sistema de arquivos distribudo faz tudo isso, mas
em um ambiente de rede, onde os arquivos esto fisicamente espalhados em

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 11 de 24

mquinas distintas. Para quem usa tais arquivos, o sistema deve permitir as
mesmas facilidades de um sistema de arquivos local.

O HDFS atua como um sistema de arquivos distribudo, localizado na camada de


armazenamento do Hadoop, sendo otimizado para alto desempenho na leitura e
escrita de grande arquivos (acima dos gigabytes) que esto localizados em
computadores (ns) de um cluster.
Dentre as caractersticas do HDFS esto a escalabilidade e disponibilidade graas
replicao de dados e tolerncia a falhas. O sistema se encarrega de quebrar os
arquivos em partes menores, normalmente blocos de 64MB, e replicar os blocos um
nmero configurado de vezes (pelo menos trs cpias no modo cluster, e um no modo
local) em servidores diferentes, o que torna o processo tolerante a falhas, tanto em
hardware quanto em software.
O fato que cada servidor tem um grande nmero de elementos com uma
probabilidade de falha, o que significa que sempre haver algum componente do HDFS
falhando. Por serem crticas, falhas devem ser detectadas de forma rpida e
eficientemente resolvidas a tempo de evitar paradas no sistema de arquivos do
Hadoop.
A arquitetura do HDFS estruturada em master-slave (mestre-escravo), com dois
processos principais, que so:
Namenode: responsvel por gerenciar os dados (arquivos) armazenados no HDFS,
registrando as informaes sobre quais datanodes so responsveis por quais blocos
de dados de cada arquivo, organizando todas essas informaes em uma tabela de
metadados.
Suas funes incluem mapear a localizao, realizar a diviso dos arquivos em blocos,
encaminhar os blocos aos ns escravos, obter os metadados dos arquivos e controlar
a localizao de suas rplicas. Como o NameNode constantemente acessado, por
questes de desempenho, ele mantm todas as suas informaes em memria. Ele
integra o sistema HDFS e fica localizado no n mestre da aplicao, juntamente com o
JobTracker;

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 12 de 24

Datanode: responsvel pelo armazenamento do contedo dos arquivos nos


computadores escravos. Como o HDFS um sistema de arquivos distribudo, comum
a existncia de diversas instncias de DataNode em uma aplicao Hadoop,
permitindo que os arquivos sejam particionados em blocos e ento replicados em
mquinas diferentes. Um DataNode poder armazenar mltiplos blocos, inclusive de
diferentes arquivos, entretanto, eles precisam se reportar constantemente ao
NameNode, informando-o sobre as operaes que esto sendo realizadas nos blocos.
MapReduce
O MapReduce um modelo computacional para processamento paralelo das
aplicaes. Ele abstrai as dificuldades do trabalho com dados distribudos, eliminando
quaisquer problemas que o compartilhamento de informaes pode trazer em um
sistema dessa natureza. Consiste das seguintes funes:
Map: Responsvel por receber os dados de entrada, estruturados em uma coleo
de pares chave/valor. Tal funo map deve ser codificada pelo desenvolvedor, atravs
de programas escritos em Java ou em linguagens suportadas pelo Hadoop;
Shuffle: A etapa de shuffle responsvel por organizar o retorno da funo Map,
atribuindo para a entrada de cada Reduce todos os valores associados a uma mesma
chave. Este etapa realizada pela biblioteca do MapReduce;
Reduce: Por fim, ao receber os dados de entrada, a funo Reduce retorna uma
lista de chave/valor contendo zero ou mais registros, semelhante ao Map, que
tambm deve ser codificada pelo desenvolvedor.
A arquitetura do MapReduce segue o mesmo princpio master-slave, necessitando de
trs processos que daro suporte execuo das funes map e reduce do usurio, a
saber:
JobTracker: recebe a aplicao MapReduce e programa as tarefas map e reduce
para execuo, coordenando as atividades nos TaskTrackers. Sua funo ento
designar diferentes ns para processar as tarefas de uma aplicao e monitor-las
enquanto estiverem em execuo. Um dos objetivos do monitoramento , em caso de
falha, identificar e reiniciar uma tarefa no mesmo n, ou, em caso de necessidade, em
um n diferente;

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 13 de 24

TaskTracker: processo responsvel por executar as tarefas de map e reduce e


informar o progresso das atividades. Assim como os DataNodes, uma aplicao
Hadoop composta por diversas instncias de TaskTrackers, cada uma em um n
escravo. Um TaskTracker executa uma tarefa map ou uma tarefa reduce designada a
ele. Como os TaskTrackers rodam sobre mquinas virtuais, possvel criar vrias
mquinas virtuais em uma mesma mquina fsica, de forma a explorar melhor os
recursos computacionais;
SecondaryNameNode: utilizado para auxiliar o NameNode a manter seu servio, e
ser uma alternativa de recuperao no caso de uma falha do NameNode. Sua nica
funo realizar pontos de checagem (checkpointing) do NameNode em intervalos
pr-definidos, de modo a garantir a sua recuperao e atenuar o seu tempo de
reinicializao.
Na Figura 3 observa-se como os processos da arquitetura do Hadoop esto
interligados, organizados em ns mestre e escravos. O mestre contm o NameNode, o
JobTracker e possivelmente o SecondaryNameNode. J a segunda camada, constituda
de ns escravos, comporta em cada uma de suas instncias um TaskTracker e um
DataNode, vinculados respectivamente ao JobTracker e ao NameNode do n mestre.
Uma tarefa (task) que roda em um n escravo pode ser tanto de uma funo map
quanto de uma funo reduce.

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 14 de 24

Figura 3. Funcionamento da arquitetura bsica do Hadoop.

O Hadoop possui trs formas de instalao e execuo da plataforma:


Modo Local ou Independente: Por padro, o Hadoop foi configurado para executar
em modo independente no distribudo. Esse modo til para desenvolver e testar
um aplicativo;
Modo Pseudo distribudo: Pode executar em um nico n em modo pseudo
distribudo. Nesse caso, cada instncia de processo Hadoop executa como um
processo Java diferente;
Modo Totalmente distribudo: O Hadoop configurado em cluster com mquinas
fsicas (ou virtualizadas), cada qual com um endereo IP vlido.

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 15 de 24

Na prtica, possvel alternar entre essas configuraes bastando que se editem as


propriedades relacionadas em trs arquivos: core-site.xml, hdfs-site.xml e mapredsite.xml. A seguir, realizada a instalao do modo padro (local), e no final
demonstrado o funcionamento da plataforma com a execuo de uma aplicao
exemplo.

O Hadoop est disponvel como pacote open-source no portal da Apache (ver seo
Links). Neste endereo voc encontra a verso mais estvel (1.2.x), a verso
preliminar de atualizao (a 2.x) e todas as verses anteriores a mais estvel.
Entretanto, h no mercado verses que empacotam todo o ambiente de execuo,
bem como as configuraes da plataforma operacional para a maioria das distribuies
Linux atualmente em uso (Ubuntu, CentOS, RedHat, etc.).
Entre essas verses comerciais, porm gratuitas, uma das mais utilizadas a ofertada
pela empresa Cloudera (ver seo Links), denominada CDH (atualmente nas verses
3.x e 4.x), que pode ser instalada em uma mquina virtual (VMware, por exemplo),
baseada no Linux CentOS.
Para efeito de demonstrao, foi escolhida a instalao padro do projeto Apache.
Neste caso, necessrio verificar se a instalao Linux escolhida est configurada com
os pacotes Java e SSH. Para os exemplos deste artigo, foi utilizado o seguinte
ambiente: Linux Ubuntu 12.x, Java JDK 1.7, Apache Hadoop-1.2.1.
Aps a definio e ativao do sistema operacional Linux, recomendado criar um
usurio e um grupo dedicados para o Hadoop, executando os comandos vistos na
Listagem 1.
Listagem 1. Comandos para criao de usurio e grupo.

// Criando grupo com o nome "hadoopgrupo":


$ sudo addgroup hadoopgrupo
// Adicionado o usurio "hadoop" ao grupo:
$ sudo adduser --ingroup hadoopgrupo hadoop

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 16 de 24

Em seguida, providencie uma chave de autenticao SSH. Isso se faz necessrio


porque o Hadoop utiliza conexo segura (SSH) para gerenciar seus ns (mestre e
escravos). No caso de conexo local (localhost), no h necessidade de senha na
configurao do SSH. Os comandos vistos na Listagem 2 mostram como criar a
chave de conexo SSH para o localhost.
Listagem 2. Comandos para criao da chave SSH.

$ ssh-keygen -t rsa -P ""


$ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

Certifique-se que o Hadoop esteja instalado na verso definida neste artigo (a 1.2.x).
Uma forma de instalar o Hadoop no Linux baixando o pacote a partir de um
endereo homologado pela Apache. Em nosso exemplo, a opo foi a oferecida pela
Unicamp. Os comandos para esse tipo de instalao podem ser vistos na Listagem 3.
Listagem 3. Comandos para instalao do pacote Hadoop.

$ cd /usr/local
$ sudo wget http://ftp.unicamp.br/pub/apache/
hadoop/core/hadoop-1.2.1/hadoop-1.2.1.tar.gz
$ sudo tar xzf hadoop-1.2.1.tar.gz
$ sudo ln -s hadoop-1.2.1 hadoop
$ sudo chown -R hadoop:hadoopgrupo hadoop-1.2.1

Logo aps, adicione a varivel de ambiente da instalao Java (varivel $JAVA_HOME)


com os comandos (confirme os locais e verses do Java) mostrados na Listagem 4.
Listagem 4. Configurao da varivel de ambiente para o compilador Java.

$sudo nano /usr/local/hadoop/conf/haoop-env.sh


export JAVA_HOME=/usr/lib/jvm/java-7-oracle

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 17 de 24

A instalao exige que se crie um diretrio que servir de apoio ao armazenamento


temporrio dos arquivos de uma aplicao cliente, que sero manipulados no HDFS.
Para isso, crie esse diretrio com o nome tmp, executando os comandos da Listagem
5.
Listagem 5. Diretrio "tmp" para apoio ao ambiente HDFS.

$sudo mkdir /home/hadoop/tmp


$sudo chown hadoop:hadoopgrupo /home/hadoop/tmp
$sudo chmod 750 /home/hadoop/tmp

Agora, atualize a referncia ao caminho do diretrio no arquivo de configurao,


editando o arquivo core-site.xml, como visto na Listagem 6.
Listagem 6. Editando o arquivo de configurao core-site.xml.

$sudo nano /usr/local/hadoop/conf/core-site.xml

Neste arquivo de configurao, adicione o cdigo visto na Listagem 7 entre as tags


<configuration> e </configuration>. Dentro dessa marcao XML ficam todas as
propriedades de configuraes bsicas do Hadoop, como a localizao da pasta de
arquivos temporrios e o host do servio do HDFS (hdfs://localhost:54310).
Listagem 7. Atualizando a configurao do arquivo "core-site.xml".

<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
<description>A base for other temporary
directories.</description>
</property>
<property>
<name>fs.default.name</name>

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 18 de 24

<value>hdfs://localhost:54310</value>
<description>The name of the default file system. A URI whose
scheme and authority determine the FileSystem implementation. The
uri's scheme determines the config property (fs.SCHEME.impl) naming
the FileSystem implementation class. The uri's authority is used to
determine the host, port, etc. for a filesystem.</description>
</property>
</configuration>

Do mesmo modo, edite o arquivo de configurao hdfs-site.xml, como visto na


Listagem 8.
Listagem 8. Editando o arquivo hdfs-site.xml.

$ sudo nano /usr/local/hadoop/conf/hdfs-site.xml

No cdigo deste arquivo, adicione o contedo mostrado na Listagem 9. Na


propriedade dfs.replication voc estabelece o fator de replicao padro dos blocos
de dados no HDFS. Esse valor define o nmero de rplicas que sero criadas e,
normalmente, em uma instalao local do Hadoop (usada neste artigo), assume o
valor 1.
Listagem 9. Configurao do arquivo hdfs-site.xml.

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>Default block replication.
The actual number of replications can be sepecified
when the file is created.
The default is used if replication is not specified in create time.
</description>
</property>
</configuration>

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 19 de 24

Feito isso, formate o sistema de arquivos para inicializar as pastas do n principal do


HDFS e permitir o uso do MapReduce, conforme os comandos da Listagem 10. O
resultado desse processo visto na Figura 4.
Listagem 10. Formatao do sistema de arquivos

$su - hadoop
$ /usr/local/hadoop/bin/hadoop namenode format

Figura 4. Tela com as mensagens da formatao do NameNode.


O passo seguinte preparar o Hadoop para ser utilizado, levantando todos os seus
processos na memria. Para isso, execute o arquivo de comandos start-all.sh,
confirmando o processo no final com yes. Depois, para verificar se tudo foi
corretamente executado, chame o comando jps. Veja a sequncia das instrues na
Listagem 11 e o resultado na Figura 5.
Listagem 11. Inicializao do Hadoop.

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 20 de 24

$ /usr/local/hadoop/bin/start-all.sh
$ jps

Figura 5. Processos do Hadoop em execuo.

Nota: Para evitar a necessidade de digitar o caminho completo do Hadoop at os


arquivos executveis no momento de executar um comando, configuraremos a
varivel de ambiente PATH. Considerando que o caminho (diretrio) onde esto
localizados os comandos (arquivos executveis) o diretrio de instalao
(/usr/local/hadoop/bin), abra o arquivo bashrc (use nano ~/.bashrc) e acrescente
esse caminho varivel PATH usando o cdigo: export
PATH=$PATH:/usr/local/hadoop/bin.

Para validar o ambiente, o Hadoop disponibiliza o clssico exemplo de contar palavras


(WordCount), que ilustra de forma didtica a execuo de uma aplicao MapReduce.
Esse exemplo utiliza como entrada de dados um conjunto de arquivos texto, a partir
dos quais a frequncia das palavras ser contada. Como sada, ser gerado outro

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 21 de 24

arquivo texto contendo cada palavra e a quantidade de vezes que cada uma foi
encontrada.
Para ilustrar esse processamento, baixe uma coleo de dados sobre livros da
biblioteca Gutenberg (ver seo Links), cujo contedo est disponvel para uso livre
em diversos formatos (HTML, PDF, TXT, ePub, entre outros). Neste caso, foi feito o
download do arquivo texto pg20417.txt para uma pasta chamada gutenberg,
conforme demonstra os comandos da Listagem 12.
Listagem 12. Download do arquivo de entrada.

$ mkdir gutenberg
$ lynx -dump http://www.gutenberg.org./cache/epub/20417/
pg20417.txt

> gutenberg/pg20417.txt

Em seguida, usando o comando de cpia de pasta (copyFromLocal) do sistema HDFS,


transfira o contedo da pasta que contm o arquivo de palavras (pg20417.txt) ao
ambiente Hadoop. Para isto, execute: hadoop dfs -copyFromLocal gutenberg
gutenberg.
Feito isso, abra a pasta do Hadoop e execute o exemplo WordCount (distribudo no
pacote do framework), como demonstra a Listagem 13. Observe que o
caminho /user/hadoop/gutenberg representa a entrada (in),
e /user/hadoop/gutenberg-output, a pasta com a sada do processo reduce.
Listagem 13. Executando as funes map e reduce do contador de palavras.

$ cd /usr/local/hadoop
$ hadoop jar hadoop-examples-1.2.1.jar wordcount /user/hadoop/
gutenberg /user/hadoop/gutenberg-output

No final do MapReduce produzido um arquivo (denominado part-r-00000) que


armazena a contagem de palavras presentes nos arquivo da pasta de entrada do
Hadoop. Para ver esse contedo, execute o comando hadoop dfs

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 22 de 24

-cat /user/hadoop/gutenberg-output/part-r-00000. A Figura 6 apresenta um trecho


do resultado.

Figura 6. Trecho do resultado do processo de contagem de palavras.

Este artigo apresentou a ferramenta Hadoop como proposta para o processamento de


grandes conjuntos de dados, que aqui chamamos de Bigdata. A ideia principal do

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 23 de 24

funcionamento dessa ferramenta est no uso da tcnica MapReduce, que permite a


anlise e tratamento desses dados facilitando a construo de aplicaes que sigam o
modelo previsto em duas funes, uma para o map e outra para o reduce.
Definidas as funes do MapReduce, Hadoop realiza o processamento distribudo em
um conjunto (cluster) de computadores de baixo custo. O modelo de programao e a
infraestrutura disponvel na arquitetura MapReduce se encarregam de particionar e
distribuir os dados de entrada, escalonar as execues das funes map e reduce em
mquinas distintas, tratar as falhas e a comunicao entre essas mquinas. Para
assegurar a integridade e o controle dos dados na rede, Hadoop tambm apresenta
um sistema de arquivos distribudo, o HDFS, fundamental para o funcionamento da
arquitetura. O HDFS fornece os mecanismos que garantem a transparncia na
manipulao dos arquivos, com segurana e alto desempenho.
As caractersticas supracitadas constituem o sucesso da tecnologia, mas a sua adoo
restrita ao domnio de problemas que possam ser formulados e resolvidos dentro do
contexto do paradigma; no caso, os dados devem estar organizados em uma coleo
do tipo chave/valor e o processamento deve ser dividido em duas funes que se
complementam, o map e o reduce.
Apesar de fazer parte de um projeto de cdigo aberto, mantido pela comunidade
Apache, Hadoop mostra ser, em pouco tempo de vida, uma tecnologia com
maturidade e confiabilidade. Prova disso a deciso que vrias empresas de
tecnologia da informao fizeram ao adot-la para resolver seus problemas.
Alm de usar essa tecnologia, gigantes como IBM, Google, Yahoo! e Oracle apostam e
investem em projetos relacionados ao Hadoop e MapReduce.

Links
Pgina oficial do projeto Apache Hadoop
http://hadoop.apache.org/
Pgina oficial do projeto Lucene
http://lucene.apache.org

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Hadoop: fundamentos e instalao

Pgina 24 de 24

Artigo que apresenta a tcnica MapReduce


http://www.devmedia.com.br/fundamentos-sobre-mapreduce/28644
Artigo que explora os principais recursos da arquitetura do HDFS
http://www.ibm.com/developerworks/br/library/wa-introhdfs/
Site da distribuio Hadoop oferecido pela Cloudera, em sua verso
comunitria (aberta)
http://www.cloudera.com/content/support/en/downloads.html
Endereo do Projeto Gutenberg para livros eletrnicos grtis em lngua
portuguesa
http://www.gutenberg.org/browse/languages/pt
Livros
Hadoop: The Definitive Guide - 3rd Edition. Tom White. O'Reilly. 2012.
O livro aborda o tema Hadoop de forma didtica e atualizada em sua atual verso
(2.x), apresentando estudos de caso usados para resolver problemas no modelo
mapreduce.

Claudio Roberto De Lima Martins


Mestre em Computao pela Universidade Federal do Rio Grande do Sul (UFRGS), professor do Instituto
Federal do Par (IFPA), e analista de sistemas da Companhia de Informtica de Belm (Cinbesa). Trabalha
h dez anos com a platafor [...]

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=29466

11/08/2014

Você também pode gostar