Carregar dados no Amazon S3 - 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á.

Carregar dados no Amazon S3

Para obter instruções sobre como carregar objetos no Amazon S3, consulte Add an object to your bucket no Guia do usuário do Amazon Simple Storage Service. Para obter mais informações sobre como usar o Amazon S3 com o Hadoop, consulte http://wiki.apache.org/hadoop/AmazonS3.

Criar e configurar um bucket do Amazon S3

A Amazon EMR usa o AWS SDK for Java com o Amazon S3 para armazenar dados de entrada, arquivos de log e dados de saída. O Amazon S3 se refere a esses locais de armazenamento como bucket. Os buckets têm certas restrições e limitações para se adequarem ao Amazon DNS S3 e aos requisitos. Para obter mais informações, consulte Restrições e limitações de bucket no Manual do usuário do Amazon Simple Storage Service.

Esta seção mostra como usar o Amazon S3 AWS Management Console para criar e depois definir permissões para um bucket do Amazon S3. Você também pode criar e definir permissões para um bucket do Amazon S3 usando o Amazon API S3 ou. AWS CLI Você também pode usar curl junto com uma modificação para transmitir os parâmetros de autenticação apropriados para o Amazon S3.

Consulte os recursos a seguir:

nota

Se você ativar o registro em um bucket, ele habilitará somente os logs de acesso ao bucket, não os logs EMR do cluster da Amazon.

Durante a criação do bucket ou depois, você pode definir as permissões apropriadas para acessar o bucket, dependendo de seu aplicativo. Normalmente, você atribui acesso de leitura e gravação para si mesmo (o proprietário) e atribui acesso de leitura para os usuários autenticados.

Os buckets do Amazon S3 obrigatórios devem existir para que você possa criar um cluster. Você deve carregar todos os scripts necessários ou dados referenciados no cluster no Amazon S3. A tabela a seguir descreve dados de exemplo, scripts e locais de arquivo de log.

Configurar o carregamento multiparte para o Amazon S3

A Amazon EMR suporta o upload de várias partes do Amazon S3 por meio do AWS SDK para Java. O multipart upload permite que você faça upload de um único objeto como um conjunto de partes. O upload dessas partes de objetos pode ser feito de maneira independente e em qualquer ordem. Se a transmissão de alguma parte falhar, você poderá retransmitir essa parte sem afetar outras partes. Depois que todas as partes do objeto forem carregadas, o Amazon S3 montará as partes e criará o objeto.

Para obter mais informações, consulte Visão geral do carregamento fracionado no Manual do usuário do Amazon Simple Storage Service.

Além disso, a Amazon EMR oferece propriedades que permitem que você controle com mais precisão a limpeza de peças com falha no upload de várias partes.

A tabela a seguir descreve as propriedades de EMR configuração da Amazon para upload de várias partes. Você pode configurar esses valores usando a classificação de configuração core-site. Para obter mais informações, consulte Configurar aplicativos no Amazon EMR Release Guide.

Nome do parâmetro de configuração Valor padrão Descrição
fs.s3n.multipart.uploads.enabled true Um tipo booleano que indica se os carregamentos multiparte devem ou não ser habilitados. Quando a visualização EMRFS consistente está ativada, os uploads de várias partes são ativados por padrão e a configuração desse valor como false é ignorada.
fs.s3n.multipart.uploads.split.size 134217728

Especifica o tamanho máximo de uma peça, em bytes, antes de EMRFS iniciar um novo carregamento de peça quando o carregamento de várias partes está ativado. O valor mínimo é 5242880 (5 MB). Se um valor menor for especificado, 5242880 será usado. O máximo é 5368709120 (5 GB). Se um valor maior for especificado, 5368709120 será usado.

Se a criptografia EMRFS do lado do cliente estiver desativada e o Amazon S3 Optimized Committer também estiver desativado, esse valor também controlará o tamanho máximo que um arquivo de dados pode aumentar EMRFS até usar uploads de várias partes em vez PutObject de uma solicitação para carregar o arquivo. Para obter mais informações, consulte

fs.s3n.ssl.enabled true Um tipo booleano que indica se o http ou o https deve ser usado.
fs.s3.buckets.create.enabled false Um tipo booleano que indica se um bucket deve ser criado caso ele não exista. Configurar como false gera uma exceção em operações CreateBucket.
fs.s3.multipart.clean.enabled false Um tipo booliano que indica se deseja habilitar a limpeza periódica em segundo plano de carregamentos multiparte incompletos.
fs.s3.multipart.clean.age.threshold 604800 Um tipo longo que especifica a idade mínima de um multipart upload, em segundos, antes de ser considerado para limpeza. O padrão é uma semana.
fs.s3.multipart.clean.jitter.max 10000 Um tipo inteiro que especifica o valor máximo de atraso de oscilação aleatória em segundos adicionado ao atraso fixo de 15 minutos antes de programar a próxima execução de limpeza.

Desabilitar carregamentos multiparte

Console
Para desativar os carregamentos de várias partes com o console
  1. Faça login no AWS Management Console e abra o EMR console da Amazon em https://console.aws.amazon.com/emr.

  2. EC2Em EMRAtivado, no painel de navegação esquerdo, escolha Clusters e, em seguida, escolha Criar cluster.

  3. Em Configurações do software, insira a seguinte configuração: classification=core-site,properties=[fs.s3n.multipart.uploads.enabled=false].

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

  5. Para iniciar o cluster, escolha Criar cluster.

CLI
Para desativar o upload de várias partes usando o AWS CLI

Esse procedimento explica como desabilitar o multipart upload usando a AWS CLI. Para desabilitar o multipart upload, digite o comando create-cluster com o parâmetro --bootstrap-actions.

  1. Crie um arquivo, myConfig.json, com o seguinte conteúdo e salve-o no mesmo diretório onde você executa o comando:

    [ { "Classification": "core-site", "Properties": { "fs.s3n.multipart.uploads.enabled": "false" } } ]
  2. Digite o seguinte comando e substitua myKey com o nome do seu EC2 key pair.

    nota

    Os caracteres de continuação de linha do Linux (\) são incluídos para facilitar a leitura. Eles podem ser removidos ou usados ​​em comandos do Linux. No Windows, remova-os ou substitua-os por um sinal de interpolação (^).

    aws emr create-cluster --name "Test cluster" \ --release-label emr-7.2.0 --applications Name=Hive Name=Pig \ --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge \ --instance-count 3 --configurations file://myConfig.json
API
Para desativar o upload de várias partes usando o API

Práticas recomendadas

A seguir estão recomendações para o uso de buckets do Amazon S3 com clusters. EMR

Habilitar o versionamento

O versionamento é uma configuração recomendada para o seu bucket do Amazon S3. Habilitando o versionamento, você garante que, mesmo que os dados sejam excluídos ou substituídos sem querer, eles possam ser recuperados. Para obter mais informações, consulte Usando versionamento no Guia do usuário do Amazon Simple Storage Service.

Limpar carregamentos multiparte com falha

EMRos componentes do cluster usam uploads de várias partes por meio do AWS SDK for Java with Amazon APIs S3 para gravar arquivos de log e enviar dados para o Amazon S3 por padrão. Para obter informações sobre a alteração de propriedades relacionadas a essa configuração usando a AmazonEMR, consulteConfigurar o carregamento multiparte para o Amazon S3. Às vezes, carregar um arquivo grande pode resultar em um carregamento multiparte do Amazon S3 incompleto. Quando não é possível concluir com êxito um multipart upload em andamento, este continua a ocupar seu bucket e resulta em cobranças de armazenamento. Recomendamos as seguintes opções para evitar excesso de armazenamento de arquivos:

  • Para buckets que você usa com a AmazonEMR, use uma regra de configuração de ciclo de vida no Amazon S3 para remover uploads incompletos de várias partes três dias após a data de início do upload. As regras de configuração de ciclo de vida permitem que você controle a classe de armazenamento e o tempo de vida dos objetos. Para obter mais informações, consulte Object lifecycle management e Aborting incomplete multipart uploads using a bucket lifecycle policy.

  • Ative o recurso EMR de limpeza em várias partes da Amazon fs.s3.multipart.clean.enabled configurando true e ajustando outros parâmetros de limpeza. Esse recurso é útil em alto volume, grande escala e com clusters que tenham tempo limitado. Nesse caso, o parâmetro DaysAfterIntitiation de uma regra de configuração do ciclo de vida pode ser muito longo, mesmo se definido como o mínimo, causando picos no armazenamento do Amazon S3. A limpeza em várias partes EMR da Amazon permite um controle mais preciso. Para obter mais informações, consulte Configurar o carregamento multiparte para o Amazon S3.

Gerenciar marcadores de versão

Recomendamos que você habilite uma regra de configuração de ciclo de vida no Amazon S3 para remover marcadores de exclusão de objetos expirados para buckets versionados que você usa com a Amazon. EMR Ao excluir um objeto em um bucket com versionamento, um marcador de exclusão é criado. Se todas as versões anteriores do objeto expirarem posteriormente, um marcador de exclusão de objeto expirado será deixado no bucket. Embora você não seja cobrado pelos marcadores de exclusão, a remoção dos marcadores expirados pode melhorar o desempenho das solicitações. LIST Para obter mais informações, consulte Lifecycle configuration for a bucket with versioning no Guia do usuário do Amazon Simple Storage Service.

Práticas recomendadas de desempenho

Dependendo de suas cargas de trabalho, tipos específicos de uso de EMR clusters e aplicativos nesses clusters podem resultar em um grande número de solicitações em um bucket. Para obter mais informações, consulte Request rate and performance considerations no Guia do usuário do Amazon Simple Storage Service.