雲端硬碟與本地碟

在節點上存在2種角色的磁碟,一類是系統硬碟,用來安裝作業系統。一類是資料盤,用來儲存資料。系統硬碟預設都是一塊,必須使用雲端硬碟。而資料盤可以有很多塊,目前上限可以一個節點掛16塊。每一塊都可以有不同的配置,類型和容量都可以不同。EMR預設使用SSD雲端硬碟作為叢集的系統硬碟。EMR 預設掛載4塊雲端硬碟,目前的內網頻寬的情況下4塊雲端硬碟是比較合理的配置。

有2種類型的磁碟可以用作資料的儲存:
  • 雲端硬碟

    包括,SSD 雲端硬碟,高效雲端硬碟,普通雲端硬碟。

    特點是,磁碟並不直接掛載在本地的計算節點上,通過網路訪問遠端的一個儲存節點。每一份資料在後端都有2個即時備份,一共三份資料。所以當一份資料損毀的時候(磁碟損壞,不是使用者自己的業務上的破壞),會自動的使用備份資料恢複。

  • 本地碟

    包括,大資料型的 SATA 本地碟,和本地 SSD 的本地 SSD 盤。

    直接掛載在計算節點上的磁碟,擁有超過雲端硬碟的效能表現。使用本地碟的時候不能選擇數量,只能使用預設配置好的數量,和線下物理機一樣,資料沒有後端的備份機制,需要上層的軟體來保證資料可靠性。

適用的情境

在EMR中,所有雲端硬碟和本地碟都會在節點釋放的時候清除資料,磁碟無法獨立的儲存下來,並再次使用。Hadoop HDFS 會使用所有的資料盤作為資料存放區。 Hadoop YARN 也會使用所有的資料作為計算的臨時儲存。

當業務資料量並不太大(T層級以下)的時候,可以使用雲端硬碟,IOPS和吞吐相比本地碟都會小些。資料量大的時候,推薦都使用本地碟,EMR 會來維護本地碟的資料可靠性。如果發現在使用中明顯的輸送量不夠用,可以切換到本地碟的儲存上。

OSS

在 EMR 中可以將 OSS 作為 HDFS 使用。 使用者可以非常方便的讀寫OSS,所有使用 HDFS 的代碼也可以簡單的修改就能訪問 OSS 上的資料了。

比如:

Spark中讀取資料
sc.textfile("hdfs://user/path")
替換儲存類型 hdfs -> oss
sc.textfile("oss://user/path")

對於MR或者Hive作業也是一樣

HDFS命令直接操作OSS資料
hadoop fs -ls oss://bucket/path
hadoop fs -cp hdfs://user/path  oss://bucket/path

這個過程,不需要輸入AK和endpoint,EMR都會自動替使用者使用當前叢集所有者的資訊補全。

但 OSS 的 iops 不高,在一些需要高 IOPS的情境,不適合使用,比如流式計算 Spark Streaming 或 HBase。