Mostrando postagens com marcador hadoop. Mostrar todas as postagens
Mostrando postagens com marcador hadoop. Mostrar todas as postagens

terça-feira, 5 de julho de 2016

Entendendo um pouco mais sobre o relacionamento do HDFS com Namenode e Datanode

Bom dia a todos,

Hoje venho abordar um pouco sobre o que são os Namenodes e o que são os Datanodes. O que eles comem, onde vivem e como se reproduzem.



Um cluster hadoop possui dois tipos de nós:

Namenode(nó mestre)
  • Geralmente 1 ou 2 nós. serão 2 quando for necessário manter uma redundância
  • Controla arquivos que entram, que saem e e seu local no sistema de arquivos
  • É o grande responsável por gerenciar o HDFS. Trabalha no nível gerencial
  • Acesso garantido a todos os nós do cluster. 
  1. Acesso ilimitado ao HDFS das máquinas do cluster. De maneira que possa ler e escrever
  • O HDFS sem o ter o namenode não funciona. Pois é necessário um gerenciador (Namenode)
  • Funções:
  1. Particiona os arquivos e mandar armazenar nos datanodes
  2. Tem o endereço de cada bloco de endereço de dados
  3. Encaminha bloco de dados aos Datanodes
  4. Fica no nó mestre da aplicação
  • Quando ocorre uma falha:
  1. Todos os arquivos serão perdidos, exceto se tiver a replicação desses blocos de arquivos nos datanodes
  • Recuperação
  1. Backup nos datanodes
  2. Ter um segundo namenode
Datanode (nó escravo)
  • Número ilimitado de nós. Quanto mais nós maior a força de trabalho
  • Dispensável em caso de alguma falha desde que os dados de um datanode também esteja em outro datanode
  • Tem como função resumida de Processar, devolver e armazenar
  • São os trabalhadores que processam os arquivos
  • Dependem de instruções repassadas pelo namenode
  • Armazenam os blocos de dados do HDFS
  • Periodicamente encaminham uma lista ao namenode de tudo que eles tem em seu HDFS. Tal parâmetro é configurável de maneira que envie esse sinal em um tempo maior ou menor

Muito obrigado por toda atenção. Toda e qualquer dúvida/sugestão será bem vinda.

terça-feira, 21 de junho de 2016

Formato e Conceitos do HDFS

Olá pessoal,

Hoje irei entrar um pouco mais fundo no HDFS. Comentando sobre o sistema distribuído, formato do cluster, tamanho dos arquivos, acesso aos dados e sobre o Hardware.


Sistema distribuído de Arquivos do Hadoop

    - Otimizado para utilizar grande massa de dados
    - Quebra arquivos em partes de maneira que seja possível distribuir os dados entre as máquinas em cluster
        - Essa necessidade vem de que uma máquina só não consegue realizar tal processamento devido que esse arquivo(vamos chama-lo de dataset) extrapola o armazenamento de uma máquina
    - Dessa forma é feito o particionamento desse dataset entre outras máquinas que estão interligadas no cluster
    - Responsável por gerenciar e armazenar os dados através de uma rede
    - o mesmo dado que está sendo processado por um nó é replicado para outros nós. Pois no caso de um nó falhar o dado não processado não é perdido, um outro nó tem a responsabilidade de realizar a tarefa
        - O qual é o maior desafio. Gerenciar e tolerar falhas com o objetivo de evitar a perda de informação
    - O HDFS é o sistema distribuído do hadoop que garante a tolerância a falha através da replicação de blocos de dados através dos nós do cluster.

Formato do Cluster

    - Máquina Master, que é o Mestre do cluster. É quem distribui trabalho para os Slaves e é quem controla o HDFS
    - Máquinas Slaves, que são controladas pelo Master.
    - O ideal é ter um backup do master, que é o que garante a tolerância a falhas do master. não é comum ter uma máquina ociosa para garantir o master, deve ser pensado conforme a necessidade de negócio
        - Caso o sistema não seja critico, não existe a necessidade de ter um master redundante
    - É bom lembrar que o hadoop é escalável, de maneira que é possível adicionar mais nós slaves para melhorar e diminuir o tempo de processamento
   
Grandes Arquivos

    - Megabytes, Gigabytes, Terabytes ou Petabytes de dados
    - O Hadoop está preparado tanto para arquivos grandes quanto para grandes quantidades de arquivos pequenos

Acesso aos Dados

    - A apache criou um sistema de arquivos para grande processamento de arquivos. O que possibilita trabalhar com grande massa de dados.
    - De modo que o dado é escrito uma vez e lido muitas vezes! O Hadoop trabalha melhor escrevendo uma vez e analisando o mesmo dado por diversas perspectivas/códigos.
    - A análise pode ser feita sob uma parte dos dados ou todo o conjunto(dataset) de dados.
        - Primeiro fazer uma classificação e ver o resultado, depois fazer algum outro tratamento e ter outro resultado.
        - É possível colocar um filtro antes de rodar algum tipo de tratamento.

Hardware

    - HDFS não requer um cluster com "Super Máquinas".
    - Podem ser utilizadas máquinas
    - Clusters:
        - Homogêneos: Máquinas que compõem o cluster com a mesma configuração
        - Heterogêneo: Máquinas completamente diferentes. Com processadores e núcleos diferentes, memória ram e etc...
        - O Hadoop é o responsável por lidar com a homogeneidade e com a heterogeneidade
            - A máquina com melhor configuração irá receber mais pacotes do que a com menor configuração


Imagem retirada do site https://datafireball.com/2014/07/page/2/

Obrigado pela atenção. Toda e qualquer sugestão/dúvida será bem vinda

sexta-feira, 17 de junho de 2016

Tolerância a falhas do modelo MapReduce pelo framework hadoop

Olá pessoal,

Hoje vamos comentar sobre um dos pontos mais importantes do Hadoop, a tolerância a falhas.




  • De onde vem essas possíveis falhas? Como por exemplo:


  1. Código feito pelo programador. Quando a exceção do código acontece, é possível ser um motivo de falha
  2. Falha de alguma máquina no cluster. Disco danificado ou cheio, memória ram, processador, e etc
  3. Comunicação da rede


  • O maior beneficio do hadoop é o de lidar com a falha. de modo que o processamento não seja parado em caso de algum erro. A tolerância a falhas do hadoop independe do programador. o framework do hadoop garante o processamento do trabalho iniciado
  • O que acontece numa falha?
  1. Quando um erro acontece a JVM comunica ao TaskTracker (Responsável pelas tarefas MapReduce)
  2. TaskTracker excecuta uma tarefa atribuida ao Map ou Reduce
  3. O erro é registrado em um log por meio do TaskTracker e marca a tarefa como falha
  4. Em seguida aquele nó(máquina), é liberado para outra tarefa
  5. O nó master é avisado da falha e redistribui o trabalho



  • Caso o TaskTracker fique sem comunicação ou muito tempo sem receber informações de algum dos nós do cluster, a tarefa que está/estava naquele nó é considerada nula


  1. Esse limite de tempo de resposta é configurado dentro dos arquivos de configuração no map-site


  • Não é necessário que a JVM avise que um erro aconteceu para se ter uma falha. Caso ocorra o caso citado acima ele já considera uma falha
  • Caso uma mesma tarefa falhe sucessivamente:


  1. A tarefa pode ser cancelada, e com isso uma parte do arquivo deixa de ser processada.
  2. O número limite de tentativas também é configurado nos arquivos de parâmetros


  • Existe um parâmetro, também configurável, que serve para cancelar o processamento como um todo quando houverem muitas falhas. Caso o programador deseje que o processamento seja cancelado por ter um número muito alto de falhas, basta programar o percentual de falhas entre todas as tarefas
  • Um dos maiores problemas é se o nó mestre falhar

  1. Pois geralmente ele não é substituivel. Acontece quando não se tem um nó mestre redundante. O ideal é que a arquitetura desenvolvida tenha em seu planejamento ter um nó reserva para o nó mestre
  2. Assim que o nó mestre falha, o nó substituto continua o trabalho. Todas as tarefas são replicadas para o nó reserva.
  3. O nó reserva fica em stand by enquanto o nó principal está funcional
  4. Caso não exista redundância, o trabalho inteiro terá de ser reprocessado
Obrigado mais uma vez por toda atenção. 

Toda e qualquer sugestão será bem vinda!


quarta-feira, 15 de junho de 2016

Dados Estruturados x Dados Não Estruturados

Dados Estruturados e Não Estruturados


Dados estruturados

- Estão em um formato especifico/rígido
- Exemplo:
o Dados mantidos em SGBD
§  Tabela de banco de dados (existem tipo de dados rigidos - datatype de uma coluna e tamanho máximo de armazenamento)
§  É possível prever o que será inserido em um campo de uma tabela. se é texto, número, o tamanho máximo e etc




Dados Não Estruturados
·         - Não existe rigidez ou quase nenhum sobre os dados
·         - Não existe datatype, tamanho e etc
·         - Não seguem uma regra. São apresentados como aparecem.
·         - Não possuem estrutura definida
·         - Possui Baixa Integridade 
·         - Tem Escalabilidade Linear

·         - Exemplo:
o    Documentos
o    Imagens
o    Vídeos
o    E-mails
o    Post em redes sociais (Um exemplo prático de uso desse tipo é a análise de sentimento)
o    Dados retirados da internet – blogs
o    Dados de sensores
o    Dados não relacionais





Hadoop x SGBD


Hadoop
·         - Tem a habilidade de lidar com os dois tipos de dados. Estruturados ou não
·        - A grande vantagem do hadoop é a de processar dados não estruturados. O Hadoop processa em lote
·         - O MapReduce processa todos os dados em busca de informação
·         -  Estrutura dinâmica
·         - É indicado em situações onde todos os dados devem ser analisados para se ter uma resposta
·       - Indicado para o caso onde os Dados são gravados apenas uma vez. E são rodados um ou mais algoritmos na mesma base para se ter uma ou mais respostas dependendo do tratamento. Mas adiante teremos um post exclusivo para abordar o desenvolvimento de algoritmos



SGBD
·     - Tem a possibilidade de processamento interativo ou em lote. é possível só processar uma parte de cada vez
·         - Estrutura Rígida e estática
·         - Alta integridade. por ex: a exclusão de um dado que tem dependência em outra tabela
·         - É indicado em situações pontuais. onde em uma consulta é possível ter uma resposta

Toda e qualquer sugestão/dúvida será bem vinda!

quarta-feira, 8 de junho de 2016

Mecanismos e Estrutura do Hadoop

Olá Pessoal,

A ideia desses posts é de aproveitar o meu estudo ainda beeeem inicial sobre o assunto e poder compartilhar com todos. Hoje vou abordar de maneira bem resumida os Mecanismos e Estrutura do Hadoop. Toda e qualquer sugestão é bem vinda.

O processo se inicia com o(s) arquivo(s) de entrada (txt e etc...). Esse(s) aquivo(s) fica(m) dentro do HDFS. De modo que são dividos em blocos e processados nas máquinas

O MapReduce divide as 'N' partições em pedaços de 64 MB. Esse tamanho pode ser configurado pelo usuário (block size).

Cluster
- Master
- controla as Slaves
- distribuindo tarefas
- verificando falhas das Slaves
- escolher workers(slaves) inativos para realizarem processos

- Slave (Worker)
- A primeira função utilizada é a Map (Feita pelo programador). O programa fica geralmente no arquivo .jar(caso seja programado em java)
- Todo resultado da função Map é armazenado em buffer. O tamanho do buffer também é configurável, assim como as partições citadas acima.
- Quando o buffer está cheio, os dados são escritos/armazenados em disco
- O resultado da função Map é enviada ao Master
- Os dados são ordenados e agrupados
- O Reduce começa a interação sobre os dados
- Quando tanto a função de map quanto a de reduce terminam, elas notificam o nó master dizendo que o trabalho foi finalizado
- Com isso o master coloca o resultado final em arquivo. Também ficando no(s) arquivo(s) de saída no HDFS
* Lembrando que a paralelização é de responsabilidade do Framework. O programador deve criar as funções Map e Reduce

- O arquivo de programação no hadoop fica no master e é copiado para os Slaves.

Espero que tenham gostado. Em um próximo post vou abordar os arquivos de configuração e tentar entrar um pouco mais no assunto.

Muito obrigado


O uso do Hadoop nas empresas

Um tópico bem interessante discutido no site http://www.cio.com.br, é falado o seguinte: "Segundo um estudo da Forrester, algo entre 60% e 73% dos dados coletados e armazenados pelas empresas, atualmente, não são analisados. “Isso é inaceitável numa era em que perspectivas aprofundadas e melhoria de desempenho configuram-se em uma necessidade competitiva”, avalia os analistas Mike Gualtieri e Noel Yuhanna. "  No link (http://cio.com.br/tecnologia/2016/01/22/hadoop-cinco-empresas-dominam-o-mercado/).

Achei alguns cases bem legais em no site http://computerworld.com.br/. Seguem alguns exemplos:

1. Caesars Entertainment

A companhia de entretenimento em cassinos está usando o novo ambiente Hadoop para identificar diferentes segmentos de consumidor e criar campanhas de marketing específicas para cada um deles. O novo ambiente reduziu o tempo de processamento de 6 horas para 45 minutos para posições-chave. Isso permitiu à Caesars promover uma análise de dados mais rápida e exata, aprimorando a experiência de consumidor e fazendo com que a segurança atendesse os requisitos do setor de pagamentos com cartões. A empresa agora processa mais de 3 milhões de registros por hora.

2. Cerner

A empresa de tecnologia para o setor de saúde construiu um hub de dados corporativos no CDH (Cloudera Distribution), usando processadores Intel Xeon para criar uma visão mais compreensível de qualquer paciente, condição ou tendência. A tecnologia ajuda a Cerner e seus clientes a monitorarem mais de 1 milhão de pacientes diariamente. Entre outras coisas, ela colabora na determinação mais exata da probabilidade de um paciente estar com infecção em sua corrente sanguínea.

3. eHarmony

O site de namoro online recentemente atualizou seu ambiente na nuvem, usando o CDH e os processadores Intel Xeon E5 para analisar um volume massivo e variado de dados. A tecnologia ajuda a eHarmony a disponibilizar novas combinações a milhões de pessoas diariamente. O novo ambiente cloud acomoda análises mais complexas, criando resultados mais personalizados e aumentando a chance de sucesso nos relacionamentos.

4. MasterCard

A empresa foi a primeira a implementar a distribuição CDH do Hadoop após receber certificação PCI completa. A companhia usou os servidores Intel para integrar conjuntos de dados a outros ambientes já certificados. A MasterCard incentiva seus clientes a adotarem o sistema através do seu braço de serviços profissionais, o MasterCard Advisors.

5. FarmLogs

A companhia de software para gerenciamento de produções agrícolas usa analytics em tempo real rodando nos processadores Intel Xeon E5 para fornecer dados sobre colheita, condições de plantio e estado da vegetação para 20% das fazendas americanas. A tecnologia ajuda os fazendeiros a aumentarem a produtividade de seus acres.

Devemos buscar explorar mais isso aqui em nosso País. Pois com um baixo custo podemos ter um crescimento em sua área de negócio através do conhecimento.

Obrigado a todos pela atenção

Fontes:

http://cio.com.br/tecnologia/2016/01/22/hadoop-cinco-empresas-dominam-o-mercado/
http://computerworld.com.br/como-sete-empresas-usam-hadoop-para-reforcar-aplicacoes-de-big-data

terça-feira, 7 de junho de 2016

Descomplicando, ou não, o Hadoop?

História do hadoop

Em 2003 foi feita uma proposta de uma ferramenta pelo google que deveria ter tais pontos:

- altamente escalavel
- tolerante a falhas
- GFS - google file system, sitema de arquivos distribuidos
- introdução do modelo MapReduce (Será abordado em outro post) - Base de toda a solução           proposta

MapReduce - Modelo de processamento paralelo e distribuido

Surgiu uma ferramenta da Apache - O Apache hadoop (contendo todos os requisitos citados pela google) - Citados acima - open source - Baseado em MapReduce

O projeto apache hadoop:


- Um framework composto por várias outras partes que formam um todo
- Permite o processamento distribuido (várias máquinas em um cluster) e paralelo (cada core do processador vai ficar responsável por parte do processamento)
- Hadoop common - aplicativos comuns a todos os outros módulos/parte do ambiente hadoop
- Hadoop distributed file system (HDFS)
- Sistema de arquivo próprio da ferramenta
- Sistema de arquivos otimizado do hadoop
- sistema preparado para trabalhar com grandes massas de dados de maneira paralela e                    distribuída

Ferramentas:


Hadoop Yarn
- Framework para distribuição de tarefa
- Gerenciar recurso do cluster
- Trabalha com memória disponível, tolerância a falhar de maneira automática
Hadoop MapReduce
- principal idéia da ferramenta
- Em duas funções principais
- Map
- Reduce
- Processamento distribuido, paralelo e tolerante a falhas
Ambari
- Ferramenta para Gerenciar e monitorar o uso das CPU's
- Consumo de CPU, memória e rede por máquina / a utilização total do cluster
- Consegue ver falhar e recupereções do cluster
HBase
- Banco de dados não relacional e distribuido
- Suporta armazenamento estruturado em grandes tabelas (Big Table)
Similar a um SGBD normal mas feito para um volume de dados
- Aproveita todas as vantagens do modelo MapReduce
Hive
- Estrutura para DW (otimizado para dados sumarizados)
- é possível integração das big tables (HBase) com o Hive
- Suporta consultas SQL, indexação e Grandes Conjuntos de dados
Mahout
- Biblioteca para machine learning
- Mineração de dados por meio de classificações, agrupamento e etc
- Similar com a ferramenta ECA
Spark
- Estrutura que prioriza processamento em memória
- Hadoop utiliza muito a gravação em disco x Spark em memória
- MAchine learning, grafos e streaming
Zookeeper
- coordena bloqueios, sincronização de threads e serviços
- mantém e coordena sicronização de threads. Facilita toda a parte de programação

Obrigado por toda a atenção