hadoop hdfs hadoop distributed file system
Este tutorial explica o Hadoop HDFS - Hadoop Distributed File System, Components and Cluster Architecture. Você também aprenderá sobre o algoritmo de reconhecimento de rack:
Como aprendemos no tutorial anterior, o maior problema com Big Data é armazená-lo em um sistema existente. E mesmo que, de alguma forma, armazenássemos parte dele em um sistema existente, o processamento desse BigData demoraria anos.
Os resultados que você queria em minutos demoravam semanas ou talvez meses e, por causa disso, o valor daquele resultado foi perdido.
=> Cuidado com a série de treinamento BigData simples aqui.
O que você aprenderá:
Sistema de arquivos distribuídos Hadoop
Para resolver esse problema ou lidar com ele, agora temos o HADOOP. O Hadoop resolveu esse problema de big data usando Hadoop HDFS.
Hadoop HDFS resolveu o problema de armazenamento de Big Data e Hadoop Map Reduce resolveu os problemas relacionados ao processamento de parte do Big Data.
Agora, sabemos que o Hadoop tem essencialmente um sistema de arquivos distribuído ... MAS POR QUÊ?
perguntas e respostas da entrevista java j2ee
Por que o Hadoop é um sistema de arquivos distribuído?
Vamos tentar entender o que é um Sistema de Arquivos Distribuídos e entender as vantagens do Sistema de Arquivos Distribuídos.
Sistema de arquivos distribuído
Vejamos um exemplo de leitura de 1 TB de dados. Temos um servidor que é um bom servidor topo de linha que possui 4 canais I / O (entrada e saída) e cada canal tem uma largura de banda de 100 MB / s, usando esta máquina, você será capaz de ler esses dados de 1 TB em 43 Minutos.
Agora, se trouxermos 10 números de máquinas exatamente assim, o que acontecerá?
Tempo reduzido para exatamente 4,3 minutos. É porque todo o esforço foi dividido em 10 máquinas e é por isso que o tempo que foi levado para processar 1 TB de dados foi reduzido para 1/10ºou seja, 4,3 minutos.
Da mesma forma, quando consideramos BigData, esses dados são divididos em vários blocos de dados e realmente processamos esses dados separadamente e é por isso que o Hadoop escolheu o Sistema de Arquivos Distribuído em vez de um Sistema de Arquivos Centralizado.
Componentes do Hadoop
O Hadoop HDFS tem 2 componentes principais para resolver os problemas com BigData.
- O primeiro componente é o Hadoop HDFS para armazenar Big Data.
- O segundo componente é o Hadoop Map Reduce to Process Big Data.
Agora, quando vemos a arquitetura do Hadoop (imagem abaixo), ele tem duas alas, onde a esquerda está 'Armazenar' e a direita é 'Em processamento' . Isso significa que a esquerda é o HDFS, ou seja, o Hadoop Distribution File System, e a direita é o YARN e o Map Reduce, ou seja, a parte de processamento.
Usando HDFS, Hadoop nos permite armazenar Big Data e usando YARN & Map Reduce, Hadoop nos permite processar o mesmo Big Data que estamos armazenando em HDFS.
Como você pode ver na imagem acima, o HDFS tem dois daemons principais ou você pode chamá-los como processos ou threads que nada mais são do que processos JAVA, ou seja, executados em um JVM - NameNode e DataNode.
NameNode é um daemon mestre executado na Máquina Mestre, ou seja, uma máquina de última geração essencialmente e DataNode é uma Máquina Escrava que roda em hardware comum. Pode haver mais DataNode já que as máquinas escravas são mais do que uma máquina mestre.
Portanto, sempre temos um NameNode e vários DataNode em execução em máquinas escravas.
Da mesma forma, temos o YARN do outro lado, que novamente tem dois daemons, um é o Resource Manager que é executado na Máquina Mestre e o Node Manager que é executado na Máquina Escrava exatamente como o DataNode. Portanto, cada máquina escrava tem dois daemons - um é o DataNode e o outro é o Node Manager.
A Master Machine tem o NameNode em execução e o Resource Manager em execução. NameNode é responsável por gerenciar os dados no Hadoop Distributed File System e o Resource Manager é responsável por executar as tarefas de processamento sobre esses dados armazenados.
NameNode e DataNode
Iremos nos aprofundar na arquitetura HDFS e, portanto, é importante entender o que é um NameNode e um DataNode, pois esses são os dois daemons principais que realmente executam o HDFS inteiramente.
NameNode
- É um Master Daemon.
- Gerenciando e mantendo os DataNodes.
- Registra metadados.
- Recebe relatórios de pulsação e bloqueio de todos os DataNodes.
DataNode
- É um Slave Daemon.
- Os dados reais são armazenados aqui.
- Atende solicitações de leitura e gravação dos clientes.
Apenas se concentre no diagrama, como você pode ver, há um NameNode de máquina centralizado que está controlando vários DataNode que estão lá, ou seja, hardware de mercadoria. Portanto, o Name Node nada mais é do que o Master Daemon que mantém todos os DataNode.
Esses NameNode possuem todas as informações sobre os dados armazenados no DataNode. DataNode, como o próprio nome sugere, armazena os dados que existem no Hadoop Cluster.
NameNode possui apenas as informações sobre quais dados estão armazenados em qual DataNode. Portanto, o que podemos dizer é que o NameNode armazena os metadados dos dados armazenados nos DataNodes.
DataNode também executa outra tarefa, ou seja, envia regularmente a pulsação de volta para o NameNode. Na verdade, os batimentos cardíacos informam ao NameNode que esse DataNode ainda está ativo.
Por exemplo, DataNodes envia uma pulsação de volta ao NameNode e dessa forma NameNode tem a imagem de que esses DataNodes estão vivos, então NameNode pode usar esses DataNode para armazenar mais dados ou ler os dados desses DataNodes.
Agora chegamos ao DataNode, o DataNode nada mais é do que os Slave Daemons que, na verdade, estão armazenando os dados que são enviados ao Hadoop Cluster. Esses DataNodes são os que realmente atendem à solicitação de leitura e gravação feita pelos clientes.
Se alguém quiser ler os dados do Hadoop Cluster, essas solicitações serão realmente processadas pelos DataNodes onde os dados residem.
Arquitetura de cluster Hadoop
No tópico anterior relacionado a NameNode e DataNode, usamos o termo “Hadoop Cluster”. Vamos dar uma olhada rápida no que exatamente é?
A imagem acima mostra a visão geral de uma arquitetura de cluster do Hadoop. O Hadoop Cluster nada mais é do que uma topologia mestre-escravo, na qual há uma máquina mestre, como você pode ver no topo, ou seja, o Hadoop Cluster. Nesta Máquina Mestre, há um NameNode e o Gerenciador de Recursos em execução, ou seja, os Daemons Mestre.
A Máquina Mestre é conectada a toda a Máquina Escrava usando os Switches Núcleo, é porque esses DataNodes são armazenados em vários racks, então como você pode ver o Computador 1, Computador 2, Computador 3 até o Computador N. Isso nada mais é do que o Slave Máquinas ou DataNodes e todos eles estão presentes em um rack.
“O rack é, na verdade, um grupo de máquinas que estão fisicamente presentes em um determinado local e estão conectadas umas às outras.”
Assim, a largura de banda da rede entre cada máquina é a mínima possível. Da mesma forma, existem mais racks, no entanto, eles não estão presentes no mesmo local, portanto, podemos ter um número “n” de racks e também podemos ter um número “n” de DataNodes ou computadores ou Máquinas Slave dentro desses racks.
É assim que as Slave Machines são realmente distribuídas pelo cluster, porém, ao mesmo tempo, estão conectadas umas às outras.
Como os dados são armazenados no HDFS?
Agora estamos avançando lentamente para os detalhes de como o HDFS funciona como um todo. Aqui vamos explorar a arquitetura do HDFS.
Quando dizemos, armazenar um arquivo no HDFS, os dados são armazenados como blocos no HDFS. O arquivo inteiro não é armazenado no HDFS, porque, como você sabe, o Hadoop é um sistema de arquivos distribuído.
Portanto, se você tiver um tamanho de arquivo de talvez 1 PB (Peta Byte), esse tipo de armazenamento não estará presente em uma única máquina, pois o cluster do Hadoop é feito usando o hardware comum. O hardware em uma única máquina seria algo em torno de 1 TB ou 2 TB.
Portanto, todo o arquivo precisa ser dividido em blocos de dados chamados de blocos HDFS.
- Cada arquivo é armazenado no HDFS como blocos.
- O tamanho padrão de cada bloco é de cerca de 128 MB no Apache Hadoop 2.x (e 64 MB na versão anterior, ou seja, Apache Hadoop 1.x).
- Existe um recurso para aumentar ou diminuir o tamanho do arquivo dos blocos usando o arquivo de configuração, ou seja, hdfssite.xml que vem com o pacote Hadoop.
Vamos dar um exemplo para entender esse mecanismo e ver como esses blocos são criados.
Vamos considerar um arquivo de 248 MB aqui, agora se quebrarmos este arquivo ou se movermos este arquivo para o Hadoop Cluster, ou seja, 2.x, então este arquivo será dividido em um bloco, ou seja, Bloco A de 128 MB e outro Bloco B de 120 MB.
Como você pode ver o primeiro bloco tem 128 MB ou seja, a primeira laje corta lá e é por isso que o outro bloco tem 120 MB e não 128 MB ou seja, não vai perder espaço se o tamanho do arquivo restante for menor do que o tamanho de bloco padrão.
Agora temos outro problema pela frente, ou seja, é seguro ter uma única cópia de cada bloco?
referência indefinida para c ++
A resposta é NÃO porque há uma chance de que o sistema possa falhar e ele nada mais é do que um hardware comum devido ao qual podemos ter grandes problemas. Para superar esse problema, o Hadoop HDFS tem uma boa solução, ou seja, “A Replicação do Bloco”.
Replicação de blocos de arquitetura Hadoop
O Hadoop cria as réplicas de cada bloco armazenado no Hadoop Distributed File System e é assim que o Hadoop é um sistema tolerante a falhas, ou seja, mesmo que seu sistema falhe ou seu DataNode falhe ou uma cópia seja perdida, você terá várias outras cópias presentes nos outros DataNodes ou nos outros servidores para que você possa sempre escolher essas cópias a partir deles.
Como visto no diagrama acima que representa a Replicação de Bloco, existem cinco blocos diferentes de um arquivo, ou seja, Bloco 1, 2,3,4,5. Vamos verificar primeiro o Bloco 1 e você encontrará cópias do Bloco 1 no Nó 1, Nó 2 e Nó 4.
Da mesma forma, o Bloco 2 também tem três cópias, ou seja, Nó 2, Nó 3 e Nó 4 e, portanto, o mesmo para os Blocos 3, 4 e 5 nos respectivos Nós.
Portanto, além das réplicas serem criadas, cada bloco foi replicado três vezes, ou seja, o Hadoop segue um fator de replicação padrão de três, o que significa que qualquer arquivo que você copiar para o Sistema de Arquivos de Distribuição do Hadoop será replicado três vezes.
Em outras palavras, se você copiar 1 GB de um arquivo para o Hadoop Distribution File System, ele na verdade armazenará 3 GB de um arquivo no HDFS. A parte boa é que o fator de replicação padrão pode ser alterado ao fazer uma alteração nos arquivos de configuração do Hadoop.
Como o Hadoop decide onde armazenar as réplicas?
O Hadoop realmente segue o conceito de Rack Awareness para decidir onde armazenar qual réplica de um Bloco.
A seguir, está o diagrama que descreve o Algoritmo de Reconhecimento de Rack.
Existem três Racks diferentes, ou seja, Rack-1, Rack-2 e Rack-3.
Rack-1 tem quatro DataNodes, assim como Rack-2 e Rack-3, portanto, no total, todo o Hadoop Cluster consistirá em todos os três racks e haverá 12 DataNodes.
Digamos que o Bloco A seja copiado no DataNode 1 no Rack-1, de acordo com o conceito de Reconhecimento de Rack, a réplica do Bloco A não pode ser criada no mesmo rack e precisa ser criada em qualquer outro rack além do Rack-1 como o arquivo principal já existe no Rack-1.
Se criarmos as réplicas do Bloco A no mesmo Rack-1 e caso todo o Rack-1 falhe, perderemos os dados com certeza, portanto, as réplicas devem ser armazenadas em qualquer outro rack, mas não no Rack-1.
Portanto, a réplica será criada no DataNode 6 e 8 do Rack-2. Da mesma forma, para o Bloco B e Bloco C, as réplicas serão criadas em racks diferentes, conforme mostrado no diagrama acima.
Conclusão
Aprendemos com as seguintes dicas deste tutorial-
- O Hadoop HDFS resolve o problema de armazenamento de BigData.
- O Hadoop Map Reduce resolve os problemas relacionados ao processamento do BigData.
- NameNode é um Master Daemon e é usado para gerenciar e manter os DataNodes.
- DataNode é um Slave Daemon e os dados reais são armazenados aqui. Serve para ler e escrever pedidos dos clientes.
- No Hadoop Cluster, um rack é, na verdade, um grupo de máquinas fisicamente presentes em um local específico e conectadas umas às outras.
- Cada arquivo é armazenado no HDFS como blocos.
- O tamanho padrão de cada bloco é de cerca de 128 MB no Apache Hadoop 2.x (64 MB na versão anterior, ou seja, Apache Hadoop 1.x)
- Existe um recurso para aumentar ou diminuir o tamanho do arquivo dos blocos usando o arquivo de configuração, ou seja, hdfssite.xml que vem com o pacote Hadoop.
No próximo tutorial sobre HDFS, aprenderemos sobre a arquitetura HDFS e mecanismos de leitura e gravação.
=> Visite aqui para ver a série de treinamento BigData para todos.
Leitura recomendada
- O que é Hadoop? Tutorial do Apache Hadoop para iniciantes
- Manipulação de arquivos no Unix: Visão geral do sistema de arquivos Unix
- Caracteres especiais do Unix ou metacaracteres para manipulação de arquivos
- Permissões de acesso a arquivos Unix: Unix Chmod, Chown e Chgrp
- Conjunto de testes Ranorex, criação de módulo de teste, arquivo UserCode, Xpath e vinculação de dados
- Objetos de arquivo VBScript: CopyFile, DeleteFile, OpenTextFile, Read and Write Text File
- Operações de entrada de arquivo e saída em C ++
- Implantação Java: Criação e execução de arquivo JAR Java