data blocks
Transcrição
data blocks
Armazenando grandes quantidades de dados Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Disciplina: TECC – Analise de Dados 2 Período: 2015.2 Professores: Andrey Brito, Leandro Balby HDFS • Sistemas distribuído de arquivos com o objetivo de ser escalável, tolerante à falhas e de fácil expansão • É o armazenamento primário para Hadoop e Spark • Tem como objetivo ser simples e ao mesmo tempo dar suporte para que aplicações fiquem próximas aos dados NameNode e DataNode • NameNode: serviço/máquina que armazena as informações sobre os arquivos no sistema (metadados) • Um acesso precisa passar por ele para descobrir para onde (quais DataNodes) os dados irão, ou de onde virão • Existe um NameNode secundário, que tem o objetivo de tolerar a falha do primário • DataNode: serviço/máquina responsável pelo armazenado de fato Arquitetura do HDFS Características • Tolerante a falhas: tipicamente o armazenamento é feito com redundância tripla para cada bloco • Escalabilidade: a leitura e armazenamento é feita diretamente com os DataNodes e então escala bem com o número de máquinas • Espaço: pode ser adicionado com novos dados e um rebalanceamento • Padrão da indústria: usado por muitos sistemas (Hadoop, Spark, Hbase) Armazenamento no HDFS HDFS - limitações • É pensado para arquivos grandes que normalmente são escritos uma vez e lidos muitas vezes • Tem problemas com aplicações que usam muitos arquivos pequenos • Não é baixa latência (e sim, alta vazão, por isso os blocos grandes) Organização dos dados • Um arquivo submetido é dividido em pedaços (data blocks) • Cada pedaço é armazenado em um ou mais nós • Cada cópia é uma réplica • Quando algum nó falha ou o dado é perdido fica como sub-replicado (underreplicated) • Primeira réplica fica em um nó de um rack (local se o cliente for um DataNode) • Segunda em outro rack, terceira no mesmo do segundo, demais são aleatórias Operação de leitura (localização é transparente) FileSystem fileSystem = FileSystem.get(conf); Path path = new Path("/path/to/file.ext"); if (!fileSystem.exists(path)) { System.out.println("File does not exists"); return; } FSDataInputStream in = fileSystem.open(path); int numBytes = 0; while ((numBytes = in.read(b)) > 0) { System.out.prinln((char)numBytes)); // code to manipulate the data which is read } in.close(); out.close(); fileSystem.close(); http://blogs.data-flair.com/hadoop-hdfs-data-read-and-write-operations/ Operação de escrita • Pacotes são quebrados e enfileirados • Cada um passa os dados para o seguinte • Removido da fila apenas quando tem o Ack de todos Segurança de acesso • Mais comum: modo “inseguro” • Usa o nome do usuário no sistema operacional para definir acesso • Exemplo: ubuntu@master:~$ hdfs dfs -ls /user Found 1 items drwxr-xr-x - ubuntu supergroup 0 2016-04-07 00:18 /user/ubuntu ubuntu@master:~$ • Então outro usuário não teria permissão andrey@master:~$ hdfs dfs -rm -r /user/ubuntu/output 16/04/11 02:17:54 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes. rm: Permission denied: user=andrey, access=WRITE, inode="/user/ubuntu":ubuntu:supergroup:drwxr-xr-x andrey@master:~$ HDFS – Pontos relevantes da configuração • Número de réplicas, tamanho do bloco e onde escrever (/etc/hadoop/conf/hdfssite.xml) <property> <name>dfs.namenode.name.dir</name> <value>file:///data1/cloudera/dfs/nn,file:///data2/cloudera/dfs/nn</value> </property> <property> <name>dfs.blocksize</name> <value>134217728</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> Permite escrever em vários discos para aumentar a banda, melhor que RAID ou SSDs. Usos comuns na linha de comando • Listagens hdfs dfs –ls hdfs dfs -ls / hdfs dfs -ls -R /var • Uso de espaço hdfs hdfs hdfs hdfs dfs dfs dfs dfs -du -du -du -du -h / /hbase/data/hbase/namespace/ -h /hbase/data/hbase/namespace/ -s /hbase/data/hbase/namespace/ Usos comuns na linha de comando (2) • Copiando dados para o HDFS hdfs hdfs hdfs hdfs dfs dfs dfs dfs -mkdir tdata -ls -copyFromLocal tutorials/data/geneva.csv tdata -ls –R • Copiando de volta cd tutorials/data/ hdfs dfs –copyToLocal tdata/geneva.csv geneva.csv.hdfs md5sum geneva.csv geneva.csv.hdfs Usos comuns na linha de comando (3) • Estatísticas (replicação, última modificação, tamanho, etc.) hdfs dfs -stat "%r" tdata/geneva.csv • Escrevendo a partir da saída padrão echo "blah blah blah" | hdfs dfs -put - tdataset/tfile.txt hdfs dfs -ls –R hdfs dfs -cat tdataset/tfile.txt Usos comuns na linha de comando (4) • Remoção de arquivos hdfs dfs -rm tdataset/tfile.txt hdfs dfs –rm –r /user/ubuntu/output* hdfs dfs -ls –R • Listagem de informações dos blocos hdfs fsck /user/cloudera/tdata/geneva.csv files -blocks –locations andrey@master:~$ hdfs fsck /curitiba/doc2-2015102621.txt -files -blocks -locations Connecting to namenode via http://master.cloud.lsd.ufcg.edu.br:50070 FSCK started by andrey (auth:SIMPLE) from /10.4.3.75 for path /curitiba/doc2-2015102621.txt at Mon Apr 11 12:02:03 BRT 2016 /curitiba/doc2-2015102621.txt 293875416 bytes, 3 block(s): OK 0. BP-59990194-127.0.0.1-1459874876285:blk_1073742072_1248 len=134217728 repl=3 [10.4.3.74:50010, 10.4.3.73:50010, 10.4.3.76:50010] 1. BP-59990194-127.0.0.1-1459874876285:blk_1073742073_1249 len=134217728 repl=3 [10.4.3.74:50010, 10.4.3.73:50010, 10.4.3.76:50010] 2. BP-59990194-127.0.0.1-1459874876285:blk_1073742074_1250 len=25439960 repl=3 [10.4.3.73:50010, 10.4.3.76:50010, 10.4.3.77:50010] Status: HEALTHY Total size: 293875416 B Total dirs: 0 Total files: 1 Total symlinks: 0 Total blocks (validated): 3 (avg. block size 97958472 B) Minimally replicated blocks: 3 (100.0 %) Over-replicated blocks: 0 (0.0 %) Under-replicated blocks: 0 (0.0 %) ... ... Mis-replicated blocks: 0 (0.0 %) Default replication factor: 3 Average block replication: 3.0 Corrupt blocks: 0 Missing replicas: 0 (0.0 %) Number of data-nodes: 4 Number of racks: 1 FSCK ended at Mon Apr 11 12:02:03 BRT 2016 in 1 milliseconds Navegador de arquivos Acessando a interface Web remotamente Outras formas de armazenamento • Armazenamento de objeto • Amazon S3 ou OpenStack Swift • Escalável já que é orientado a adições e remoções (e não updates pontuais) • Bancos Key-value • Cassandra (Menos latência) • Tolerância a falhas e escalabilidade com replicação e consistência ajustável • Quando usar uma alternativa? • Muitos arquivos pequenos • Os dados já estão em uma forma de armazenamento Spark no Cluster $ pyspark --total-executor-cores 8 --master spark://master:7077 >>> file = sc.textFile("hdfs://master.cloud.lsd.ufcg.edu.br:9000/user/spark/doc12015102121.txt") >>> counts = file.flatMap(lambda line: line.split(",")).map(lambda word: (word, 1)).reduceByKey(lambda a, b: a + b) >>> counts.saveAsTextFile("./output-2") >>> quit() $ hdfs dfs -ls output-2 Found 3 items -rw-r--r-- 3 andrey supergroup 0 2016-04-11 13:47 output-2/_SUCCESS -rw-r--r-- 3 andrey supergroup 6179309 2016-04-11 13:47 output-2/part-00000 -rw-r--r-- 3 andrey supergroup 6174864 2016-04-11 13:47 output-2/part-00001 $ hdfs dfs -get output-2/part-00000 $ less part-00000 $ pyspark --total-executor-cores 8 --master spark://master:7077 >>> file = sc.textFile(“/curitiba/doc1-2015102121.txt") >>> counts = file.flatMap(lambda line: line.split(",")).map(lambda word: (word, 1)).reduceByKey(lambda a, b: a + b) >>> counts.saveAsTextFile("./output-2") >>> quit() $ hdfs dfs -ls output-2 Found 3 items -rw-r--r-- 3 andrey supergroup 0 2016-04-11 13:47 output-2/_SUCCESS -rw-r--r-- 3 andrey supergroup 6179309 2016-04-11 13:47 output-2/part00000 -rw-r--r-- 3 andrey supergroup 6174864 2016-04-11 13:47 output-2/part00001 $ hdfs dfs -get output-2/part-00000 $ less part-00000
Documentos relacionados
View - IFBa
informações. Além do alto desempenho alcançado por meio do estilo Batch Sequential, implementação que prioriza a vazão dos dados trafegados. [1] [3] A capacidade de receber e interpretar comandos ...
Leia maisApache Hadoop - DComp - Universidade Federal de São Carlos
hospedar as réplicas dos blocos. Em seguida, o cliente escreve os dados paralelamente nos três DataNodes previamente alocados. No modelo atual, cada cluster possui apenas um NameNode e pode possuir...
Leia maisAnálise de desempenho entre os sistemas de arquivos HDFS e
(2007, p.73). Aguiar complementa ainda que: "uma operação em um arquivo é dita atômica quando as etapas da mesma não podem ser percebidas por outros processos exteriores a esta operação" (2008, p.6...
Leia mais