Amazon EMR クラスターの EMRFS メタデータテーブルに、非常に多くのレコードがあるのはなぜですか?

最終更新日: 2020 年 11 月 17 日

Amazon EMR クラスターの EMRFS メタデータテーブルは増加し続けています。こうなったのはなぜでしょうか? どうすれば停止できるでしょうか?

簡単な説明

EMRFS を使用して Amazon Simple Storage Service (Amazon S3) のファイルまたはディレクトリを削除すると、EMRFS はメタデータテーブルの対応するレコードに削除マーカーを追加します。ただし、EMRFS は、メタデータテーブルからそのレコードを削除しません。時間の経過とともに、Amazon DynamoDB テーブルのレコード数が増加します。これにより、次の問題が発生する可能性があります。

  • EMR クラスターからの Amazon S3 の読み取り/書き込み操作は、メタデータテーブルのスロットリングのために失敗することがあります。
  • EMRFS sync コマンドの完了には長い時間がかかります。

削除されたレコードをパージするには、メタデータテーブルで Time to Live (TTL) を有効にし、TTL 属性として deletionTTL を指定します。次に、属性を入力し、削除されたオブジェクトのレコードを検索および削除します。

注: TTL は、Amazon S3 で直接削除したオブジェクトには適用されません。TTL は、EMRFS で削除したオブジェクトにのみ適用されます。

解決方法

1.    メタデータテーブル (デフォルトでは emrfsMetadata という名前が付けられています) で TTL を有効にします。[TTL 属性] に、「deletionTTL 」と入力します。または、次の AWS コマンドラインインターフェイス (AWS CLI) コマンドを実行します。example-emrfsMetadata をテーブル名に置き換えます。

$ aws dynamodb update-time-to-live --table-name example-EmrFSMetadata --time-to-live-specification "Enabled=true, AttributeName=deletionTTL"

注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

2.    テーブルで deletionTTL 属性を設定するには、emrfs populate-ttl コマンドを実行します。このコマンドは、メタデータテーブル内の各レコードをチェックします。レコードに削除マーカーがある場合、EMRFS は deletionTTL 属性を設定してから、24 時間後にレコードを削除します。

$ emrfs populate-ttl

3.    populate-ttl コマンドは、既に削除マーカーがあるファイルのレコードを検索します。今後削除するファイルのレコードを自動的に削除するには、emrfs-site.xml を開いてから、fs.s3.consistent.metadata.delete.ttl.enabledtrue に設定します。

4.    (オプション) 有効期限 (デフォルトで 24 時間) を変更するには、emrfs-site.xmlfs.s3.consistent.metadata.delete.ttl.expiration.seconds プロパティを設定します。例えば、有効期限を 2 時間に設定するには、以下を行います。

"fs.s3.consistent.metadata.delete.ttl.expiration.seconds":"7200"

新しいクラスターでこれらのプロパティをすべて設定するには、クラスターの作成時に次のような設定を指定します。

[
    {
      "Classification": "emrfs-site",
      "Properties": {
        "fs.s3.consistent.retryPeriodSeconds":"10",
        "fs.s3.consistent":"true",
        "fs.s3.consistent.retryCount": "5",
        "fs.s3.consistent.metadata.tableName":"EmrFSMetadata",
        "fs.s3.consistent.metadata.delete.ttl.enabled":"true",
        "fs.s3.consistent.metadata.delete.ttl.expiration.seconds":"7200"
      }
    }
]

この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?