Share via


HDInsight 中的 Azure 儲存體 概觀

Azure 儲存體是強大的一般用途儲存體解決方案,其完美整合了 HDInsight。 HDInsight 可以使用 Azure 儲存體中的 Blob 容器做為叢集的預設檔案系統。 透過 HDFS 介面,HDInsight 中的一組完整元件可以直接在儲存為 Blob 的結構化或非結構化數據上運作。

建議您針對預設叢集記憶體和商務數據使用不同的記憶體容器。 隔離是隔離 HDInsight 記錄和暫存盤與您自己的商務數據。 我們也建議您在每次使用后刪除包含應用程式和系統記錄的預設 Blob 容器,以降低記憶體成本。 刪除容器之前,請務必先擷取記錄。

如果您選擇使用所選網路上的防火牆和虛擬網路限制來保護記憶體帳戶,請務必啟用 [允許受信任的 Microsoft 服務...] 例外狀況例外狀況是 HDInsight 可以存取您的記憶體帳戶。

HDInsight 記憶體架構

下圖提供 Azure 儲存體 HDInsight 架構的抽象檢視:

HDInsight Storage Architecture.

HDInsight 可讓您存取本機連結至計算節點的分散式文件系統。 您可以使用完整 URI 來存取此檔案系統,例如:

hdfs://<namenodehost>/<path>

透過 HDInsight,您也可以存取 Azure 儲存體 中的數據。 語法如下所示:

wasb://<containername>@<accountname>.blob.core.windows.net/<path>

對於具有階層命名空間的帳戶(Azure Data Lake 儲存體 Gen2),語法如下所示:

abfs://<containername>@<accountname>.dfs.core.windows.net/<file.path>/

搭配 HDInsight 叢集使用 Azure 儲存體 帳戶時,請考慮下列原則:

  • 聯機至叢集之記憶體帳戶中的容器: 由於帳戶名稱和密鑰在建立期間與叢集相關聯,因此您可以完整存取這些容器中的 Blob。

  • 未連線到叢集之記憶體帳戶中的公用容器或公用 Blob: 您具有容器中 Blob 的唯讀許可權。

    注意

    公用容器可讓您取得該容器中可用的所有 Blob 清單,以及取得容器元數據。 公用 Blob 只有在您知道確切的 URL 時,才能存取 Blob。 如需詳細資訊,請參閱 管理容器和 Blob 的匿名讀取許可權。

  • 儲存體帳戶中未連線到叢集的私人容器: 除非您在提交 WebHCat 作業時定義記憶體帳戶,否則您無法存取容器中的 Blob。

在建立程式中定義的記憶體帳戶及其金鑰會儲存在叢集節點上的 %HADOOP_HOME%/conf/core-site.xml。 根據預設,HDInsight 會使用core-site.xml檔案中定義的記憶體帳戶。 您可以使用 Apache Ambari 來修改此設定。 如需可在core-site.xml檔案中修改或放置之記憶體帳戶設定的詳細資訊,請參閱下列文章:

多個 WebHCat 作業,包括 Apache Hive。 MapReduce、Apache Hadoop 串流和 Apache Pig 會攜帶記憶體帳戶和元數據的描述。 (此層面目前適用於具有記憶體帳戶的 Pig,但不適用於元數據。如需詳細資訊,請參閱 搭配替代記憶體帳戶和中繼存放區使用 HDInsight 叢集。

Blob 可用於結構化和非結構化數據。 Blob 容器會將數據儲存為索引鍵/值組,而且沒有目錄階層。 不過,索引鍵名稱可以包含斜線字元 (/ ),使其看起來就像檔案儲存在目錄結構中一樣。 例如,Blob 的金鑰可以是 input/log1.txt。 沒有實際的 input 目錄存在,但由於索引鍵名稱中的斜線字元,索引鍵看起來像檔案路徑。

Azure 儲存體的優點

未共置的計算叢集和記憶體資源具有隱含的效能成本。 這些成本可藉由計算叢集建立接近 Azure 區域內記憶體帳戶資源的方式來減輕。 在此區域中,計算節點可以透過 Azure 儲存體 內的高速網路有效率地存取數據。

當您將資料儲存在 Azure 儲存體 而不是 HDFS 時,您會獲得數個優點:

  • 數據重複使用和共用: HDFS 中的數據位於計算叢集內。 只有可存取計算叢集的應用程式可以使用 HDFS API 來使用數據。 相較之下,Azure 儲存體 中的數據可以透過 HDFS API 或 Blob 記憶體 REST API 來存取。 由於這種安排,一組較大的應用程式(包括其他 HDInsight 叢集)和工具可用來產生及取用數據。

  • 數據封存:將數據儲存在 Azure 儲存體 時,可以安全地刪除用於計算的 HDInsight 叢集,而不會遺失用戶數據。

  • 數據儲存成本:長期將數據儲存在 DFS 比將數據儲存在 Azure 儲存體 成本高。 因為計算叢集的成本高於 Azure 儲存體的成本。 此外,由於數據不需要針對每個計算叢集產生重載,因此您也會節省數據載入成本。

  • 彈性向外延展: 雖然 HDFS 提供向外延展文件系統,但縮放比例取決於您為叢集建立的節點數目。 變更規模可能會比您在 Azure 儲存體 中自動取得的彈性調整功能複雜得多。

  • 異地復寫:您的 Azure 儲存體 可以異地複寫。 雖然異地復寫可讓您進行地理復原和數據備援,但故障轉移至異地復寫的位置會嚴重影響您的效能,而且可能會產生額外的成本。 因此,請謹慎選擇異地復寫,而且只有在數據的值符合額外的成本時。

某些 MapReduce 作業和套件可能會建立您不想儲存在 Azure 儲存體 的中繼結果。 在此情況下,您可以選擇將資料儲存在本機 HDFS 中。 HDInsight 會針對Hive作業和其他處理程式中的數個中繼結果使用 DFS。

注意

大部分的 HDFS 命令 (例如、 lscopyFromLocalmkdir) 在 Azure 儲存體 中如預期般運作。 只有原生 HDFS 實作專屬的命令(稱為 DFS),例如 fschkdfsadmin,會在 Azure 儲存體 中顯示不同的行為。

下一步