

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 name="emrfs-cli-reference"></a>

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 **emrfs** comando só é suportado com emulação de VT100 terminal. No entanto, ele pode funcionar com outros modos de emulador de terminal.

## comando de nível superior emrfs
<a name="emrfs-top-level"></a>

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  | Description  | 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}} é 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
<a name="emrfs-describe-metadata"></a>


**[Opções] para emrfs describe-metadata**  

| Opção  | Description  | Obrigatório  | 
| --- | --- | --- | 
| `-m {{METADATA_NAME}} \| --metadata-name {{METADATA_NAME}}` | {{METADATA\_NAME}}é o nome da tabela de metadados do DynamoDB. Se o {{METADATA\_NAME}} argumento não for fornecido, o valor padrão será`EmrFSMetadata`. | Não | 

**Example exemplo de emrfs describe-metadata**  <a name="emrfs-describe-metadata"></a>
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
<a name="emrfs-set-metadata-capacity"></a>


**[Opções] para emrfs set-metadata-capacity**  

| Opção  | Description  | Obrigatório  | 
| --- | --- | --- | 
| `-m {{METADATA_NAME}} \| --metadata-name {{METADATA_NAME}}` | {{METADATA\_NAME}}é o nome da tabela de metadados do DynamoDB. Se o {{METADATA\_NAME}} argumento 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 {{READ\_CAPACITY}} argumento 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 {{WRITE\_CAPACITY}} argumento não for fornecido, o valor padrão será`100`. | Não | 

**Example 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
<a name="emrfs-delete-metadata"></a>


**[Opções] para emrfs delete-metadata**  

| Opção  | Description  | Obrigatório  | 
| --- | --- | --- | 
| `-m {{METADATA_NAME}} \| --metadata-name {{METADATA_NAME}}` | {{METADATA\_NAME}}é o nome da tabela de metadados do DynamoDB. Se o {{METADATA\_NAME}} argumento não for fornecido, o valor padrão será`EmrFSMetadata`. | Não | 

**Example exemplo de delete-metadata**  
O exemplo a seguir exclui a tabela de metadados padrão.  

```
$ emrfs delete-metadata
```

## subcomando emrfs create-metadata
<a name="emrfs-create-metadata"></a>


**[Opções] para emrfs create-metadata**  

| Opção  | Description  | Obrigatório  | 
| --- | --- | --- | 
| `-m {{METADATA_NAME}} \| --metadata-name {{METADATA_NAME}}` | {{METADATA\_NAME}}é o nome da tabela de metadados do DynamoDB. Se o {{METADATA\_NAME}} argumento 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 {{READ\_CAPACITY}} argumento 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 {{WRITE\_CAPACITY}} argumento não for fornecido, o valor padrão será`100`. | Não | 

**Example 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
<a name="emrfs-list-metadata-stores"></a>

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

**Example List-metadata-stores exemplo**  
O exemplo a seguir lista suas tabelas de metadados.  

```
$ emrfs list-metadata-stores
  EmrFSMetadata
```

## subcomando emrfs diff
<a name="emrfs-diff"></a>


**[Opções] para emrfs diff**  

| Opção  | Description  | Obrigatório  | 
| --- | --- | --- | 
| `-m {{METADATA_NAME}} \| --metadata-name {{METADATA_NAME}}` | {{METADATA\_NAME}}é o nome da tabela de metadados do DynamoDB. Se o {{METADATA\_NAME}} argumento 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 | 

**Example 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
<a name="emrfs-delete"></a>


**[Opções] para emrfs delete**  

|  Opção  |  Description  |  Obrigatório  | 
| --- | --- | --- | 
| `-m {{METADATA_NAME}} \| --metadata-name {{METADATA_NAME}}` | {{METADATA\_NAME}}é o nome da tabela de metadados do DynamoDB. Se o {{METADATA\_NAME}} argumento 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 anteriores ao {{TIME}} argumento são excluídas do 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 {{READ\_CONSUMPTION}} argumento 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 {{WRITE\_CONSUMPTION}} argumento não for especificado, o valor padrão será`100`. | Não | 

**Example 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
<a name="emrfs-import"></a>


**[Opções] para emrfs import**  

| Opção  | Description  | Obrigatório  | 
| --- | --- | --- | 
| `-m {{METADATA_NAME}} \| --metadata-name {{METADATA_NAME}}` | {{METADATA\_NAME}}é o nome da tabela de metadados do DynamoDB. Se o {{METADATA\_NAME}} argumento 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 {{READ\_CONSUMPTION}} argumento 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 {{WRITE\_CONSUMPTION}} argumento não for especificado, o valor padrão será`100`. | Não | 

**Example 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
<a name="emrfs-sync"></a>


**[Opções] para emrfs sync**  

| Opção  | Description  | Obrigatório  | 
| --- | --- | --- | 
| `-m {{METADATA_NAME}} \| --metadata-name {{METADATA_NAME}}` | {{METADATA\_NAME}}é o nome da tabela de metadados do DynamoDB. Se o {{METADATA\_NAME}} argumento 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 {{READ\_CONSUMPTION}} argumento 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 {{WRITE\_CONSUMPTION}} argumento não for especificado, o valor padrão será`100`. | Não | 

**Example 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
<a name="emrfs-read-sqs"></a>


**[Opções] para emrfs read-sqs**  

| Opção  | Description  | 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
<a name="emrfs-delete-sqs"></a>


**[Opções] para emrfs delete-sqs**  

| Opção  | Description  | 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
<a name="emrfs-submit-steps-as-cli"></a>

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 para 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.