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, vem sendo usado 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 é a base para todo projeto de Cloud, absolutamente 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. Já existe inclusive um ecossistema ao seu redor, mas ainda vai demandar algum tempo para se disseminar de forma mais ampla pelo mercado. Neste post 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?
Mas, o que é o Hadoop? É, na pratica, uma combinação de dois projetos separados, que são 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 Google usa para acelerar as pesquisas endereçadas ao seu buscador. O HDFS é um sistema de arquivos distribuidos otimizados para atuar em dados não estruturados e é tambem 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 pratica, 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. E 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 a roda em cima da nuvem da Amazon.
A base das distribuições Hadoop é a comunidade Apache. Diversas empresas vem contribuindo com código para seu desenvolvimento como a Yahoo, Facebook, Cloudera, IBM e outras. Em torno do código base, surgem as distribuições, como Cloudera (www.cloudera.com) e DataStax (http://www.datastax.com/brisk), 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, chamado de Brisk, substituiu o HDFS por um sistema de arquivos distribuidos baseados no software NoSQL Cassandra, chamado agora de CassandraFS.
Mas, em torno do Hadoop (http://hadoop.apache.org/), a comunidade Apache mantem diversos projetos relacionados, como o Hbase, que é um banco de dados NoSQL que 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. 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.
Um 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 nivel 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 nivel 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).
A IBM usa intensamente o Hadoop em diversos projetos, o integrando com outros de seus softwares como o Cognos, criando soluções para tratamento analítico de dados massivos e não estruturados, como o InfoSphere BigInsights, que 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. Vejam em (http://www-01.ibm.com/software/data/bigdata/). A IBM também desenvolveu uma variante do HDFS chamado de IBM General Parallel File System (GPFS), que pode ser visto em http://www-03.ibm.com/systems/software/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 umas 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 vão 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 usuario de Hadoop demanda uma escala massiva de dados ao nivel do Facebook ou Yahoo. Mas empresas com razoavel 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. Vejam alguns exemplos em ftp://public.dhe.ibm.com/common/ssi/ecm/en/imb14103usen/IMB14103USEN.PDF.
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, como podemos ver em http://www.google.com/trends?q=hadoop . 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 ingreme e praticamente inexiste gente habilitada para usar o Hadoop adequadamente. Bem, 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 http://www.ibm.com/developerworks e pesquisem pela keyword Hadoop. Vocês vão encontrar milhares de artigos muito interessantes.