Referência de comando da CLI do EMRFS - 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á.

Referência de comando da CLI do EMRFS

A CLI do EMRFS é instalada por padrão em todos os nós principais do cluster criados usando o Amazon EMR versão 3.2.1 ou posterior. Você pode usar a CLI do EMRFS para gerenciar os metadados para visualização consistente.

nota

O comando emrfs só tem suporte com a emulação de terminal VT100. No entanto, ele pode funcionar com outros modos de emulador de terminal.

comando de nível superior emrfs

O comando de nível superior emrfs oferece suporte à seguinte estrutura.

emrfs [describe-metadata | set-metadata-capacity | delete-metadata | create-metadata | \ list-metadata-stores | diff | delete | sync | import ] [options] [arguments]

Especifique [opções], com ou sem [argumentos] conforme descrito na tabela a seguir. Para [opções] específicas de subcomandos (describe-metadata, set-metadata-capacity, etc.), consulte cada subcomando abaixo.

[Opções] para emrfs
Opção Descrição Obrigatório

-a AWS_ACCESS_KEY_ID | --access-key AWS_ACCESS_KEY_ID

A chave de AWS acesso que você usa para gravar objetos no Amazon S3 e para criar ou acessar um armazenamento de metadados no DynamoDB. Por padrão, AWS_ACCESS_KEY_ID está definido como a chave de acesso usada para criar o cluster.

Não

-s AWS_SECRET_ACCESS_KEY | --secret-key AWS_SECRET_ACCESS_KEY

A chave AWS secreta associada à chave de acesso que você usa para gravar objetos no Amazon S3 e para criar ou acessar um armazenamento de metadados no DynamoDB. Por padrão, AWS_SECRET_ACCESS_KEY é definido como a chave secreta associada à chave de acesso usada para criar o cluster.

Não

-v | --verbose

Torna a saída detalhada.

Não

-h | --help

Exibe a mensagem de ajuda para o comando emrfs com uma instrução de uso.

Não

subcomando emrfs describe-metadata

[Opções] para emrfs describe-metadata
Opção Descrição Obrigatório

-m METADATA_NAME | --metadata-name METADATA_NAME

METADATA_NAME é o nome da tabela de metadados do DynamoDB. Se o argumento METADATA_NAME não for fornecido, o valor padrão será EmrFSMetadata.

Não

exemplo de emrfs describe-metadata

O exemplo a seguir descreve a tabela de metadados padrão.

$ emrfs describe-metadata EmrFSMetadata read-capacity: 400 write-capacity: 100 status: ACTIVE approximate-item-count (6 hour delay): 12

subcomando emrfs set-metadata-capacity

[Opções] para emrfs set-metadata-capacity
Opção Descrição Obrigatório

-m METADATA_NAME | --metadata-name METADATA_NAME

METADATA_NAME é o nome da tabela de metadados do DynamoDB. Se o argumento METADATA_NAME não for fornecido, o valor padrão será EmrFSMetadata.

Não

-r READ_CAPACITY | --read-capacity READ_CAPACITY

A capacidade de throughput de leitura solicitada para a tabela de metadados. Se o argumento READ_CAPACITY não for fornecido, o valor padrão será 400.

Não

-w WRITE_CAPACITY | --write-capacity WRITE_CAPACITY

A capacidade de throughput de gravação solicitada para a tabela de metadados. Se o argumento WRITE_CAPACITY não for fornecido, o valor padrão será 100.

Não

exemplo de emrfs set-metadata-capacity

O exemplo a seguir define a capacidade de throughput de leitura como 600 e a capacidade de gravação como 150 para uma tabela de metadados denominada EmrMetadataAlt.

$ emrfs set-metadata-capacity --metadata-name EmrMetadataAlt --read-capacity 600 --write-capacity 150 read-capacity: 400 write-capacity: 100 status: UPDATING approximate-item-count (6 hour delay): 0

subcomando emrfs delete-metadata

[Opções] para emrfs delete-metadata
Opção Descrição Obrigatório

-m METADATA_NAME | --metadata-name METADATA_NAME

METADATA_NAME é o nome da tabela de metadados do DynamoDB. Se o argumento METADATA_NAME não for fornecido, o valor padrão será EmrFSMetadata.

Não

exemplo de delete-metadata

O exemplo a seguir exclui a tabela de metadados padrão.

$ emrfs delete-metadata

subcomando emrfs create-metadata

[Opções] para emrfs create-metadata
Opção Descrição Obrigatório

-m METADATA_NAME | --metadata-name METADATA_NAME

METADATA_NAME é o nome da tabela de metadados do DynamoDB. Se o argumento METADATA_NAME não for fornecido, o valor padrão será EmrFSMetadata.

Não

-r READ_CAPACITY | --read-capacity READ_CAPACITY

A capacidade de throughput de leitura solicitada para a tabela de metadados. Se o argumento READ_CAPACITY não for fornecido, o valor padrão será 400.

Não

-w WRITE_CAPACITY | --write-capacity WRITE_CAPACITY

A capacidade de throughput de gravação solicitada para a tabela de metadados. Se o argumento WRITE_CAPACITY não for fornecido, o valor padrão será 100.

Não

exemplo de emrfs create-metadata

O exemplo a seguir cria uma tabela de metadados chamada de EmrFSMetadataAlt.

$ emrfs create-metadata -m EmrFSMetadataAlt Creating metadata: EmrFSMetadataAlt EmrFSMetadataAlt read-capacity: 400 write-capacity: 100 status: ACTIVE approximate-item-count (6 hour delay): 0

subcomando emrfs list-metadata-stores

O subcomando emrfs list-metadata-stores não tem [opções].

exemplo ist-metadata-stores Exemplo L

O exemplo a seguir lista suas tabelas de metadados.

$ emrfs list-metadata-stores EmrFSMetadata

subcomando emrfs diff

[Opções] para emrfs diff
Opção Descrição Obrigatório

-m METADATA_NAME | --metadata-name METADATA_NAME

METADATA_NAME é o nome da tabela de metadados do DynamoDB. Se o argumento METADATA_NAME não for fornecido, o valor padrão será EmrFSMetadata.

Não

s3://s3Path

O caminho para o bucket do Amazon S3, para a comparação com a tabela de metadados. Buckets são sincronizados recursivamente.

Sim

exemplo de emrfs diff

O exemplo a seguir compara a tabela de metadados padrão com um bucket do Amazon S3.

$ emrfs diff s3://elasticmapreduce/samples/cloudfront BOTH | MANIFEST ONLY | S3 ONLY DIR elasticmapreduce/samples/cloudfront DIR elasticmapreduce/samples/cloudfront/code/ DIR elasticmapreduce/samples/cloudfront/input/ DIR elasticmapreduce/samples/cloudfront/logprocessor.jar DIR elasticmapreduce/samples/cloudfront/input/XABCD12345678.2009-05-05-14.WxYz1234 DIR elasticmapreduce/samples/cloudfront/input/XABCD12345678.2009-05-05-15.WxYz1234 DIR elasticmapreduce/samples/cloudfront/input/XABCD12345678.2009-05-05-16.WxYz1234 DIR elasticmapreduce/samples/cloudfront/input/XABCD12345678.2009-05-05-17.WxYz1234 DIR elasticmapreduce/samples/cloudfront/input/XABCD12345678.2009-05-05-18.WxYz1234 DIR elasticmapreduce/samples/cloudfront/input/XABCD12345678.2009-05-05-19.WxYz1234 DIR elasticmapreduce/samples/cloudfront/input/XABCD12345678.2009-05-05-20.WxYz1234 DIR elasticmapreduce/samples/cloudfront/code/cloudfront-loganalyzer.tgz

subcomando emrfs delete

[Opções] para emrfs delete

Opção

Descrição

Obrigatório

-m METADATA_NAME | --metadata-name METADATA_NAME

METADATA_NAME é o nome da tabela de metadados do DynamoDB. Se o argumento METADATA_NAME não for fornecido, o valor padrão será EmrFSMetadata.

Não

s3://s3Path

O caminho para o bucket do Amazon S3 que você está rastreando para uma visualização consistente. Buckets são sincronizados recursivamente.

Sim

-t TIME | --time TIME

O tempo de expiração (interpretado usando o argumento de unidade de tempo). Todas as entradas de metadados mais antigas que o argumento TIME são excluídas para o bucket especificado.

-u UNIT | --time-unit UNIT

A medida usada para interpretar o argumento TIME (nanossegundos, microssegundos, milissegundos, segundos, minutos, horas ou dias). Se nenhum argumento for especificado, o valor padrão será days.

--read-consumption READ_CONSUMPTION

A quantidade solicitada de throughput de leitura disponível utilizado para a operação delete. Se o argumento READ_CONSUMPTION não for especificado, o valor padrão será 400.

Não

--write-consumption WRITE_CONSUMPTION

A quantidade solicitada de throughput de gravação disponível utilizado para a operação delete. Se o argumento WRITE_CONSUMPTION não for especificado, o valor padrão será 100.

Não

exemplo de emrfs delete

O exemplo a seguir remove todos os objetos em um bucket do Amazon S3 dos metadados de rastreamento para uma visualização consistente.

$ emrfs delete s3://elasticmapreduce/samples/cloudfront entries deleted: 11

subcomando emrfs import

[Opções] para emrfs import
Opção Descrição Obrigatório

-m METADATA_NAME | --metadata-name METADATA_NAME

METADATA_NAME é o nome da tabela de metadados do DynamoDB. Se o argumento METADATA_NAME não for fornecido, o valor padrão será EmrFSMetadata.

Não

s3://s3Path

O caminho para o bucket do Amazon S3 que você está rastreando para uma visualização consistente. Buckets são sincronizados recursivamente.

Sim

--read-consumption READ_CONSUMPTION

A quantidade solicitada de throughput de leitura disponível utilizado para a operação delete. Se o argumento READ_CONSUMPTION não for especificado, o valor padrão será 400.

Não

--write-consumption WRITE_CONSUMPTION

A quantidade solicitada de throughput de gravação disponível utilizado para a operação delete. Se o argumento WRITE_CONSUMPTION não for especificado, o valor padrão será 100.

Não

exemplo de emrfs import

O exemplo a seguir importa todos os objetos em um bucket do Amazon S3 com os metadados de rastreamento para uma visualização consistente. Todas as chaves desconhecidas são ignoradas.

$ emrfs import s3://elasticmapreduce/samples/cloudfront

subcomando emrfs sync

[Opções] para emrfs sync
Opção Descrição Obrigatório

-m METADATA_NAME | --metadata-name METADATA_NAME

METADATA_NAME é o nome da tabela de metadados do DynamoDB. Se o argumento METADATA_NAME não for fornecido, o valor padrão será EmrFSMetadata.

Não

s3://s3Path

O caminho para o bucket do Amazon S3 que você está rastreando para uma visualização consistente. Buckets são sincronizados recursivamente.

Sim

--read-consumption READ_CONSUMPTION

A quantidade solicitada de throughput de leitura disponível utilizado para a operação delete. Se o argumento READ_CONSUMPTION não for especificado, o valor padrão será 400.

Não

--write-consumption WRITE_CONSUMPTION

A quantidade solicitada de throughput de gravação disponível utilizado para a operação delete. Se o argumento WRITE_CONSUMPTION não for especificado, o valor padrão será 100.

Não

exemplo do comando emrfs sync

O exemplo a seguir importa todos os objetos em um bucket do Amazon S3 com os metadados de rastreamento para uma visualização consistente. Todas as chaves desconhecidas são excluídas.

$ emrfs sync s3://elasticmapreduce/samples/cloudfront Synching samples/cloudfront 0 added | 0 updated | 0 removed | 0 unchanged Synching samples/cloudfront/code/ 1 added | 0 updated | 0 removed | 0 unchanged Synching samples/cloudfront/ 2 added | 0 updated | 0 removed | 0 unchanged Synching samples/cloudfront/input/ 9 added | 0 updated | 0 removed | 0 unchanged Done synching s3://elasticmapreduce/samples/cloudfront 9 added | 0 updated | 1 removed | 0 unchanged creating 3 folder key(s) folders written: 3

subcomando emrfs read-sqs

[Opções] para emrfs read-sqs
Opção Descrição Obrigatório

-q QUEUE_NAME | --queue-name QUEUE_NAME

QUEUE_NAME é o nome da fila do Amazon SQS configurada em emrfs-site.xml. O valor padrão é EMRFS-Inconsistency-<jobFlowId>.

Sim

-o OUTPUT_FILE | --output-file OUTPUT_FILE

OUTPUT_FILE é o caminho para o arquivo de saída no sistema de arquivos local do nó principal. Mensagens lidas na fila são gravadas nesse arquivo.

Sim

subcomando emrfs delete-sqs

[Opções] para emrfs delete-sqs
Opção Descrição Obrigatório

-q QUEUE_NAME | --queue-name QUEUE_NAME

QUEUE_NAME é o nome da fila do Amazon SQS configurada em emrfs-site.xml. O valor padrão é EMRFS-Inconsistency-<jobFlowId>.

Sim

Enviar comandos da CLI do EMRFS como etapas

O exemplo a seguir mostra como usar o emrfs utilitário no nó principal aproveitando a API AWS CLI or e a command-runner.jar para executar o emrfs comando como uma etapa. O exemplo usa o AWS SDK for Python (Boto3) para adicionar uma etapa a um cluster que adiciona objetos em um bucket do Amazon S3 à tabela de metadados padrão do EMRFS.

import boto3 from botocore.exceptions import ClientError def add_emrfs_step(command, bucket_url, cluster_id, emr_client): """ Add an EMRFS command as a job flow step to an existing cluster. :param command: The EMRFS command to run. :param bucket_url: The URL of a bucket that contains tracking metadata. :param cluster_id: The ID of the cluster to update. :param emr_client: The Boto3 Amazon EMR client object. :return: The ID of the added job flow step. Status can be tracked by calling the emr_client.describe_step() function. """ job_flow_step = { "Name": "Example EMRFS Command Step", "ActionOnFailure": "CONTINUE", "HadoopJarStep": { "Jar": "command-runner.jar", "Args": ["/usr/bin/emrfs", command, bucket_url], }, } try: response = emr_client.add_job_flow_steps( JobFlowId=cluster_id, Steps=[job_flow_step] ) step_id = response["StepIds"][0] print(f"Added step {step_id} to cluster {cluster_id}.") except ClientError: print(f"Couldn't add a step to cluster {cluster_id}.") raise else: return step_id def usage_demo(): emr_client = boto3.client("emr") # Assumes the first waiting cluster has EMRFS enabled and has created metadata # with the default name of 'EmrFSMetadata'. cluster = emr_client.list_clusters(ClusterStates=["WAITING"])["Clusters"][0] add_emrfs_step( "sync", "s3://elasticmapreduce/samples/cloudfront", cluster["Id"], emr_client ) if __name__ == "__main__": usage_demo()

Você pode usar o valor de step_id retornado para verificar os logs em busca do resultado da operação.