O que é o arquivo de sequência em hadoop?
sou novo para mapear-reduce e quero entender o que é sequência de dados de entrada? Estudei no Livro de Hadoop, mas foi difícil para mim entender.
1 answers
Primeiro devemos entender que problemas o SequenceFile tenta resolver, e então como pode SequenceFile ajudar a resolver os problemas.
Em HDFS
- SequenceFile é uma das soluções para o pequeno problema de arquivo em Hadoop.
- o ficheiro pequeno é significativamente menor do que o tamanho do bloco HDFS(128MB).
- cada ficheiro, directório, bloco em HDFS é representado como objecto e ocupa 150 bytes.
- 10 milhões de ficheiros, usariam cerca de 3 gigabytes de memória de NameNode. Um bilião de ficheiros não é viável.
Em MapReduce
As tarefas de mapeamento geralmente processam um bloco de entrada de cada vez (usando o FileInputFormat padrão).
Quanto mais o número de arquivos é, mais o número de tarefa de mapa precisa e o tempo de trabalho pode ser muito mais lento.
Cenários de ficheiros pequenos
- os ficheiros são peças de um ficheiro lógico maior.
- os ficheiros são inerentemente pequenos, por exemplo, imagem.
Estes dois casos exigem soluções diferentes.
- Para o primeiro, escreva um programa para concatenar os pequenos arquivos juntos.(see Nathan Marz'S post about a tool called the Consolidator which does exactly this)
- para o segundo, algum tipo de recipiente é necessário para agrupar os arquivos de alguma forma.
Soluções em Hadoop
Ficheiros HAR
- HAR (arquivos Hadoop ) foram introduzidos para aliviar o problema de muitos arquivos colocando pressão na memória do namenode.
- é provável que os Hares sejam utilizados apenas para fins de arquivo.
SequenceFile
- o conceito de SequenceFile é colocar cada pequeno ficheiro num único ficheiro maior.
-
Por exemplo, suponha que existem 10,000 arquivos 100KB, então nós podemos escrever um programa para colocá-los em um único SequenceFile como abaixo, onde você pode usar o nome do arquivo para ser a chave e conteúdo a ser valor.
Disposição do ficheiro de sequenciação http://img.blog.csdn.net/20151213123516719
-
Alguns benefícios:
- um número menor de memória necessária no NameNode. Continue com o exemplo de 10 000 ficheiros 100KB,
- Antes de utilizar o SequenceFile, 10 000 objectos ocupam cerca de 4,5 MB de RAM no NameNode.
- Depois de usar SequenceFile, SequenceFile 1GB com 8 blocos HDFS, estes objetos ocupam cerca de 3,6 KB de RAM no NameNode.
- O SequenceFile é splittable, por isso é adequado para MapReduce.
- O SequenceFile é suportado por compressão.
- um número menor de memória necessária no NameNode. Continue com o exemplo de 10 000 ficheiros 100KB,
-
Compressões suportadas, a estrutura do ficheiro depende do tipo de compressão.
- Não Comprimido
Comprimido para registo: comprime cada registo à medida que é adicionado ao ficheiro. record_compress_seq http://img.blog.csdn.net/20151213182753789
-
Comprimido Em Bloco 这里写图片描述 http://img.blog.csdn.net/20151213183017236
- Espera que os dados atinjam o tamanho do bloco para comprimir.
- a compressão em bloco proporciona uma melhor taxa de compressão do que a compressão registada.
- a compressão em bloco é geralmente a opção preferida ao usar o SequenceFile.
- O Bloco aqui não está relacionado com HDFS ou bloco do sistema de ficheiros .