Back-End

27 mar, 2012

Conhecendo o Hadoop

Publicidade

Volta e meia em eventos sobre Cloud Computing surge o
termo Hadoop. Já ouvi em uma palestra que o grande desafio de desenvolver
aplicações para Cloud era exatamente a complexidade no uso do Hadoop.

O que gera
a confusão é que o Hadoop e o MapReduce, do qual ele se originou, vêm sendo
usados pelas empresas de internet que inspiraram o modelo de cloud computing e
que precisam de escala massiva para suas aplicações, como Yahoo!, Google e
Facebook.

Mas dizer que o Hadoop é absolutamente a base para todo projeto de Cloud
não é correto. O Hadoop é usado para aplicações analíticas de dados massivos –
que não é o dia a dia das empresas que usam ou pretendem usar cloud computing.

O Hadoop foi criado pelo Yahoo! em 2005 e pode ser
considerado uma das maiores invenções de data management desde o modelo
relacional. Hoje é um dos projetos da comunidade Apache e vem sendo adotado por
empresas que precisam tratar volumes massivos de dados não estruturados.


existe inclusive um ecossistema ao seu redor, mas ainda vai demandar algum tempo
para se disseminar de forma mais ampla pelo mercado. Neste artigo, vamos debater
um pouco mais o que é e o que não é o Hadoop, seu mercado e tentar visualizar
algumas tendências. Quem sabe acertamos algumas?

Descobrindo Hadoop na prática

Mas o que é o Hadoop? Na prática, é uma combinação
de dois projetos separados: o Hadoop MapReduce (HMR), que é um
framework para processamento paralelo, e o Hadoop Distributed File System
(HDFS).

O HMR é um spinoff do MapReduce, software que o Google usa para acelerar as pesquisas endereçadas
ao seu buscador. O HDFS é um sistema de arquivos distribuídos e otimizados para
atuar em dados não estruturados, além disso é baseado na tecnologia do Google – neste
caso, o Google File System.

Existe também o Hadoop Common, conjunto de
bibliotecas e utilitários que suportam os projetos Hadoop. Na prática, para que
o HMR processe os dados, eles devem estar armazenados no HDFS.

O Hadoop é um projeto Open Source, com licenciamento
Apache e, portanto, permite a criação de um ecossistema de negócios baseados em
distribuições especificas. O surgimento de serviços em nuvem, como o Amazon
Elastic MapReduce, permite às empresas tratarem dados massivos sem demandar
aquisição de servidores físicos. Neste modelo, o usuário escreve a aplicação
Hadoop e roda em cima da nuvem da Amazon.

Distribuições e desenvolvimento de projetos

A base das distribuições Hadoop é a comunidade Apache. Diversas empresas vêm contribuindo com código para seu desenvolvimento, como Yahoo!, Facebook, Cloudera, IBM e outras. Em torno do código base, surgem as distribuições como Cloudera e DataStax, que agregam valor com utilitários e serviços de suporte e educação no mesmo modelo das distribuições Linux.

Interessante que a distribuição da DataStax, chamada de Brisk, substituiu o HDFS por um sistema de arquivos distribuídos baseados no software NoSQL Cassandra, chamado agora de CassandraFS.

Mas, em torno do Hadoop, a comunidade Apache mantém diversos projetos relacionados. Temos o exemplo do Hbase, que é um banco de dados NoSQL e trabalha em cima do HDFS. Este banco de dados é usado pelo Facebook para suportar seu sistema de mensagens e os seus serviços de informações analíticas em tempo real.

Existe também o Hive, criado pelo Facebook, que é uma camada de data warehouse que roda em cima do Hadoop. Ele utiliza uma linguagem chamada Hive SQL, similar à SQL, o que facilita sua utilização pois desenvolvedores acostumados com SQL não encontram maiores dificuldades em trabalhar com o Hive SQL.

Outro e também muito interessante projeto é o Pig, criado pelo Yahoo!. É uma plataforma que permite análises de arquivos muito grandes usando uma linguagem de alto nível chamada de Pig Latin. Olhando-se o stack de softwares do Hadoop, o Pig se situa entre o Hive e o HMR e é uma tentativa de fornecer uma linguagem de alto nível para se trabalhar com o Hadoop.

Outros projetos menos conhecidos são o Avro (sistema de serialização de dados), o Chukwa (monitoramento de sistemas distribuídos) e o Hama (para computações científicas massivas).

Usabilidade e soluções

A IBM usa intensamente o Hadoop em diversos projetos, integrando com outros de seus softwares como o Cognos e criando soluções para tratamento analítico de dados massivos e não estruturados como o InfoSphere BigInsights.

O InfoSphere BigInsights agrega um conjunto de tecnologias open source, como o próprio Hadoop, Nutch e Pig, com as tecnologias próprias da IBM como InfoSphere e ManyEyes. Confira mais sobre o funcionamento do software. A IBM também desenvolveu uma variante do HDFS chamado de IBM General Parallel File System (GPFS).

Ok, e quem usa Hadoop? Existem os casos emblemáticos como Facebook, Yahoo!, Twitter e Netflix (na nuvem da Amazon), mas também já começamos ver seu uso em ambientes corporativos brick-and-mortar.

Recentemente, uma pesquisa mostrou que pelo menos 20 empresas da lista da Fortune 1000 assumiram publicamente que usam Hadoop de alguma forma. A adoção do Hadoop em aplicações analíticas corporativas, como as ofertadas pela IBM, vai ajudar na sua disseminação. Só para lembrar, quando a IBM anunciou seu apoio ao Linux, em 2001, o Linux passou a ser visto sob outra ótica pelo ambiente corporativo.

Nem todo usuário de Hadoop demanda uma escala massiva de dados ao nível do Facebook ou Yahoo!. Mas empresas com razoável volume de informações não estruturadas, como bancos, varejo, empresas aéreas e outras vão encontrar no Hadoop uma boa alternativa para o tratamento analítico dos seus dados. Vocês podem conferir mais alguns exemplos através do documento IBM InfoSphere BigInsights.

Evolução e mercado

O Hadoop ainda está nos primeiros passos de sua evolução e disseminação pelo mercado. Mas tenho certeza de que em poucos anos ele será bem mais conhecido e utilizado.

Uma pesquisa pelo termo Hadoop no Google Trends já aponta um crescimento significativo no interesse pela tecnologia. Na minha opinião, vale a pena investir tempo estudando a tecnologia. Um dos problemas com o Hadoop é realmente a sua complexidade de uso, demandando desenvolvedores altamente qualificados.

A sua curva de aprendizado é bastante íngreme e praticamente não existe gente habilitada para usar o Hadoop adequadamente. Temos aí uma boa oportunidade para as universidades inserirem seu estudo e prática em seus cursos de Ciência da Computação. Uma sugestão para quem quer estudar Hadoop mais a fundo: acessem a rede de conteúdo developerWorks e pesquisem pela keyword Hadoop. Vocês vão encontrar milhares de artigos muito interessantes.