
Hadoop HDFS – Desenho e aplicações
- Posted by redglue
- On December 18, 2016
- 0 Comments
- hadoop, hdfs
Com tanta “buzzword” na área de BigData, centros de competências e afins convém voltar aos básicos e perceber se determinada ferramenta ou peça de software encaixa ou não nas necessidades do projecto. Neste post vamos clarificar as aplicações do HDFS (Hadoop Distributed File System) e apontar os aspectos proibitivos da sua utilização. Antes disso, uma breve exposição do HDFS.
O HDFS é um filesystem desenhado para storage de ficheiros de grande dimensão com padrões de uso específicos (escrever uma vez, ler várias – “write once, read many”). Portanto o HDFS tem as seguintes características:
- Ficheiros de grande dimensão: Muitos ficheiros (milhões) pequenos são um pesadelo para o HDFS, devido à arquitectura do HDFS em que a metadata relativa aos ficheiros é guardada em memória no namenode. Ou seja, recomenda-se ficheiros de grande dimensão, não há nenhum limite mínimo para o tamanho do ficheiro estabelecido, nem nenhum recomendado pois o limite será sempre imposto pelo consumo de memória do namenode. Iremos a este assunto já de seguida.
- Streaming e padrões de uso específicos: Normalmente, os dados chegam ao HDFS provenientes de uma ou várias sources (exemplo: logs de aplicações – machine data), são escritos uma vez no cluster HDFS e lidos dezenas de vezes em várias análises de todo o dataset, ou seja o principio “write-once, read-many times”, seja com o Apache Hive, seja directamente com Spark ou SparkSQL para análises que envolvam usar SQL.
- Hardware comum – Não há muito a dizer sobre isto, normalmente o HDFS corre em JBOD (Just a Bunch Of Disks) sem necessidade de SANs muito caras e discos com baixa latência (SSD < 1ms). Tudo isto, principalmente o número de cores e a memória é importante ser considerado e depende sempre do tamanho do dataset a analisar.
Posto isto, o HDFS não funciona muito bem nos seguintes cenários:
- Acessos a dados com baixa latência – O HDFS é usado para processar datasets massivos de dados (high throughput), portanto aplicações que necessitam de acessos com latências muito baixas não devem ser consideradas em que o HDFS seja o filesystem de suporte.
- Ficheiros pequenos – Já falámos neste assunto acima. O namenode do HDFS guarda a metadata do ficheiro em memória, portanto o limite do número de ficheiros é a memória consumida pelo namenode. Assumindo que cada bloco do HDFS (ficheiro e directoria) ocupa 150 bytes na memória no namenode, vários milhões de ficheiros fazem subir a memória necessária apenas para o namenode para vários gigabytes.
Este é um aspecto importante aquando do desenho de uma arquitectura de Big Data que envolva o HDFS como componente de base. - Escrita e modificações constantes – As modificações são sempre append-only no fim do ficheiro e efectuadas normalmente por um writer, como tal a escalabilidade para modificações constantes ao ficheiros é muito limitada e não aconselhada.
São normalmente estes 3 pontos que devem ser avaliados aquando a decisão de usar o HDFS.
0 Comments