Mostrando postagens com marcador Big Data. Mostrar todas as postagens
Mostrando postagens com marcador Big Data. 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!