EMRFS CLI コマンドリファレンス - Amazon EMR

EMRFS CLI コマンドリファレンス

EMRFS CLI は、Amazon EMR リリースバージョン 3.2.1 以降を使用して作成されたすべてのクラスターマスターノードにデフォルトでインストールされます。EMRFS CLI を使用して、整合性のあるビューのメタデータを管理できます。

注記

emrfs コマンドは、VT100 ターミナルエミュレーションでのみサポートされます。ただし、他のターミナルエミュレータモードでも動作する場合があります。

emrfs 最上位コマンド

emrfs 最上位コマンドは、次の構造をサポートしています。

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

次の表に示すように、[引数] の有無にかかわらず、[options] を指定します。サブコマンド (describe-metadataset-metadata-capacity など) に固有の [options] については、以下の各サブコマンドを参照してください。

emrfs の [Options]
オプション 説明 必須

-a AWS_ACCESS_KEY_ID | --access-key AWS_ACCESS_KEY_ID

Amazon S3 へのオブジェクトの書き込みと、DynamoDB 内のメタデータストアの作成またはアクセスに使用する AWS アクセスキー。デフォルトでは、AWS_ACCESS_KEY_ID は、クラスターの作成に使用されたアクセスキーに設定されます。

No

-s AWS_SECRET_ACCESS_KEY | --secret-key AWS_SECRET_ACCESS_KEY

Amazon S3 へのオブジェクトの書き込みと、DynamoDB 内のメタデータストアの作成またはアクセスに使用するアクセスキーに関連付けられた AWS シークレットキー。デフォルトでは、AWS_SECRET_ACCESS_KEY は、クラスターの作成に使用されたアクセスキーに関連付けられたシークレットキーに設定されます。

No

-v | --verbose

詳細な出力を作成します。

No

-h | --help

emrfs コマンドのヘルプメッセージと使用方法の説明を表示します。

No

emrfs describe-metadata サブコマンド

emrfs describe-metadata の [Options]
オプション 説明 必須

-m METADATA_NAME | --metadata-name METADATA_NAME

METADATA_NAME は DynamoDB メタデータテーブルの名前です。METADATA_NAME 引数が指定されていない場合、デフォルト値は EmrFSMetadata です。

No

例 emrfs describe-metadata の例

次の例では、デフォルトのメタデータテーブルを記述します。

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

emrfs set-metadata-capacity サブコマンド

emrfs set-metadata-capacity の [Options]
オプション 説明 必須

-m METADATA_NAME | --metadata-name METADATA_NAME

METADATA_NAME は DynamoDB メタデータテーブルの名前です。METADATA_NAME 引数が指定されていない場合、デフォルト値は EmrFSMetadata です。

No

-r READ_CAPACITY | --read-capacity READ_CAPACITY

メタデータテーブルのリクエストされた読み込みスループット容量。READ_CAPACITY 引数が指定されていない場合、デフォルト値は 400 です。

No

-w WRITE_CAPACITY | --write-capacity WRITE_CAPACITY

メタデータテーブルのリクエストされた書き込みスループット容量。WRITE_CAPACITY 引数が指定されていない場合、デフォルト値は 100 です。

No

例 emrfs set-metadata-capacity の例

次の例では、600 という名前のメタデータテーブルの読み込みスループット容量を 150、書き込みスループット容量を 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

emrfs delete-metadata サブコマンド

emrfs delete-metadata の [Options]
オプション 説明 必須

-m METADATA_NAME | --metadata-name METADATA_NAME

METADATA_NAME は DynamoDB メタデータテーブルの名前です。METADATA_NAME 引数が指定されていない場合、デフォルト値は EmrFSMetadata です。

No

例 emrfs delete-metadata の例

次の例では、デフォルトのメタデータテーブルを削除します。

$ emrfs delete-metadata

emrfs create-metadata サブコマンド

emrfs create-metadata の [Options]
オプション 説明 必須

-m METADATA_NAME | --metadata-name METADATA_NAME

METADATA_NAME は DynamoDB メタデータテーブルの名前です。METADATA_NAME 引数が指定されていない場合、デフォルト値は EmrFSMetadata です。

No

-r READ_CAPACITY | --read-capacity READ_CAPACITY

メタデータテーブルのリクエストされた読み込みスループット容量。READ_CAPACITY 引数が指定されていない場合、デフォルト値は 400 です。

No

-w WRITE_CAPACITY | --write-capacity WRITE_CAPACITY

メタデータテーブルのリクエストされた書き込みスループット容量。WRITE_CAPACITY 引数が指定されていない場合、デフォルト値は 100 です。

No

例 emrfs create-metadata の例

次の例では、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 list-metadata-stores サブコマンド

emrfs list-metadata-stores サブコマンドには、[options] がありません。

例 list-metadata-stores の例

次の例では、メタデータテーブルを表示します。

$ emrfs list-metadata-stores EmrFSMetadata

emrfs diff サブコマンド

emrfs diff の [Options]
オプション 説明 必須

-m METADATA_NAME | --metadata-name METADATA_NAME

METADATA_NAME は DynamoDB メタデータテーブルの名前です。METADATA_NAME 引数が指定されていない場合、デフォルト値は EmrFSMetadata です。

No

s3://s3Path

メタデータテーブルと比較する Amazon S3 バケットへのパス。バケットは再帰的に同期されます。

Yes

例 emrfs diff の例

次の例では、デフォルトのメタデータテーブルを 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

emrfs delete サブコマンド

emrfs delete の [Options]

オプション

説明

必須

-m METADATA_NAME | --metadata-name METADATA_NAME

METADATA_NAME は DynamoDB メタデータテーブルの名前です。METADATA_NAME 引数が指定されていない場合、デフォルト値は EmrFSMetadata です。

No

s3://s3Path

整合性のあるビューのために追跡する Amazon S3 バケットへのパス。バケットは再帰的に同期されます。

Yes

-t TIME | --time TIME

有効期限(時間単位引数を使用して解釈されます)。指定されたバケットの TIME 引数より古いすべてのメタデータエントリが削除されます。

-u UNIT | --time-unit UNIT

時間の引数(ナノ秒、マイクロ秒、ミリ秒、秒、分、時間、日数)を解釈するために使用される基準。引数が指定されていない場合、デフォルト値は days です。

--read-consumption READ_CONSUMPTION

delete オペレーションに使用される、リクエストされた利用可能な読み取りスループットの量。READ_CONSUMPTION 引数が指定されていない場合、デフォルト値は 400 です。

No

--write-consumption WRITE_CONSUMPTION

delete オペレーションに使用される、リクエストされた利用可能な書き込みスループットの量。WRITE_CONSUMPTION 引数が指定されていない場合、デフォルト値は 100 です。

No

例 emrfs delete の例

次の例では、整合性のあるビューの追跡メタデータから Amazon S3 バケットのすべてのオブジェクトを削除します。

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

emrfs import サブコマンド

emrfs import の [Options]
オプション 説明 必須

-m METADATA_NAME | --metadata-name METADATA_NAME

METADATA_NAME は DynamoDB メタデータテーブルの名前です。METADATA_NAME 引数が指定されていない場合、デフォルト値は EmrFSMetadata です。

No

s3://s3Path

整合性のあるビューのために追跡する Amazon S3 バケットへのパス。バケットは再帰的に同期されます。

Yes

--read-consumption READ_CONSUMPTION

delete オペレーションに使用される、リクエストされた利用可能な読み取りスループットの量。READ_CONSUMPTION 引数が指定されていない場合、デフォルト値は 400 です。

No

--write-consumption WRITE_CONSUMPTION

delete オペレーションに使用される、リクエストされた利用可能な書き込みスループットの量。WRITE_CONSUMPTION 引数が指定されていない場合、デフォルト値は 100 です。

No

例 emrfs import の例

次の例では、Amazon S3 バケット内のすべてのオブジェクトを、整合性のあるビューの追跡メタデータとともにインポートします。不明なキーはすべて無視されます。

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

emrfs sync サブコマンド

emrfs sync の [Options]
オプション 説明 必須

-m METADATA_NAME | --metadata-name METADATA_NAME

METADATA_NAME は DynamoDB メタデータテーブルの名前です。METADATA_NAME 引数が指定されていない場合、デフォルト値は EmrFSMetadata です。

No

s3://s3Path

整合性のあるビューのために追跡する Amazon S3 バケットへのパス。バケットは再帰的に同期されます。

Yes

--read-consumption READ_CONSUMPTION

delete オペレーションに使用される、リクエストされた利用可能な読み取りスループットの量。READ_CONSUMPTION 引数が指定されていない場合、デフォルト値は 400 です。

No

--write-consumption WRITE_CONSUMPTION

delete オペレーションに使用される、リクエストされた利用可能な書き込みスループットの量。WRITE_CONSUMPTION 引数が指定されていない場合、デフォルト値は 100 です。

No

例 emrfs sync command の例

次の例では、Amazon S3 バケット内のすべてのオブジェクトを、整合性のあるビューの追跡メタデータとともにインポートします。不明なキーがすべて削除されます。

$ 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

emrfs read-sqs サブコマンド

emrfs read-sqs の [Options]
オプション 説明 必須

-q QUEUE_NAME | --queue-name QUEUE_NAME

QUEUE_NAME は、emrfs-site.xml で設定した Amazon SQS キューの名前です。デフォルト値は、「EMRFS-Inconsistency-<jobFlowId>」です。

Yes

-o OUTPUT_FILE | --output-file OUTPUT_FILE

OUTPUT_FILE は、マスターノードのローカルファイルシステムにある出力ファイルへのパスです。キューから読み取ったメッセージはこのファイルに書き込まれます。

Yes

emrfs delete-sqs サブコマンド

emrfs delete-sqs の [Options]
オプション 説明 必須

-q QUEUE_NAME | --queue-name QUEUE_NAME

QUEUE_NAME は、emrfs-site.xml で設定した Amazon SQS キューの名前です。デフォルト値は、「EMRFS-Inconsistency-<jobFlowId>」です。

Yes

ステップとして EMRFS CLI コマンドを送信する

次の例では、AWS CLI または API および emrfs を活用して command-runner.jar コマンドをステップとして実行することにより、マスターノードで emrfs ユーティリティを使用する方法を示します。この例では、AWS SDK for Python (Boto3) を使用して、Amazon S3 バケット内のオブジェクトをデフォルトの 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()

返された step_id 値を使用して、ログで操作の結果を確認できます。