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

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 mais

Apache Hadoop - DComp - Universidade Federal de São Carlos

Apache 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 mais

Análise de desempenho entre os sistemas de arquivos HDFS e

Aná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