S3A MagicV2 發射器 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

S3A MagicV2 發射器

使用 EMR-6.15.0 版本時,Amazon EMR 引入新的 S3A 遞交者類型,稱為 MagicV2 遞交者。如需此功能的完整資訊,請參閱相關文件章節。

MagicV2 Committer 代表開放原始碼 MagicCommitter 的增強實作,專為透過 Amazon S3 S3A 進行最佳化而設計。與上一代相同,它利用 Amazon S3 的分段上傳功能,消除通常與任務和任務遞交階段相關聯的傳統清單和重新命名操作。

與原始 MagicCommitter 相比,MagicV2 遞交者在任務遞交階段將檔案寫入任務的輸出位置,而不是任務遞交階段,以展現卓越的效能。此方法可啟用分散式檔案寫入,並消除在 Amazon S3 上暫時遞交中繼資料儲存的需求,進而改善成本效益。此外,MagicV2 遞交者在遞交程序期間允許檔案路徑覆寫多個執行緒,以提供增強的彈性。

啟用 MagicV2 Committer

若要啟用 MagicV2 遞交者,請在任務組態中傳遞下列組態,或使用核心網站組態來設定 屬性。如需詳細資訊,請參閱設定應用程式

mapreduce.outputcommitter.factory.scheme.s3a=org.apache.hadoop.fs.s3a.commit.S3ACommitterFactory fs.s3a.committer.magic.enabled=true fs.s3a.committer.name=magicv2 fs.s3a.committer.magic.track.commits.in.memory.enabled=true

對於需要在遞交或寫入新檔案之前覆寫現有目錄的工作負載,需要下列額外組態,以及先前提及的組態。

fs.s3a.committer.magic.overwrite.and.commit=true fs.s3a.committer.magic.delete.directory.threads=thread size

threads 組態的預設值為 20。不過,如果有大量目錄需要覆寫,則應調校此參數,以獲得更好的效能。這僅適用於 EMR-7.2.0 及更高版本。

考量事項

  • 如果 Java 虛擬機器 (JVM) 在任務執行和將資料寫入 Amazon S3 時當機或遭到終止,則較有可能留下不完整的分段上傳。因此,當您使用 MagicV2 遞交者時,請務必遵循管理失敗分段上傳的最佳實務。如需詳細資訊,請參閱《Amazon EMR 管理指南》中的使用 Amazon S3 儲存貯體的最佳實務一節。

  • 如果任務失敗,成功任務遞交的任何檔案仍會顯示在目的地路徑中。在這種情況下,使用者需要手動清除遞交的檔案,才能在相同的目的地路徑上重新執行任務。

  • MagicV2 遞交者會對任務嘗試寫入的每個檔案耗用少量記憶體,直到任務遞交或中止為止。在大多數任務中,消耗的記憶體數量可忽略。不過,在某些情況下,當單一執行器程序同時處理大量任務時,可能會產生大量的記憶體壓力,而容器或執行器可能會耗盡記憶體 (OOM)。增加容器或執行器記憶體應可解決此問題。