Importar arquivos com o cache distribuído - Amazon EMR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Importar arquivos com o cache distribuído

O DistributedCache é um recurso do Hadoop que pode aumentar a eficiência quando uma tarefa map ou reduce precisa acessar dados comuns. Se o cluster depender de aplicações já existentes ou binárias que não estão instaladas quando o cluster é criado, você poderá usar o DistributedCache para importar esses arquivos. Esse recurso permite que um nó de cluster leia os arquivos importados do seu sistema de arquivos local, em vez de recuperar os arquivos de outros nós do cluster.

Para obter mais informações, acesse http://hadoop.apache.org/docs/stable/api/org/apache/hadoop/filecache/ DistributedCache .html.

Você invoca o DistributedCache ao criar o cluster. Os arquivos são armazenados em cache logo antes do início do trabalho do Hadoop e permanecem no cache pela duração do trabalho. Você pode armazenar em cache os arquivos armazenados em qualquer sistema de arquivos compatível com o Hadoop, por exemplo, o HDFS ou o Amazon S3. O tamanho padrão do cache de arquivo é 10 GB. Para alterar o tamanho do cache, reconfigure o parâmetro Hadoop local.cache.size usando a ação de bootstrap. Para ter mais informações, consulte Criar ações de bootstrap para instalar softwares adicionais.

Tipos de arquivos compatíveis

O DistributedCache permite arquivos únicos e arquivamentos. Arquivos individuais são armazenados em cache como somente leitura. Executáveis e arquivos binários têm permissões de execução definidas.

Os arquivamentos são um ou mais arquivos empacotados por meio de um utilitário, como o gzip. O DistributedCache passa os arquivos compactados para cada nó central e descompacta o arquivo como parte do armazenamento em cache. O DistributedCache é compatível com os seguintes formatos de compactação:

  • zip

  • tgz

  • tar.gz

  • tar

  • jar

Local dos arquivos em cache

O DistributedCache copia arquivos apenas para nós centrais. Se não houver um nó central no cluster, o DistributedCache copiará os arquivos para o nó primário.

O DistributedCache associa os arquivos de cache ao diretório de trabalho atual do mapper e do reducer usando links simbólicos. Um link simbólico é um alias para uma localização de arquivo, e não essa localização propriamente dita. O valor do parâmetro, yarn.nodemanager.local-dirs em yarn-site.xml, especifica a localização dos arquivos temporários. O Amazon EMR define esse parâmetro como /mnt/mapred ou alguma variação com base no tipo de instância e na versão do EMR. Por exemplo, uma configuração pode ter /mnt/mapred e /mnt1/mapred porque o tipo de instância tem dois volumes temporários. Arquivos de cache estão localizados em um subdiretório da localização de arquivo temporária em /mnt/mapred/taskTracker/archive.

Se você armazenar um único arquivo em cache, o DistributedCache colocará o arquivo no diretório archive. Se você armazenar um arquivamento em cache, o DistributedCache descompactará o arquivo e criará um subdiretório em /archive com o mesmo nome do arquivamento. Os arquivos individuais estão localizados no novo subdiretório.

Você pode usar o DistributedCache somente ao utilizar o Streaming.

Acessar arquivos em cache de aplicações de transmissão

Para acessar os arquivos em cache dos seus aplicativos de mapeador ou redutor, certifique-se de ter adicionado o diretório de trabalho atual (. /) ao caminho do aplicativo e referenciado os arquivos em cache como se estivessem presentes no diretório de trabalho atual.

Acessar arquivos em cache de aplicações de transmissão

Você pode usar o AWS Management Console e o AWS CLI para criar clusters que usam o cache distribuído.

nota

Reformulamos o console do Amazon EMR para torná-lo mais fácil de usar. Consulte Console do Amazon EMR para conhecer as diferenças entre as experiências do console antigo e novo.

New console
Especificar arquivos de cache distribuído usando o novo console
  1. Faça login no AWS Management Console e abra o console do Amazon EMR em https://console.aws.amazon.com/emr.

  2. Em EMR no EC2, no painel de navegação esquerdo, escolha Clusters e depois Criar cluster.

  3. Em Etapas, escolha Adicionar etapa. Isso abrirá a caixa de diálogo Adicionar etapa. No campo Argumentos, inclua os arquivos e arquivamentos para salvar no cache. O tamanho do arquivo (ou o tamanho total dos arquivos em um arquivamento) deve ser menor que o tamanho do cache alocado.

    Para adicionar um arquivo individual ao cache distribuído, especifique -cacheFile seguido do nome e do local do arquivo, do sinal de cerquilha (#) e do nome que você deseja dar ao arquivo quando ele for inserido no cache local. O exemplo a seguir demonstra como adicionar um arquivo individual ao cache distribuído.

    -cacheFile \ s3://DOC-EXAMPLE-BUCKET/file-name#cache-file-name

    Para adicionar um arquivo ao cache distribuído, insira -cacheArchive seguido da localização dos arquivos no Amazon S3, do sinal de cerquilha (#) e do nome que você deseja dar à coleção de arquivos no cache local. O exemplo a seguir demonstra como adicionar um arquivo de arquivamento ao cache distribuído.

    -cacheArchive \ s3://DOC-EXAMPLE-BUCKET/archive-name#cache-archive-name

    Insira os valores correspondentes nos outros campos da caixa de diálogo. As opções diferem dependendo do tipo de etapa. Para adicionar a etapa e sair da caixa de diálogo, escolha Adicionar etapa.

  4. Escolha qualquer outra opção que se aplique ao cluster.

  5. Para iniciar o cluster, escolha Criar cluster.

Old console
Especificar arquivos de cache distribuído usando o console antigo
  1. Navegue até o novo console do Amazon EMR e selecione Alternar para o console antigo na navegação lateral. Para obter mais informações sobre o que esperar ao alternar para o console antigo, consulte Usar o console antigo.

  2. Selecione Criar cluster.

  3. Escolha Step execution (Execução de etapa) como o modo de execução.

  4. Na seção Steps (Etapas), no campo Add step (Adicionar etapa), escolha Streaming program (Programa de streaming) na lista e clique em Configure and add (Configurar e adicionar).

  5. No campo Argumentos, inclua os arquivos e arquivamentos para salvar no cache e clique em Adicionar. O tamanho do arquivo (ou o tamanho total dos arquivos em um arquivamento) deve ser menor que o tamanho do cache alocado.

    Para adicionar um arquivo individual ao cache distribuído, especifique -cacheFile seguido do nome e do local do arquivo, do sinal de cerquilha (#) e do nome que você deseja dar ao arquivo quando ele for inserido no cache local. O exemplo a seguir demonstra como adicionar um arquivo individual ao cache distribuído.

    -cacheFile \ s3://DOC-EXAMPLE-BUCKET/file_name#cache_file_name

    Para adicionar um arquivo ao cache distribuído, insira -cacheArchive seguido da localização dos arquivos no Amazon S3, do sinal de cerquilha (#) e do nome que você deseja dar à coleção de arquivos no cache local. O exemplo a seguir demonstra como adicionar um arquivo de arquivamento ao cache distribuído.

    -cacheArchive \ s3://DOC-EXAMPLE-BUCKET/archive_name#cache_archive_name
  6. Continue com a configuração e a execução do seu cluster. O cluster copia os arquivos para o local do cache antes de processar quaisquer etapas de cluster.

CLI
Para especificar arquivos de cache distribuídos com o AWS CLI
  • Para enviar uma etapa de Streaming quando um cluster é criado, digite o comando create-cluster com o parâmetro --steps. Para especificar arquivos de cache distribuídos usando o AWS CLI, especifique os argumentos apropriados ao enviar uma etapa de streaming.

    Para adicionar um arquivo individual ao cache distribuído, especifique -cacheFile seguido do nome e do local do arquivo, do sinal de cerquilha (#) e do nome que você deseja dar ao arquivo quando ele for inserido no cache local.

    Para adicionar um arquivo ao cache distribuído, insira -cacheArchive seguido da localização dos arquivos no Amazon S3, do sinal de cerquilha (#) e do nome que você deseja dar à coleção de arquivos no cache local. O exemplo a seguir demonstra como adicionar um arquivo de arquivamento ao cache distribuído.

    Para obter mais informações sobre o uso dos comandos do Amazon EMR no AWS CLI, consulte. https://docs.aws.amazon.com/cli/latest/reference/emr

exemplo 1

Digite o seguinte comando para executar um cluster e envie um etapa de Streaming que use -cacheFile para adicionar um arquivo, sample_dataset_cached.dat, ao cache.

aws emr create-cluster --name "Test cluster" --release-label emr-4.0.0 --applications Name=Hive Name=Pig --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 --steps Type=STREAMING,Name="Streaming program",ActionOnFailure=CONTINUE,Args=["--files","s3://my_bucket/my_mapper.py s3://my_bucket/my_reducer.py","-mapper","my_mapper.py","-reducer","my_reducer.py,"-input","s3://my_bucket/my_input","-output","s3://my_bucket/my_output", "-cacheFile","s3://my_bucket/sample_dataset.dat#sample_dataset_cached.dat"]

Quando você especifica a contagem de instâncias sem usar o parâmetro --instance-groups, um único nó primário é executado, e as instâncias restantes são executadas como nós centrais. Todos os nós usarão o tipo de instância especificado no comando.

Se você não tiver criado o perfil de serviço padrão do EMR e o perfil de instância do EC2, digite aws emr create-default-roles para criá-los antes de digitar o subcomando create-cluster.

exemplo 2

O comando a seguir mostra a criação de um cluster de streaming e usa -cacheArchive para adicionar um arquivamento de arquivos ao cache.

aws emr create-cluster --name "Test cluster" --release-label emr-4.0.0 --applications Name=Hive Name=Pig --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 --steps Type=STREAMING,Name="Streaming program",ActionOnFailure=CONTINUE,Args=["--files","s3://my_bucket/my_mapper.py s3://my_bucket/my_reducer.py","-mapper","my_mapper.py","-reducer","my_reducer.py,"-input","s3://my_bucket/my_input","-output","s3://my_bucket/my_output", "-cacheArchive","s3://my_bucket/sample_dataset.tgz#sample_dataset_cached"]

Quando você especifica a contagem de instâncias sem usar o parâmetro --instance-groups, um único nó primário é executado, e as instâncias restantes são executadas como nós centrais. Todos os nós usarão o tipo de instância especificado no comando.

Se você não tiver criado o perfil de serviço padrão do EMR e o perfil de instância do EC2, digite aws emr create-default-roles para criá-los antes de digitar o subcomando create-cluster.