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á.
Metadados da visualização consistente do EMRFS
A visualização consistente do EMRFS acompanha a consistência usando uma tabela do DynamoDB para acompanhar objetos no Amazon S3 que foram sincronizados com o EMRFS ou criados pelo EMRFS. Os metadados são usados para controlar todas as operações (ler, gravar, atualizar e copiar), e nenhum conteúdo real é armazenado neles. Esses metadados são usados para validar se os objetos ou metadados recebidos do Amazon S3 correspondem ao que se espera. Essa confirmação dá ao EMRFS a capacidade de verificar a consistência e read-after-write a consistência de listas para novos objetos que o EMRFS grava no Amazon S3 ou para objetos sincronizados com o EMRFS. Vários clusters podem compartilhar os mesmos metadados.
Como adicionar entradas aos metadados
Você pode usar os subcomandos sync
ou import
para adicionar entradas aos metadados. sync
reflete o estado dos objetos do Amazon S3 em um caminho, enquanto import
é usado estritamente para adicionar novas entradas aos metadados. Para obter mais informações, consulte Referência de comando da CLI do EMRFS.
Como verificar diferenças entre metadados e objetos no Amazon S3
Para verificar se há diferenças entre os metadados e o Amazon S3, use o subcomando diff
da CLI do EMRFS. Para obter mais informações, consulte Referência de comando da CLI do EMRFS.
Como saber se as operações de metadados estão sendo limitadas
O EMRFS define limites de capacidade de throughput padrão nos metadados para suas operações de leitura e gravação em 500 e 100 unidades, respectivamente. Grandes número de objetos ou buckets podem fazer com que as operações excedam essa capacidade e, nesse ponto, o DynamoDB limitará as operações. Por exemplo, uma aplicação pode fazer com que o EMRFS lance um ProvisionedThroughputExceededException
se você executar uma operação que exceda os limites de capacidade. Em caso de controle de utilização, a ferramenta de CLI do EMRFS tenta repetir a gravação na tabela do DynamoDB usando o recuo exponencial até que a operação seja concluída ou quando atingir o valor máximo de repetição para gravar objetos do Amazon EMR no Amazon S3.
É possível configurar seus próprios limites de capacidade de throughput. No entanto, o DynamoDB tem limites de partição estritos de três mil unidades de capacidade de leitura RCUs () e mil unidades de capacidade de gravação WCUs () por segundo para operações de leitura e gravação. Para evitar sync
falhas causadas por controle de utilização, recomenda-se limitar o throughput das operações de leitura a menos de três mil RCUs e as operações de gravação a menos de mil. WCUs Para obter instruções sobre como definir limites personalizados de capacidade de throughput, consulte Configurar a visualização consistente.
Você também pode visualizar CloudWatch métricas da Amazon para os seus metadados do EMRFS no console do DynamoDB, onde é possível ver o número de solicitações de leitura e gravação limitadas. Se você tiver um valor diferente de zero para solicitações limitadas, seu aplicativo poderá se beneficiar com o aumento da capacidade de throughput alocada para operações de leitura ou gravação. Você também poderá perceber um benefício de desempenho se constatar que as suas operações estão se aproximando da capacidade de throughput máxima alocada em leituras ou gravações por um período prolongado.
Características de throughput para operações notáveis do EMRFS
O padrão para operações de leitura e gravação é de 400 e 100 unidades de capacidade de throughput, respectivamente. As seguintes características de desempenho dão uma ideia de qual throughput é necessário para determinadas operações. Esses testes foram realizados usando um cluster m3.large
de nó único. Todas as operações foram definidas em um único thread. O desempenho tem uma variação considerável com base em características específicas dos aplicativos e pode exigir experimentação para otimizar as operações do sistema de arquivos.
Operação | Média read-per-second | Média write-per-second |
---|---|---|
create (objeto) | 26.79 | 6.70 |
delete (objeto) | 10.79 | 10.79 |
delete (diretório contendo 1000 objetos) | 21.79 | 338.40 |
getFileStatus(objeto) | 34.70 | 0 |
getFileStatus(diretório) | 19.96 | 0 |
listStatus (diretório contendo 1 objeto) | 43.31 | 0 |
listStatus (diretório contendo 10 objetos) | 44.34 | 0 |
listStatus (diretório contendo 100 objetos) | 84.44 | 0 |
listStatus (diretório contendo 1.000 objetos) | 308.81 | 0 |
listStatus (diretório contendo 10.000 objetos) | 416.05 | 0 |
listStatus (diretório contendo 100.000 objetos) | 823.56 | 0 |
listStatus (diretório contendo 1M de objetos) | 882.36 | 0 |
mkdir (contínuo por 120 segundos) | 24.18 | 4.03 |
mkdir | 12.59 | 0 |
rename (objeto) | 19.53 | 4.88 |
rename (diretório contendo 1.000 objetos) | 23.22 | 339.34 |
Para enviar uma etapa que limpa dados antigos do seu repositório de metadados
Os usuários podem querer remover entradas específicas nos metadados baseados no DynamoDB. Isso pode ajudar a reduzir os custos de armazenamento associados à tabela. Os usuários têm a capacidade de limpar entradas particulares manualmente ou programaticamente, usando o subcomando delete
da CLI do EMRFS. No entanto, se você excluir entradas dos metadados, o EMRFS deixará de fazer verificações de consistência.
A limpeza usando um programa após a conclusão de um trabalho pode ser feita mediante o envio de uma etapa final ao cluster, que executa um comando na CLI do EMRFS. Por exemplo, digite o seguinte comando para enviar uma etapa ao seu cluster para excluir todas as entradas com mais de dois dias.
aws emr add-steps --cluster-id
j-2AL4XXXXXX5T9
--steps Name="emrfsCLI",Jar="command-runner.jar",Args=["emrfs","delete","--time","2","--time-unit","days"] { "StepIds": [ "s-B12345678902
" ] }
Use o StepId valor retornado para verificar os logs em busca do resultado da operação.