Hadoop » History » Version 3
Marco Gomes, 27 Apr 2012 16:25
| 1 | 1 | Marco Gomes | h1. Hadoop |
|---|---|---|---|
| 2 | 1 | Marco Gomes | |
| 3 | 3 | Marco Gomes | h2. Objetivo |
| 4 | 1 | Marco Gomes | O escopo deste documento trata de avaliar o uso de soluções de storage aplicado à cloud computing, avaliando a viabilidade de uma determinada solução para o contexto do projeto Educloud, e se o projeto dispõe de informações suficientes para realizar tal análise e um possível deployment em nosso ambiente de desenvolvimento. |
| 5 | 1 | Marco Gomes | |
| 6 | 3 | Marco Gomes | h2. Projeto Educloud |
| 7 | 1 | Marco Gomes | O projeto Educloud é um projeto para a implementação de uma infraestrutura de cloud computing para a secretaria da educação do estao de São Paulo. |
| 8 | 1 | Marco Gomes | |
| 9 | 3 | Marco Gomes | h2. Hadoop |
| 10 | 1 | Marco Gomes | O Hadoop é uma solução de sistema de arquivos distribuídos com foco em grandes volumes de dados, focando na análise qualitativa dos dados armazenados através de ferramentas de data mining desenvolvidas utilizando o framework fornecido pelo hadoop. |
| 11 | 1 | Marco Gomes | |
| 12 | 1 | Marco Gomes | Ele é desenvolvido em Java, oferecendo 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. |
| 13 | 1 | Marco Gomes | |
| 14 | 1 | Marco Gomes | Algumas opções ao hadoop são apresentadas a seguir, porém nem todos tem a funcionalidade de trabalhar com grandes volumes de dados, ou até mesmo de fazer a correlação de dados. |
| 15 | 1 | Marco Gomes | |
| 16 | 2 | Marco Gomes | *dCache - É uma solução de filesystem paralelo para grandes volumes de dados, onde o acesso aos dados é feito através de diversos métodos de acesso; |
| 17 | 2 | Marco Gomes | *Glusterfs - Diferentemente do hadoop, apresenta vários servidores de dados, que são aglutinados no momento em que o cliente realiza a montagem do diretório; |
| 18 | 2 | Marco Gomes | *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. |
| 19 | 1 | Marco Gomes | |
| 20 | 1 | Marco Gomes | Todas as soluções acima foram retiradas do seguinte site: |
| 21 | 1 | Marco Gomes | http://en.wikipedia.org/wiki/List_of_file_systems#Distributed_parallel_fault-tolerant_file_systems |
| 22 | 1 | Marco Gomes | |
| 23 | 2 | Marco Gomes | 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 |
| 24 | 1 | Marco Gomes | |
| 25 | 1 | Marco Gomes | O Hadoop tem seu uso bem vasto entre várias empresas. Existem empresas que o utilizam como parte de sua infraestrutura, onde a função do hadoop é dar suporte ao produto ou serviço oferecido pela empresa, enquanto em outras o próprio Hadoop é o serviço oferecido pela empresa. |
| 26 | 1 | Marco Gomes | |
| 27 | 1 | Marco Gomes | Dentre as empresas que usam Hadoop em sua infraestrutura, temos as seguintes: |
| 28 | 1 | Marco Gomes | |
| 29 | 2 | Marco Gomes | * Amazon - Intuito de auxiliar no processo de buscas; |
| 30 | 2 | Marco Gomes | * Adobe - Usos diversos dentra companhia; |
| 31 | 2 | Marco Gomes | * AOL - Uso para análises estatísticas; |
| 32 | 2 | Marco Gomes | * eBay - Uso para pesquisa e otimização de buscas; |
| 33 | 2 | Marco Gomes | * Facebook - Uso para análise de logs e aprendizado de máquina; |
| 34 | 2 | Marco Gomes | * FOX - Uso para analises, mineração de dados e aprendizado de máquina; |
| 35 | 2 | Marco Gomes | * Google e IBM - Parceria para estudos sobre desafios em escalabilidade de aplicações em internet; |
| 36 | 2 | Marco Gomes | * LinkedIn - Uso nos algoritmos de buscas de contatos; |
| 37 | 2 | Marco Gomes | * Twitter - Uso para armazenamento de tweets, logs e outros tipos de dados gerados pela companhia; |
| 38 | 2 | Marco Gomes | * Yahoo - Suporte na pesquisa do sistema de propaganda do Yahoo, e em testes de escalabilidade. |
| 39 | 1 | Marco Gomes | |
| 40 | 1 | Marco Gomes | Outras empresas que usam hadoop em sua infraestrutura pode ser listada em: http://wiki.apache.org/hadoop/PoweredBy |
| 41 | 1 | Marco Gomes | |
| 42 | 1 | Marco Gomes | A seguir algumas empresas que oferecem o Hadoop como serviço: |
| 43 | 1 | Marco Gomes | |
| 44 | 2 | Marco Gomes | * Amazon Web Service - Inserido dentro da infraestrutura EC2 como parte do serviço Amazon Elastic MapReduce; |
| 45 | 2 | Marco Gomes | * Cloudera - Oferece uma plataforma composta por produtos open source (no qual o Hadoop está inserido) para seus clientes; |
| 46 | 2 | Marco Gomes | * IBM - Distribui uma versão derivada do Hadoop para rodar nas JVMs da IBM. |
| 47 | 1 | Marco Gomes | |
| 48 | 1 | Marco Gomes | 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 |
| 49 | 1 | Marco Gomes | |
| 50 | 1 | Marco Gomes | 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 existe interesse das empresas na continuidade desse projeto. |
| 51 | 1 | Marco Gomes | |
| 52 | 1 | Marco Gomes | 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 windows do hadoop. |
| 53 | 1 | Marco Gomes | |
| 54 | 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. |
| 55 | 1 | Marco Gomes | |
| 56 | 3 | Marco Gomes | h2. Uso do Hadoop no Projeto Educloud |
| 57 | 1 | Marco Gomes | |
| 58 | 1 | Marco Gomes | Basicamente, o requisito para filesystem do projeto EduCloud é de ter um filesystem paralelo. Este filesystem paralelo irá atender ao projeto na forma de distribuição de conteúdo para os usuários, e na correlação de dados para detectar semelhanças entre estudos de usuários distintos (extensão de funcionalidade, não necessariamente um requisito do filesystem). |
| 59 | 1 | Marco Gomes | |
| 60 | 1 | Marco Gomes | Nesse sentido, o Hadoop pode atender ao projeto pois ele atende ao requisito básico de ser um filesystem paralelo para distribuição de arquivos.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 possui desvantagem: |
| 61 | 1 | Marco Gomes | |
| 62 | 1 | Marco Gomes | http://wiki.apache.org/hadoop/HadoopIsNot |
| 63 | 1 | Marco Gomes | Este link indica uma lista de necessidades para as quais o Hadoop não foi feito; dentre elas: |
| 64 | 2 | Marco Gomes | * Ele não foi feito para substituir um bando de dados; |
| 65 | 2 | Marco Gomes | * O mapreduce nem sempre é o melhor algoritmo de análise; |
| 66 | 2 | Marco Gomes | * O Hadoop não é indicado para pessoas leigas em conhecimento de java, erros de rede, aprender administração de sistemas; |
| 67 | 2 | Marco Gomes | * Ele não é o substituto para filesystems de SAN em alta disponibilidade; |
| 68 | 2 | Marco Gomes | * E o HDFS não está de acordo com o padrão POSIX. |
| 69 | 1 | Marco Gomes | |
| 70 | 1 | Marco Gomes | http://www.quantivo.com/blog/top-5-reasons-not-use-hadoop-analytics |
| 71 | 1 | Marco Gomes | Neste link, podemos observar alguns pontos indicados para não usar Hadoop para análises: |
| 72 | 2 | Marco Gomes | * Hadoop é um framework, não é uma solução pronta; |
| 73 | 2 | Marco Gomes | * As ferramentas Hive e Pig não solucionam problemas da arquitetura do Hadoop; |
| 74 | 2 | Marco Gomes | * A instalação é simples, porém manutenção e desenvolvimento é custoso; |
| 75 | 2 | Marco Gomes | * O forte da análise do Hadoop é em sumarização, porém é fraco em análises pontuais; |
| 76 | 2 | Marco Gomes | * O Hadoop será eficaz em suas análises, se os algoritmos de MapReduce também o forem. |
| 77 | 1 | Marco Gomes | |
| 78 | 1 | Marco Gomes | http://tech.backtype.com/the-dark-side-of-hadoop |
| 79 | 1 | Marco Gomes | Por fim, este link critica alguns pontos a respeito do Hadoop: |
| 80 | 2 | Marco Gomes | * Má documentação para variáveis de configuração, consideradas críticas; |
| 81 | 2 | Marco Gomes | * Gerenciamento de memória muito ruim; |
| 82 | 2 | Marco Gomes | * Geração de processo zumbis. |
| 83 | 1 | Marco Gomes | |
| 84 | 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. |
| 85 | 1 | Marco Gomes | |
| 86 | 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. |
| 87 | 1 | Marco Gomes | |
| 88 | 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. |
| 89 | 1 | Marco Gomes | |
| 90 | 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: |
| 91 | 1 | Marco Gomes | |
| 92 | 2 | Marco Gomes | * 2 máquinas com a função de master; |
| 93 | 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. |
| 94 | 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. |
| 95 | 1 | Marco Gomes | |
| 96 | 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. |
| 97 | 1 | Marco Gomes | |
| 98 | 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. |
| 99 | 1 | Marco Gomes | |
| 100 | 1 | Marco Gomes | E os passos necessários para deployment são: |
| 101 | 1 | Marco Gomes | |
| 102 | 1 | Marco Gomes | Os pré-requisitos para instalação são os seguintes: |
| 103 | 1 | Marco Gomes | |
| 104 | 2 | Marco Gomes | * Java 1.6 ou posterior; |
| 105 | 2 | Marco Gomes | * ssh; |
| 106 | 2 | Marco Gomes | * rsync |
| 107 | 1 | Marco Gomes | |
| 108 | 1 | Marco Gomes | Para um modo de operação single node: |
| 109 | 1 | Marco Gomes | |
| 110 | 1 | Marco Gomes | Satisfeitos os requisitos acima, é necessário fazer o download e descompactar o conteúdo. |
| 111 | 1 | Marco Gomes | |
| 112 | 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. |
| 113 | 1 | Marco Gomes | |
| 114 | 1 | Marco Gomes | Após isso, basta seguir os seguintes passos: |
| 115 | 1 | Marco Gomes | |
| 116 | 2 | Marco Gomes | * criar um diretório; |
| 117 | 2 | Marco Gomes | * copiar os arquivos xml dentro da pasta conf para o diretório criado; |
| 118 | 2 | Marco Gomes | * Executar o seguinte comando: |
| 119 | 1 | Marco Gomes | |
| 120 | 2 | Marco Gomes | >* bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+' |
| 121 | 1 | Marco Gomes | |
| 122 | 1 | Marco Gomes | Para um modo de operação cluster, além dos passos acima, é necessário executar os seguintes passos: |
| 123 | 1 | Marco Gomes | |
| 124 | 1 | Marco Gomes | Definir o seguinte grupo de máquinas: |
| 125 | 1 | Marco Gomes | |
| 126 | 2 | Marco Gomes | * NameNode - 1 máquina - Master |
| 127 | 2 | Marco Gomes | * JobTracker - 1 máquina - Master |
| 128 | 2 | Marco Gomes | * DataNode & TaskTracker - Demais máquinas - Slaves |
| 129 | 1 | Marco Gomes | |
| 130 | 1 | Marco Gomes | Todas devem conter o mesmo HADOOP_HOME (path para instalação do hadoop nas máquinas) |
| 131 | 1 | Marco Gomes | |
| 132 | 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 |
| 133 | 1 | Marco Gomes | |
| 134 | 1 | Marco Gomes | Configuração de mapreduce e localizing |
| 135 | 1 | Marco Gomes | |
| 136 | 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. |
| 137 | 1 | Marco Gomes | A estrutura do map reduce funciona da seguinte forma: |
| 138 | 1 | Marco Gomes | |
| 139 | 2 | Marco Gomes | * no primeiro estágio é feito o mapeamento dos dados através de uma estrutura de par, chave e valor; |
| 140 | 2 | Marco Gomes | * no segundo estágio é feito a redução dessa estrutura, agregando pares que tenham a mesma chave. |
| 141 | 1 | Marco Gomes | |
| 142 | 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. |
| 143 | 1 | Marco Gomes | |
| 144 | 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. |