Hadoop » History » Version 20

Carlos Moreira, 22 May 2012 17:35

1 1 Marco Gomes
h1. Hadoop
2 1 Marco Gomes
3 3 Marco Gomes
h2. Objetivo
4 4 Marco Gomes
5 8 Carlos Moreira
O escopo deste documento trata de avaliar um conjunto de soluções de storage aplicado à cloud computing, avaliando a viabilidade de uma delas atender às necessidades do projeto EduCloud, para posterior deployment. Fez parte da investigação descrita por este documento, a verificação dos passos para execução da instalação e configuração da solução de storage.
6 1 Marco Gomes
7 3 Marco Gomes
h2. Projeto Educloud
8 4 Marco Gomes
9 7 Carlos Moreira
O projeto Educloud é um projeto para a implementação de uma infraestrutura de cloud computing para a secretaria da educação do estado de São Paulo, com objetivo de fornecer serviços de apoio ao ensino via nuvem, para educadores e estudantes.
10 1 Marco Gomes
11 3 Marco Gomes
h2. Hadoop
12 4 Marco Gomes
13 14 Carlos Moreira
h3. Introdução
14 14 Carlos Moreira
15 9 Carlos Moreira
O Hadoop é uma solução de sistema de arquivos distribuídos desenvolvida para manipular volumes de dados, focando na análise qualitativa dos dados armazenados através de ferramentas de data mining desenvolvidas utilizando o framework fornecido pelo Google, seu fabricante.
16 1 Marco Gomes
17 1 Marco Gomes
Desenvolvido na linguagem Java, o Hadoop oferece um sistema de arquivos paralelo e distribuído com tolerância à falha, e um framework para desenvolver aplicações de análise dos dados armazenados de forma a correlacioná-los.
18 1 Marco Gomes
19 14 Carlos Moreira
h3. Alternativas
20 12 Carlos Moreira
21 11 Carlos Moreira
Algumas tecnologias alternativas ao Hadoop são apresentadas a seguir, porém nem todas são capazes de trabalhar com grandes volumes de dados, ou até mesmo de fazer a correlação de dados.
22 11 Carlos Moreira
23 1 Marco Gomes
* dCache - É uma solução de filesystem paralelo para grandes volumes de dados, onde o acesso aos dados é feito através de um conjunto de algoritmos.
24 12 Carlos Moreira
* Glusterfs - Diferente do Hadoop, apresenta vários servidores de dados, que são aglutinados no momento em que o cliente realiza a montagem de um diretório.
25 5 Carlos Moreira
* Lustre - É uma solução onde o servidor de metadados é centralizado e os servidores de dados são distribuídos para aumentar a velocidade de leitura e gravação de dados.
26 1 Marco Gomes
27 1 Marco Gomes
Todas as soluções acima foram retiradas do seguinte site:
28 1 Marco Gomes
http://en.wikipedia.org/wiki/List_of_file_systems#Distributed_parallel_fault-tolerant_file_systems
29 1 Marco Gomes
30 12 Carlos Moreira
h3. Licença
31 13 Carlos Moreira
32 12 Carlos Moreira
O Hadoop é licenciado sob a Apache v2.0. Nesta versão de licenciamento é possível o uso para qualquer propósito, alterar e redistribuir o código sob outro tipo de licenciamento, desde que seja incluído um changelog indicando as modificações realizadas. O texto da licença se encontra em: http://www.apache.org/licenses/LICENSE-2.0
33 1 Marco Gomes
34 16 Carlos Moreira
h3. Adoção no Mundo Corporativo
35 1 Marco Gomes
36 16 Carlos Moreira
O Hadoop tem seu uso bem vasto entre diversas companhias. Algumas delas o utilizam como parte de sua infraestrutura, onde a função do Hadoop é dar suporte ao produto ou serviço comercializado, enquanto em outras o próprio Hadoop, ou uma de suas características, é o serviço oferecido.
37 1 Marco Gomes
38 1 Marco Gomes
Dentre as empresas que usam Hadoop em sua infraestrutura, temos as seguintes:
39 1 Marco Gomes
40 2 Marco Gomes
* Amazon - Intuito de auxiliar no processo de buscas;
41 2 Marco Gomes
* Adobe - Usos diversos dentra companhia;
42 2 Marco Gomes
* AOL - Uso para análises estatísticas;
43 2 Marco Gomes
* eBay - Uso para pesquisa e otimização de buscas;
44 2 Marco Gomes
* Facebook - Uso para análise de logs e aprendizado de máquina;
45 2 Marco Gomes
* FOX - Uso para analises, mineração de dados e aprendizado de máquina;
46 2 Marco Gomes
* Google e IBM - Parceria para estudos sobre desafios em escalabilidade de aplicações em internet;
47 2 Marco Gomes
* LinkedIn - Uso nos algoritmos de buscas de contatos;
48 2 Marco Gomes
* Twitter - Uso para armazenamento de tweets, logs e outros tipos de dados gerados pela companhia;
49 2 Marco Gomes
* Yahoo - Suporte na pesquisa do sistema de propaganda do Yahoo, e em testes de escalabilidade.
50 1 Marco Gomes
51 16 Carlos Moreira
Outras empresas que usam Hadoop em sua infraestrutura pode ser listada em: http://wiki.apache.org/hadoop/PoweredBy
52 1 Marco Gomes
53 1 Marco Gomes
A seguir algumas empresas que oferecem o Hadoop como serviço:
54 1 Marco Gomes
55 2 Marco Gomes
* Amazon Web Service - Inserido dentro da infraestrutura EC2 como parte do serviço Amazon Elastic MapReduce;
56 2 Marco Gomes
* Cloudera - Oferece uma plataforma composta por produtos open source (no qual o Hadoop está inserido) para seus clientes;
57 2 Marco Gomes
* IBM - Distribui uma versão derivada do Hadoop para rodar nas JVMs da IBM.
58 1 Marco Gomes
59 16 Carlos Moreira
Outras empresas que oferecem Hadoop como um serviço/produto podem ser encontradas no seguinte link: http://wiki.apache.org/hadoop/Distributions%20and%20Commercial%20Support
60 1 Marco Gomes
61 17 Carlos Moreira
Analisando os dados fornecidos acima, podemos observar que grandes empresas utilizam o Hadoop em sua infraestrutura ou como parte de seus serviços/produtos; portanto podemos afirmar que o Hadoop tem uma vasta utilização e por isso o interesse das empresas na continuidade desse projeto é latente.
62 1 Marco Gomes
63 18 Carlos Moreira
Observando também o link https://issues.apache.org/jira/browse/HADOOP#selectedTab=com.atlassian.jira.plugin.system.project:roadmap-panel&allVersions=true , podemos observar a existência de um roadmap para futuras versões do Hadoop. O release atual é o 1.0, e existem trabalhos nas versões 1.1, 2.0 e 3.0. Além disso, é incluído no roadmap melhorias nas versões já lançadas, como as versões 0.21.1, 0.22.1, 0.23.2, 0.23.3 e 0.24.0. Há também planos de criação de uma versão para Windows do Hadoop.
64 1 Marco Gomes
65 1 Marco Gomes
Com essas informações é possível afirmar que o Hadoop, como projeto, não tem uma baixa expectativa de vida, garantindo sua adoção sem preocupações futuras de substituição de tecnologia por obsolescência.
66 1 Marco Gomes
67 3 Marco Gomes
h2. Uso do Hadoop no Projeto Educloud
68 1 Marco Gomes
69 19 Carlos Moreira
O projeto EduCloud necessita uma tecnologia que possa armazenar, manipular e gerenciar grandes volumes de dados. As ferramentsa que melhor atendem hoje a essa necessidade são conhecidas como sistemas de arquivos distribuídos. Estes sistemas de arquivos potencialmente atendem o requisito do EduCloud, permitindo que este seja utilizado para distribuir de conteúdo para os usuários, e correlacionar dados para detectar semelhanças entre estudos de usuários distintos.
70 1 Marco Gomes
71 20 Carlos Moreira
Nesse sentido, o Hadoop atende a necessidade do EduCloud, logo que o objetivo principal do primeiro é oferecer um sistema de arquivos distribuídos, capaz de manter e manipular arquivos muito grandes (várias centenas de terabytes), e em grandes quantidades. Porém, dado que não está claro que o projeto EduCloud irá trabalhar com grandes volumes de dados, é provável que o Hadoop não seja a solução mais indicada para o projeto, pois todo o trabalho existente no Hadoop envolve a movimentação e disponibilidade de grandes volumes de dados. Segundo artigos, o Hadoop não possui performance ótima mexendo com pequenos volumes de dados. Os links a seguir irão aproveitar e mostrar quais situações nas quais o Hadoop apresenta desvantagem:
72 1 Marco Gomes
73 1 Marco Gomes
http://wiki.apache.org/hadoop/HadoopIsNot
74 1 Marco Gomes
Este link indica uma lista de necessidades para as quais o Hadoop não foi feito; dentre elas:
75 2 Marco Gomes
* Ele não foi feito para substituir um bando de dados;
76 2 Marco Gomes
* O mapreduce nem sempre é o melhor algoritmo de análise;
77 2 Marco Gomes
* O Hadoop não é indicado para pessoas leigas em conhecimento de java, erros de rede, aprender administração de sistemas;
78 2 Marco Gomes
* Ele não é o substituto para filesystems de SAN em alta disponibilidade;
79 2 Marco Gomes
* E o HDFS não está de acordo com o padrão POSIX.
80 1 Marco Gomes
81 1 Marco Gomes
http://www.quantivo.com/blog/top-5-reasons-not-use-hadoop-analytics
82 1 Marco Gomes
Neste link, podemos observar alguns pontos indicados para não usar Hadoop para análises:
83 2 Marco Gomes
* Hadoop é um framework, não é uma solução pronta;
84 2 Marco Gomes
* As ferramentas Hive e Pig não solucionam problemas da arquitetura do Hadoop;
85 2 Marco Gomes
* A instalação é simples, porém manutenção e desenvolvimento é custoso;
86 2 Marco Gomes
* O forte da análise do Hadoop é em sumarização, porém é fraco em análises pontuais;
87 2 Marco Gomes
* O Hadoop será eficaz em suas análises, se os algoritmos de MapReduce também o forem.
88 1 Marco Gomes
89 1 Marco Gomes
http://tech.backtype.com/the-dark-side-of-hadoop
90 1 Marco Gomes
Por fim, este link critica alguns pontos a respeito do Hadoop:
91 2 Marco Gomes
* Má documentação para variáveis de configuração, consideradas críticas;
92 2 Marco Gomes
* Gerenciamento de memória muito ruim;
93 2 Marco Gomes
* Geração de processo zumbis.
94 1 Marco Gomes
95 1 Marco Gomes
Além dos itens já citados acima, a desvantagem do hadoop é ser um filesystem baseado em write-once, ou seja, não existe append de arquivo, não sendo possível modificações de arquivos. Outra desvantagem é o map reduce, pois se trata de uma linguagem para criar jobs de análise de dados. É necessário um conhecimento prévio do que se deseja analisar, pois o hadoop apenas fornece as ferramentas para análise, não as faz de forma automática. Portanto deve se levar em consideração o tempo de desenvolvimento dos jobs de map reduce ao realizar uma implementação de hadoop.
96 1 Marco Gomes
97 1 Marco Gomes
Em contrapartida, as vantagens da tecnologia são disponibilizar o dado com redudância, tentar manter o dado próximo ao local onde ele será usado para evitar uso de rede (sobrecarga nos switches centrais) e realizar o correlacionamento de dados semelhantes.
98 1 Marco Gomes
99 1 Marco Gomes
Pensando nas soluções que compõem o projeto EduCloud, podemos observar ao comparar o Hadoop com outras soluções de storages disponibilizadas pelas soluções de cloud, que a principio, o hadoop oferece um serviço semelhante ao swift. O swift é a solução de data store que compõem o framework fornecido pelo OpenStack, e com o propósito de armazenar os dados que serão utilizados pelas máquinas virtuais. Logo, seu propósito de disponibilizar o dado para a máquina virtual, vem de encontro com a solução proposta pelo hadoop.
100 1 Marco Gomes
101 1 Marco Gomes
Considerando que o Projeto EduCloud tenha um deployment de Hadoop em sua composição, os requisitos de hardware são, no mínimo:
102 1 Marco Gomes
103 2 Marco Gomes
* 2 máquinas com a função de master;
104 2 Marco Gomes
* No mínimo, 4 máquinas com a função de slaves, sendo que estas máquinas deverão possuir storage com tamanho considerável, pois serão nelas que os dados serão armazenados.
105 2 Marco Gomes
* Para efeito de análise do algoritmo de localizing, é interessante que essas 6 máquinas sejam ligadas em 2 switches distintos; para que possamos analisar a eficácia do localizing e do algoritmo de replicação.
106 1 Marco Gomes
107 1 Marco Gomes
A documentação descrita no link http://hadoop.apache.org/common/docs/stable é indicada para fazer um deployment de uma versão single node, e outra versão, mais elaborada, de cluster setup. Com esta documentação, parece ser suficiente para realizar o deployment de hadoop em um ambiente para testes.
108 1 Marco Gomes
109 1 Marco Gomes
Além disso, consultando a wiki do projeto Hadoop (http://wiki.apache.org/hadoop/#Setting_up_a_Hadoop_Cluster), existem outros tutoriais de deployment, específicos para determinadas distribuições de linux, e determinados sistemas operacionais.
110 1 Marco Gomes
111 1 Marco Gomes
E os passos necessários para deployment são:
112 1 Marco Gomes
113 1 Marco Gomes
Os pré-requisitos para instalação são os seguintes:
114 1 Marco Gomes
115 2 Marco Gomes
* Java 1.6 ou posterior;
116 2 Marco Gomes
* ssh;
117 2 Marco Gomes
* rsync
118 1 Marco Gomes
119 1 Marco Gomes
Para um modo de operação single node:
120 1 Marco Gomes
121 1 Marco Gomes
Satisfeitos os requisitos acima, é necessário fazer o download e descompactar o conteúdo.
122 1 Marco Gomes
123 1 Marco Gomes
Dentro do diretório descompactado, alterar o arquivo: conf/hadoop-env.sh para setar a variável de ambiente JAVA_HOME de acordo com o java instalado na máquina.
124 1 Marco Gomes
125 1 Marco Gomes
Após isso, basta seguir os seguintes passos:
126 1 Marco Gomes
127 2 Marco Gomes
* criar um diretório;
128 2 Marco Gomes
* copiar os arquivos xml dentro da pasta conf para o diretório criado;
129 2 Marco Gomes
* Executar o seguinte comando:
130 1 Marco Gomes
131 2 Marco Gomes
>* bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+'
132 1 Marco Gomes
133 1 Marco Gomes
Para um modo de operação cluster, além dos passos acima, é necessário executar os seguintes passos:
134 1 Marco Gomes
135 1 Marco Gomes
Definir o seguinte grupo de máquinas:
136 1 Marco Gomes
137 2 Marco Gomes
* NameNode - 1 máquina - Master
138 2 Marco Gomes
* JobTracker - 1 máquina - Master
139 2 Marco Gomes
* DataNode & TaskTracker - Demais máquinas - Slaves
140 1 Marco Gomes
141 1 Marco Gomes
Todas devem conter o mesmo HADOOP_HOME (path para instalação do hadoop nas máquinas)
142 1 Marco Gomes
143 1 Marco Gomes
A configuração de cada grupo de máquinas deve ser feito de acordo com o seguinte link: http://hadoop.apache.org/common/docs/stable/cluster_setup.html
144 1 Marco Gomes
145 1 Marco Gomes
Configuração de mapreduce e localizing
146 1 Marco Gomes
147 1 Marco Gomes
O map reduce do hadoop é na realidade um framework para programação de algoritmos de análise de grandes quantidades de dados. Uma analogia do map reduce para o mundo dos bancos de dados é que o map reduce se refere à query de busca do banco de dados.
148 1 Marco Gomes
A estrutura do map reduce funciona da seguinte forma:
149 1 Marco Gomes
150 2 Marco Gomes
* no primeiro estágio é feito o mapeamento dos dados através de uma estrutura de par, chave e valor;
151 2 Marco Gomes
* no segundo estágio é feito a redução dessa estrutura, agregando pares que tenham a mesma chave.
152 1 Marco Gomes
153 1 Marco Gomes
Logo, o map reduce atua sobre a análise dos dados, não sobre o dado em si; de forma que o resultado da análise é mais compacto.
154 1 Marco Gomes
155 1 Marco Gomes
Quanto ao localizing, é inerente à arquitetura do hadoop em distribuir os dados de acordo com o fator de replicação estipulado para os dados, e para aproximar o dado dos nós que irão processá-lo.