

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Referensi Perintah CLI EMRFS
<a name="emrfs-cli-reference"></a>

CLI EMRFS diinstal secara default pada semua simpul utama klaster yang dibuat menggunakan rilis Amazon EMR versi 3.2.1 atau yang lebih baru. Anda dapat menggunakan CLI EMRFS untuk mengelola metadata yang digunakan dalam tampilan yang konsisten. 

**catatan**  
**emrfs**Perintah ini hanya didukung dengan emulasi VT100 terminal. Namun, perintah tersebut dapat bekerja dengan mode emulator terminal lainnya.

## perintah tingkat atas emrfs
<a name="emrfs-top-level"></a>

Perintah tingkat atas **emrfs** mendukung struktur berikut.

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

Tentukan [opsi], dengan atau tanpa [argumen] sebagaimana dijelaskan dalam tabel berikut. Untuk [opsi] khusus sub-perintah (`describe-metadata`, `set-metadata-capacity`, dll.), lihat setiap sub-perintah di bawah.


**[Opsi] untuk emrfs**  

| Opsi  | Deskripsi  | Diperlukan  | 
| --- | --- | --- | 
|  `-a AWS_ACCESS_KEY_ID \| --access-key AWS_ACCESS_KEY_ID`  |  Kunci AWS akses yang Anda gunakan untuk menulis objek ke Amazon S3 dan untuk membuat atau mengakses penyimpanan metadata di DynamoDB. Secara default, *AWS\$1ACCESS\$1KEY\$1ID* diatur ke kunci akses yang digunakan untuk membuat cluster.  |  Tidak  | 
|  `-s AWS_SECRET_ACCESS_KEY \| --secret-key AWS_SECRET_ACCESS_KEY`  |  Kunci AWS rahasia yang terkait dengan kunci akses yang Anda gunakan untuk menulis objek ke Amazon S3 dan untuk membuat atau mengakses penyimpanan metadata di DynamoDB. Secara default, *AWS\$1SECRET\$1ACCESS\$1KEY* diatur ke kunci rahasia yang terkait dengan kunci akses yang digunakan untuk membuat cluster.  |  Tidak  | 
|  `-v \| --verbose`  |  Membuat keluaran verbose.  |  Tidak  | 
|  `-h \| --help`  |  Menampilkan pesan bantuan untuk perintah `emrfs` dengan pernyataan penggunaan.  |  Tidak  | 

## emrfs mendeskripsikan-metadata sub-perintah
<a name="emrfs-describe-metadata"></a>


**[Opsi] untuk emrf mendeskripsikan-metadata**  

| Opsi  | Deskripsi  | Diperlukan  | 
| --- | --- | --- | 
|  `-m METADATA_NAME \| --metadata-name METADATA_NAME`  |  *METADATA\$1NAME*adalah nama tabel metadata DynamoDB. Jika *METADATA\$1NAME* argumen tidak diberikan, nilai defaultnya adalah`EmrFSMetadata`.  |  Tidak  | 

**Example emrfs mendeskripsikan-metadata contoh**  <a name="emrfs-describe-metadata"></a>
Contoh berikut menjelaskan tabel metadata default.  

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

## emrfs sub-perintah set-metadata-capacity
<a name="emrfs-set-metadata-capacity"></a>


**[Opsi] untuk emrfs set-metadata-capacity**  

| Opsi  | Deskripsi  | Diperlukan  | 
| --- | --- | --- | 
|  `-m METADATA_NAME \| --metadata-name METADATA_NAME`  |  *METADATA\$1NAME*adalah nama tabel metadata DynamoDB. Jika *METADATA\$1NAME* argumen tidak diberikan, nilai defaultnya adalah`EmrFSMetadata`.  |  Tidak  | 
|  `-r READ_CAPACITY \| --read-capacity READ_CAPACITY`  |  Kapasitas throughput baca yang diminta untuk tabel metadata. Jika *READ\$1CAPACITY* argumen tidak diberikan, nilai defaultnya adalah`400`.  |  Tidak  | 
|  `-w WRITE_CAPACITY \| --write-capacity WRITE_CAPACITY`  |  Kapasitas throughput tulis yang diminta untuk tabel metadata. Jika *WRITE\$1CAPACITY* argumen tidak diberikan, nilai defaultnya adalah`100`.  |  Tidak  | 

**Example contoh emrfs set-metadata-capacity**  
Contoh berikut menetapkan kapasitas throughput baca ke `600` dan kapasitas tulis ke `150` untuk tabel metadata yang bernama `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
```

## sub-perintah hapus-metadata emrfs
<a name="emrfs-delete-metadata"></a>


**[Opsi] untuk hapus-metadata emrfs**  

| Opsi  | Deskripsi  | Diperlukan  | 
| --- | --- | --- | 
|  `-m METADATA_NAME \| --metadata-name METADATA_NAME`  |  *METADATA\$1NAME*adalah nama tabel metadata DynamoDB. Jika *METADATA\$1NAME* argumen tidak diberikan, nilai defaultnya adalah`EmrFSMetadata`.  |  Tidak  | 

**Example contoh hapus-metadata emrfs**  
Contoh berikut menghapus tabel metadata default.  

```
$ emrfs delete-metadata
```

## sub-perintah buat-metadata emrfs
<a name="emrfs-create-metadata"></a>


**[Opsi] untuk buat-metadata emrfs**  

| Opsi  | Deskripsi  | Diperlukan  | 
| --- | --- | --- | 
|  `-m METADATA_NAME \| --metadata-name METADATA_NAME`  |  *METADATA\$1NAME*adalah nama tabel metadata DynamoDB. Jika *METADATA\$1NAME* argumen tidak diberikan, nilai defaultnya adalah`EmrFSMetadata`.  |  Tidak  | 
|  `-r READ_CAPACITY \| --read-capacity READ_CAPACITY`  |  Kapasitas throughput baca yang diminta untuk tabel metadata. Jika *READ\$1CAPACITY* argumen tidak diberikan, nilai defaultnya adalah`400`.  |  Tidak  | 
|  `-w WRITE_CAPACITY \| --write-capacity WRITE_CAPACITY`  |  Kapasitas throughput tulis yang diminta untuk tabel metadata. Jika *WRITE\$1CAPACITY* argumen tidak diberikan, nilai defaultnya adalah`100`.  |  Tidak  | 

**Example contoh buat-metadata emrfs**  
Contoh berikut membuat tabel metadata bernama `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
```

## emrfs sub-perintah list-metadata-stores
<a name="emrfs-list-metadata-stores"></a>

Sub-perintah **emrfs list-metadata-stores** tidak memiliki [opsi]. 

**Example List-metadata-stores contoh**  
Contoh berikut mencantumkan tabel metadata Anda.  

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

## sub-perintah diff emrfs
<a name="emrfs-diff"></a>


**[Opsi] untuk diff emrf**  

| Opsi  | Deskripsi  | Diperlukan  | 
| --- | --- | --- | 
|  `-m METADATA_NAME \| --metadata-name METADATA_NAME`  |  *METADATA\$1NAME*adalah nama tabel metadata DynamoDB. Jika *METADATA\$1NAME* argumen tidak diberikan, nilai defaultnya adalah`EmrFSMetadata`.  |  Tidak  | 
|  *s3://s3Path*  |  Jalur ke bucket Amazon S3 yang akan dibandingkan dengan tabel metadata. Bucket disinkronkan secara rekursif.  |  Ya  | 

**Example Contoh diff emrfs**  
Contoh berikut membandingkan tabel metadata default dengan bucket 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
```

## sub-perintah hapus emrfs
<a name="emrfs-delete"></a>


**[Opsi] untuk menghapus emrf**  

|  Opsi  |  Deskripsi  |  Diperlukan  | 
| --- | --- | --- | 
|  `-m METADATA_NAME \| --metadata-name METADATA_NAME`  |  *METADATA\$1NAME*adalah nama tabel metadata DynamoDB. Jika *METADATA\$1NAME* argumen tidak diberikan, nilai defaultnya adalah`EmrFSMetadata`.  |  Tidak  | 
|  *s3://s3Path*  |  Jalur ke bucket Amazon S3 yang Anda lacak untuk tampilan yang konsisten. Bucket disinkronkan secara rekursif.  |  Ya  | 
| -t TIME \$1 --time TIME |  Waktu kedaluwarsa (ditafsirkan menggunakan argumen unit waktu). Semua entri metadata yang lebih lama dari *TIME* argumen akan dihapus untuk bucket yang ditentukan.  |  | 
|  `-u UNIT \| --time-unit UNIT`  |  Ukuran yang digunakan untuk menafsirkan argumen waktu (nanodetik, mikrodetik, milidetik, detik, menit, jam, atau hari). Jika tidak ada argumen yang ditentukan, nilai default adalah `days`.  |  | 
|  `--read-consumption READ_CONSUMPTION`  |  Jumlah throughput baca yang tersedia yang diminta yang digunakan untuk operasi **delete**. Jika *READ\$1CONSUMPTION* argumen tidak ditentukan, nilai default adalah`400`.  |  Tidak   | 
|  `--write-consumption WRITE_CONSUMPTION`  |  Jumlah throughput tulis yang tersedia yang diminta yang digunakan untuk operasi **delete**. Jika *WRITE\$1CONSUMPTION* argumen tidak ditentukan, nilai default adalah`100`.  |  Tidak  | 

**Example contoh menghapus emrfs**  
Berikut adalah contoh menghapus semua objek di bucket Amazon S3 dari metadata pelacakan untuk tampilan yang konsisten.  

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

## sub-perintah impor emrfs
<a name="emrfs-import"></a>


**[Opsi] untuk impor emrf**  

| Opsi  | Deskripsi  | Diperlukan  | 
| --- | --- | --- | 
|  `-m METADATA_NAME \| --metadata-name METADATA_NAME`  |  *METADATA\$1NAME*adalah nama tabel metadata DynamoDB. Jika *METADATA\$1NAME* argumen tidak diberikan, nilai defaultnya adalah`EmrFSMetadata`.  |  Tidak  | 
|  *s3://s3Path*  |  Jalur ke bucket Amazon S3 yang Anda lacak untuk tampilan yang konsisten. Bucket disinkronkan secara rekursif.  |  Ya  | 
|  `--read-consumption READ_CONSUMPTION`  |  Jumlah throughput baca yang tersedia yang diminta yang digunakan untuk operasi **delete**. Jika *READ\$1CONSUMPTION* argumen tidak ditentukan, nilai default adalah`400`.  |  Tidak  | 
|  `--write-consumption WRITE_CONSUMPTION`  |  Jumlah throughput tulis yang tersedia yang diminta yang digunakan untuk operasi **delete**. Jika *WRITE\$1CONSUMPTION* argumen tidak ditentukan, nilai default adalah`100`.  |  Tidak  | 

**Example contoh impor emrfs**  
Berikut adalah contoh mengimpor semua objek dalam bucket Amazon S3 dengan metadata pelacakan untuk tampilan yang konsisten. Semua kunci yang tidak dikenal diabaikan.  

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

## sub-perintah sinkronisasi emrfs
<a name="emrfs-sync"></a>


**[Opsi] untuk sinkronisasi emrf**  

| Opsi  | Deskripsi  | Diperlukan  | 
| --- | --- | --- | 
|  `-m METADATA_NAME \| --metadata-name METADATA_NAME`  |  *METADATA\$1NAME*adalah nama tabel metadata DynamoDB. Jika *METADATA\$1NAME* argumen tidak diberikan, nilai defaultnya adalah`EmrFSMetadata`.  |  Tidak  | 
|  *s3://s3Path*  |  Jalur ke bucket Amazon S3 yang Anda lacak untuk tampilan yang konsisten. Bucket disinkronkan secara rekursif.  |  Ya  | 
|  `--read-consumption READ_CONSUMPTION`  |  Jumlah throughput baca yang tersedia yang diminta yang digunakan untuk operasi **delete**. Jika *READ\$1CONSUMPTION* argumen tidak ditentukan, nilai default adalah`400`.  |  Tidak  | 
|  `--write-consumption WRITE_CONSUMPTION`  |  Jumlah throughput tulis yang tersedia yang diminta yang digunakan untuk operasi **delete**. Jika *WRITE\$1CONSUMPTION* argumen tidak ditentukan, nilai default adalah`100`.  |  Tidak  | 

**Example contoh perintah sinkronisasi emrfs**  
Berikut adalah contoh mengimpor semua objek dalam bucket Amazon S3 dengan metadata pelacakan untuk tampilan yang konsisten. Semua kunci yang tidak dikenal dihapus.   

```
$ 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
```

## sub-perintah baca-sqs emrfs
<a name="emrfs-read-sqs"></a>


**[Opsi] untuk baca-sqs emrfs**  

| Opsi  | Deskripsi  | Diperlukan  | 
| --- | --- | --- | 
|  `-q QUEUE_NAME \| --queue-name QUEUE_NAME`  |  *QUEUE\$1NAME*adalah nama antrian Amazon SQS yang dikonfigurasi di. `emrfs-site.xml` Nilai default-nya adalah **EMRFS-Inconsistency-<jobFlowId>**.  |  Ya  | 
|  `-o OUTPUT_FILE \| --output-file OUTPUT_FILE`  |  *OUTPUT\$1FILE*adalah jalur ke file output pada sistem file lokal master node. Pesan yang dibaca dari antrean ditulis ke file ini.   |  Ya  | 

## sub-perintah hapus-sqs emrfs
<a name="emrfs-delete-sqs"></a>


**[Options] untuk hapus-sqs emrfs**  

| Opsi  | Deskripsi  | Diperlukan  | 
| --- | --- | --- | 
|  `-q QUEUE_NAME \| --queue-name QUEUE_NAME`  |  *QUEUE\$1NAME*adalah nama antrian Amazon SQS yang dikonfigurasi di. `emrfs-site.xml` Nilai default-nya adalah **EMRFS-Inconsistency-<jobFlowId>**.  |  Ya  | 

## Mengirimkan perintah CLI EMRFS sebagai langkah
<a name="emrfs-submit-steps-as-cli"></a>

Contoh berikut menunjukkan bagaimana menggunakan `emrfs` utilitas pada master node dengan memanfaatkan AWS CLI atau API dan `command-runner.jar` untuk menjalankan `emrfs` perintah sebagai langkah. Contoh menggunakan AWS SDK untuk Python (Boto3) untuk menambahkan langkah ke cluster yang menambahkan objek dalam bucket Amazon S3 ke tabel metadata EMRFS default.

```
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()
```

Anda dapat menggunakan nilai `step_id` yang dikembalikan untuk memeriksa log untuk hasil operasi.