O hadoop é um framework open-source para realizar o processamento de big data. Por ser um framework que trabalha com big data algumas pessoas acreditam que precisam de máquinas super potentes para conseguirem rodar o hadoop, muito pelo contrário, máquinas com baixos recursos conseguem rodar o hadoop pois ele trabalha com um sistema de cluster.
O cluster hadoop pode funcionar da seguinte forma:
- Nameode(master) serve para controlar e distribuir os processos solicitados entre todos os datanodes do cluster e receber os heartbeats(batimentos) dos datanodes para saber quantos nodes o cluster tem disponível para realizar processamento.
- SecondaryNameNode um node igual o namenode que entra em ação caso o namenode para de funcionar ou em um cluster muito grande o SecondaryNameNode ajuda o namenode a controlar os datanodes.
- Datanodes(slaves) que são os nodes onde é processada todas as informações solicitadas pelo datanodes.
O recurso do cluster é somado pelos recursos de todos os datanodes.
O hadoop possui um sistema de armazenamento de dados chamado de HDFS ou Hadoop Distributed File System, o HDFS trabalha da seguinte forma: Um arquivo de 500MB é divido em 4 blocos (tamanho do bloco padrão 128MB sendo possível realizar a alteração), sendo 3 deles com tamanho de 128MB e o último com 116MB, assim o arquivo é quebrado em 4 blocos e espalhado pelos datanodes, além de realizar essa quebra no tamanho do arquivo o HDFS também possui um fator de replicação de blocos onde o padrão é 3 ou seja cada bloco é replicado 3 vezes em datanodes diferentes pelo cluster gerando assim grande confiabilidade, pois se um datanode cair com informações de um bloco de arquivo outro datanode possui a mesma informação, assim a informação é mantida e não se perde.
Nesta imagem possuímos 8 datanodes com fator de replicação igual a 3 e o arquivo foi divido em 5 blocos
Começando com o HDFS
Os comandos do HDFS possuem a seguinte estrutura:
hdfs dfs --parametro
Os parâmetros que o HDFS recebe são os seguintes:
Usage: hadoop fs [generic options] [-appendToFile <localsrc> ... <dst>] [-cat [-ignoreCrc] <src> ...] [-checksum <src> ...] [-chgrp [-R] GROUP PATH...] [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...] [-chown [-R] [OWNER][:[GROUP]] PATH...] [-copyFromLocal [-f] [-p] [-l] <localsrc> ... <dst>] [-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>] [-count [-q] [-h] <path> ...] [-cp [-f] [-p | -p[topax]] <src> ... <dst>] [-createSnapshot <snapshotDir> [<snapshotName>]] [-deleteSnapshot <snapshotDir> <snapshotName>] [-df [-h] [<path> ...]] [-du [-s] [-h] <path> ...] [-expunge] [-find <path> ... <expression> ...] [-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>] [-getfacl [-R] <path>] [-getfattr [-R] {-n name | -d} [-e en] <path>] [-getmerge [-nl] <src> <localdst>] [-help [cmd ...]] [-ls [-d] [-h] [-R] [<path> ...]] [-mkdir [-p] <path> ...] [-moveFromLocal <localsrc> ... <dst>] [-moveToLocal <src> <localdst>] [-mv <src> ... <dst>] [-put [-f] [-p] [-l] <localsrc> ... <dst>] [-renameSnapshot <snapshotDir> <oldName> <newName>] [-rm [-f] [-r|-R] [-skipTrash] <src> ...] [-rmdir [--ignore-fail-on-non-empty] <dir> ...] [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]] [-setfattr {-n name [-v value] | -x name} <path>] [-setrep [-R] [-w] <rep> <path> ...] [-stat [format] <path> ...] [-tail [-f] <file>] [-test -[defsz] <path>] [-text [-ignoreCrc] <src> ...] [-touchz <path> ...] [-truncate [-w] <length> <path> ...] [-usage [cmd ...]]A maioria dos parâmetros listados são comandos linux, irei comentar somente alguns comandos que acho interessante
copyFromLocal e put:
Os dois comandos abaixo servem para copiar um arquivo da sua máquina local para dentro do HDFS
hdfs dfs -put /home/colla/arquivo.txt /tmp hdfs dfs -copyFromLocal /home/colla/arquivo.txt /tmp
Neste exemplo estou pegando o arquivo.txt que está armazenado na minha home e estou jogando dentro da pasta tmp do HDFS
setrep
O comando setrep server para alterar o fator de replicação que foi explicado acima.
hdfs dfs -setrep -w 4 /home/colla/arquivo.txt
Neste caso o fator de replicação do arquivo /home/colla/arquivo.txt passou a ser 4 réplicas.
getmerge
O comando getmerge serve para juntar aquivos no hdfs e mandar para a sua máquina local.
root@colla: hdfs dfs ls /tmp
arquivo1.txt arquivo2.txt arquivo3.txt
root@colla: hdfs dfs -getmerge /tmp/* /home/colla/arquivo_junto.txt
No exemplo acima os arquivos: arquivo1.txt arquivo2.txt e arquivo3.txt do HDFS foram
juntados para o arquivo_junto.txt na máquina local no diretório /home/colla/.
Bora postar conteúdo de Hadoop
ResponderExcluirÓtimo conteúdo!
ResponderExcluirBem explicativo. Perfeito!
ResponderExcluirPelo que entendi, o fator de replicação (segundo o desenho) é 3, ou seja: arquivo + 3 cópias = 4 no total? Exemplo bloco 2?
ResponderExcluir