本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
S3A MagicV2 發射器
使用 EMR-6.15.0 版本時,Amazon EMR 引入新的 S3A 遞交者類型,稱為 MagicV2 遞交者。如需此功能的完整資訊,請參閱相關文件章節。
MagicV2 Committer 代表開放原始碼 MagicCommitter
與原始 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)。增加容器或執行器記憶體應可解決此問題。