EMR檔案系統 (EMRFS) - Amazon EMR

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

EMR檔案系統 (EMRFS)

EMR檔案系統 (EMRFS) 是所有 Amazon EMR 叢集用來從亞馬遜EMR直接讀取和寫入一般檔案到 Amazon S3 的HDFS實作。EMRFS提供在 Amazon S3 中存放持續性資料以便搭配 Hadoop 使用的便利性,同時還提供資料加密等功能。

資料加密可讓您加密EMRFS寫入 Amazon S3 的物件,並可EMRFS在 Amazon S3 中處理加密物件。如果您使用的是 Amazon EMR 版本 4.8.0 或更新版本,則可以使用安全組態為 Amazon S3 中的EMRFS物件以及其他加密設定設定設定設定加密。如需詳細資訊,請參閱加密選項。如果您使用舊版 AmazonEMR,則可以手動設定加密設定。如需詳細資訊,請參閱 使用EMRFS屬性指定 Amazon S3 加密

Amazon S3 為所有人和所有GETLIST操作提供強大的後寫讀一致性。PUT AWS 區域這意味著您使用編寫的內容EMRFS是您將從 Amazon S3 讀取的內容,而不會影響效能。如需詳細資訊,請參閱 Amazon S3 資料一致性模式

使用 Amazon EMR 版本 5.10.0 或更新版本時,您可以根據叢集使用者、群組或 Amazon S3 中的EMRFS資料位置,針對傳送 Amazon S3 的EMRFS請求使用不同的IAM角色。如需詳細資訊,請參閱針對 Amazon S3 的EMRFS請求設定IAM角色

警告

為執行 Apache Spark 任務的 Amazon EMR 叢集開啟理論式執行之前,請先檢閱下列資訊。

EMRFS包括 EMRFS S3 最佳化的提交程式,這是針對在使用時將檔案寫入 Amazon S3 最佳化的 OutputCommitter 實作。EMRFS如果您針對將資料寫入 Amazon S3 的應用程式開啟 Apache EMRFS Spark 推測式執行功能,但不使用 S3 最佳化的提交程式,則可能會遇到 -10063 中所述的資料正確性問題。SPARK如果您使用 Amazon 5.19 版以前的 Amazon EMR 版本,或是使用ORC和CSV等格式將檔案寫入 Amazon S3,就會發生這種情況。EMREMRFSS3 最佳化的提交者不支援這些格式。如需使用 S3 最佳化提交者的完整需求清單,請參閱 EMRFS S3 最佳化提交者的EMRFS需求

EMRFS當不支援 EMRFS S3 最佳化的提交程式時,通常會使用直接寫入,例如在撰寫下列內容時:

EMRFS在下列情況下不會使用直接寫入:

  • 啟用 EMRFS S3 最佳化的提交者時。請參閱 EMRFS S3 最佳化提交者的需求。

  • 當編寫動態分區 partitionOverwriteMode 設置為動態。

  • 在寫入至自訂分割區位置時,例如不符合 Hive 預設分割區位置慣例的位置。

  • 使用以外的檔案系統時EMRFS,例如寫入HDFS或使用 S3A 檔案系統。

若要判斷您的應用程式是否使用 Amazon EMR 5.14.0 或更新版本中的直接寫入,請啟用 Spark INFO 記錄功能。如果包含文本「Direct Write:ENABLED」的日誌行存在於 Spark 驅動程序日誌或 Spark 執行程序容器日誌中,則您的 Spark 應用程序使用直接寫入編寫。

默認情況下,推測執行是在 Amazon OFF 上打開的。EMRclusters如果這兩個條件都成立,我們強烈建議您不要開啟推測性執行:

  • 您正在將資料寫入至 Amazon S3。

  • 數據是寫在比 Apache 實木複合地板或不使用 EMRFS S3 優化的提交者的 Apache 鑲木地板格式以外的格式。

如果您開啟 Spark 推測式執行,並使用EMRFS直接寫入將資料寫入 Amazon S3,可能會遇到間歇性的資料遺失。當您使用 EMRFS S3 最佳化的提交程式將HDFS資料寫入或在 Parquet 中寫入資料時,Amazon EMR 不會使用直接寫入,也不會發生此問題。

如果您需要使用從 Spark EMRFS 直接寫入 Amazon S3 的格式寫入資料,並使用理論式執行,建議您使用 S3DISCp 寫入HDFS並將輸出檔案傳輸到 Amazon S3。