本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
EMR 檔案系統 (EMRFS)
EMR 檔案系統 (EMRFS) 是所有 Amazon EMR叢集的實作HDFS,用於直接從 Amazon 讀取和寫入一般檔案EMR至 Amazon S3。 EMRFS 提供在 Amazon S3 中存放持久性資料的便利性,以與 Hadoop 搭配使用,同時提供資料加密等功能。
資料加密可讓您加密EMRFS寫入 Amazon S3 的物件,並EMRFS啟用 在 Amazon S3 中使用加密的物件。如果您使用 Amazon EMR4.8.0 版或更新版本,您可以使用安全組態來設定 Amazon S3 中EMRFS物件的加密,以及其他加密設定。如需詳細資訊,請參閱加密選項。如果您使用舊版的 Amazon EMR,您可以手動設定加密設定。如需詳細資訊,請參閱使用 EMRFS 屬性指定 Amazon S3 加密。
Amazon S3 為所有 GET、 PUT和 LIST操作提供強大的讀後寫入一致性 AWS 區域。這表示您使用 撰寫的內容EMRFS是您從 Amazon S3 讀取的內容,不會影響效能。如需詳細資訊,請參閱 Amazon S3 資料一致性模式。
使用 Amazon EMR5.10.0 版或更新版本時,您可以根據叢集使用者、群組或 Amazon S3 中EMRFS資料的位置,對 Amazon S3 的EMRFS請求使用不同的IAM角色。如需詳細資訊,請參閱設定 Amazon S3 EMRFS請求IAM的角色。
警告
為執行 Apache Spark 任務的 Amazon EMR叢集開啟投機式執行之前,請檢閱下列資訊。
EMRFS 包含 EMRFS S3-optimized遞交者,這是最佳化的 OutputCommitter 實作,可在使用 時將檔案寫入 Amazon S3EMRFS。如果您使用將資料寫入 Amazon S3 的應用程式開啟 Apache Spark 投機式執行功能,但不使用 EMRFS S3-optimized遞交器,您可能會遇到 SPARK-10063
EMRFS 不支援 EMRFS S3-optimized遞交者時,通常會使用直接寫入,例如寫入下列項目時:
Parquet 以外的輸出格式,例如 ORC或 文字。
使用 Spark RDD 的 Hadoop 檔案API。
使用 Hive 的 Parquet SerDe。請參閱 Hive 中繼存放區 Parquet 資料表轉換
。
EMRFS 直接寫入不會用於下列案例:
啟用 EMRFS S3-optimized遞交者時。請參閱 EMRFS S3-optimized遞交者的需求。
寫入將 partitionOverwriteMode 設為動態的動態分割區時。
在寫入至自訂分割區位置時,例如不符合 Hive 預設分割區位置慣例的位置。
使用 以外的檔案系統時EMRFS,例如寫入HDFS或使用 S3A 檔案系統。
若要判斷您的應用程式是否在 Amazon EMR 5.14.0 或更新版本中使用直接寫入,請啟用 Spark INFO記錄。如果包含文字「直接寫入:ENABLED」的日誌行出現在 Spark 驅動程式日誌或 Spark 執行器容器日誌中,則 Spark 應用程式會使用直接寫入撰寫。
根據預設,投機式執行會OFF
開啟 Amazon EMRclusters。如果這兩個條件都成立,我們強烈建議您不要開啟推測性執行:
您正在將資料寫入至 Amazon S3。
資料是以 Apache Parquet 以外的格式撰寫,或以不使用 EMRFS S3-optimized遞交者的 Apache Parquet 格式撰寫。
如果您開啟 Spark 投機式執行並使用EMRFS直接寫入將資料寫入 Amazon S3,您可能會遇到間歇性資料遺失。當您將資料寫入 HDFS,或使用 EMRFS S3-optimized遞交器在 Parquet 中寫入資料時,Amazon EMR不會使用直接寫入,也不會發生此問題。
如果您需要使用從 Spark EMRFS直接寫入 Amazon S3 並使用推測執行的格式寫入資料,建議您使用 S3DistCP 寫入HDFS輸出檔案,然後傳輸輸出檔案至 Amazon S3。 S3DistCP