Trabalhar com armazenamento e sistemas de arquivos - Amazon EMR

Trabalhar com armazenamento e sistemas de arquivos

O Amazon EMR e o Hadoop oferecem a você uma variedade de sistemas de arquivos para processar as etapas do cluster. Você especifica o sistema de arquivos a ser usado pelo prefixo do URI que acessa os dados. Por exemplo, s3://DOC-EXAMPLE-BUCKET1/path referencia um bucket do Amazon S3 usando o sistema EMRFS. A tabela a seguir lista os sistemas de arquivos disponíveis e inclui as recomendações sobre quando é melhor usar cada um deles.

O Amazon EMR e o Hadoop normalmente usam dois ou mais dos seguintes sistemas de arquivos no processamento de clusters. O HDFS e o EMRFS são os dois principais sistemas de arquivos usados com o Amazon EMR.

Importante

Desde a versão 5.22.0, o Amazon EMR usa o AWS Signature Version 4 exclusivamente para autenticar solicitações para o Amazon S3. As versões anteriores do Amazon EMR usam o AWS Signature Version 2 em alguns casos, a menos que as notas da versão indiquem que o Signature Version 4 seja usado exclusivamente. Para obter mais informações, consulte Authenticating Requests (AWS Signature Version 4) e Autenticação de solicitações (AWS Signature Version 2) no Guia do desenvolvedor do Amazon Simple Storage Service.

Sistema de arquivos Prefixo Descrição
HDFS hdfs:// (ou sem prefixo)

O HDFS é o sistema de arquivos distribuído, escalável e portátil do Hadoop. Uma vantagem do HDFS é o reconhecimento de dados entre os nós de clusters do Hadoop que gerenciam os clusters e os nós de cluster do Hadoop que gerenciam as etapas individuais. Para obter mais informações, consulte a documentação do Hadoop.

O HDFS é usado pelos nós principais e core. Uma de suas vantagens é a velocidade; uma desvantagem é ser um armazenamento temporário que é reivindicado quando o cluster é encerrado. É melhor usado para armazenamento em cache dos resultados intermediários produzidos pelas etapas de um fluxo de trabalho.

EMRFS s3://

O EMRFS é uma implementação do sistema de arquivos do Hadoop usado para a leitura e gravação de arquivos comuns do Amazon EMR diretamente no Amazon S3. O EMRFS oferece a conveniência de armazenar dados persistentes no Amazon S3 para serem usados com o Hadoop, fornecendo também recursos como a criptografia do lado do servidor do Amazon S3, a consistência de leitura após gravação e a consistência de listas.

nota

Antes, o Amazon EMR usava os sistemas de arquivos s3n e s3a. Embora ambos ainda funcionem, recomendamos que você use o esquema do URI s3 para obter melhor performance, segurança e confiabilidade.

sistema de arquivos local

O sistema de arquivos local é a um disco conectado localmente. Quando um cluster do Hadoop é criado, cada nó é criado a partir de uma instância do EC2 que é acompanhada de um bloco pré-configurado de armazenamento de disco denominado armazenamento da instância. Os dados nos volumes de armazenamento da instância persistem apenas durante a vida da sua instância do EC2. Os volumes de armazenamento da instância são ideais para armazenar dados temporários que mudam continuamente, tais como buffers, caches, dados temporários e outros conteúdos temporários. Para obter mais informações, consulte Armazenamento de instância do Amazon EC2.

O HDFS usa o sistema de arquivos local, mas o Python também é executado com base no sistema de arquivos local. Você pode optar por armazenar outros arquivos de aplicações em volumes de armazenamento de instância.

(Herdado) Sistema de arquivos de bloco do Amazon S3 s3bfs://

O sistema de arquivos de bloco do Amazon S3 é um sistema de armazenamento de arquivos herdado. Não recomendamos em hipótese alguma o uso de deste sistema.

Importante

Não recomendamos que você use esse sistema de arquivos pois ele pode acionar um comportamento de disputa que pode causar uma falha no cluster. No entanto, ele pode ser necessário para aplicativos herdados.

Acessar sistemas de arquivo

Você especifica o sistema de arquivos a ser usado com o prefixo do Uniform Resource Identifier (URI) que acessa os dados. Os procedimentos a seguir ilustram como fazer referência a vários tipos diferentes de sistemas de arquivos.

Para acessar um HDFS local
  • Especifique o prefixo hdfs:/// no URI. O Amazon EMR substitui os caminhos que não especificam um prefixo no URI pelo HDFS local. Por exemplo, ambos os URIs a seguir seriam substituídos pelo mesmo local no HDFS.

    hdfs:///path-to-data /path-to-data
Para acessar um HDFS remoto
  • Inclua o endereço IP do nó principal no URI, como mostrado nos exemplos a seguir.

    hdfs://master-ip-address/path-to-data master-ip-address/path-to-data
Acessar o Amazon S3
  • Use o prefixo s3://.

    s3://bucket-name/path-to-file-in-bucket
Acessar o sistema de arquivos de bloco do Amazon S3
  • Use apenas para aplicações herdadas que exigem o sistema de arquivos de bloco do Amazon S3. Para acessar ou armazenar dados com este sistema de arquivos, use o prefixo s3bfs:// no URI.

    O sistema de arquivos de bloco do Amazon S3 é um sistema de arquivos antigo que foi usado para oferecer suporte a carregamentos maiores do que 5 GB de tamanho para o Amazon S3. Com a funcionalidade de carregamento multiparte que o Amazon EMR fornece por meio do AWS SDK para Java, você pode fazer upload de arquivos de até 5 TB de tamanho para o sistema de arquivos nativo do Amazon S3, e o sistema de arquivos de bloco do Amazon S3 torna-se defasado.

    Atenção

    Como esse sistema de arquivos herdado pode criar um comportamento de disputa que pode corromper o sistema de arquivos, você deve evitar esse formato e usar o EMRFS em seu lugar.

    s3bfs://bucket-name/path-to-file-in-bucket