搭配使用 Azure 儲存體與 Azure HDInsight 叢集
您也可以在 Azure Blob 儲存體或 Azure Data Lake Storage Gen2 中儲存資料。 或是這些選項的組合。 這些儲存體選項都可讓您安全地刪除用於計算的 HDInsight 叢集,而不會遺失使用者資料。
Apache Hadoop 支援預設檔案系統的概念。 預設檔案系統意指預設配置和授權。 也可用來解析相對路徑。 進行 HDInsight 叢集建立程序期間,您可以指定 Azure 儲存體中的 Blob 容器作為預設檔案系統。 或者,使用 HDInsight 3.6,您可以選取 Azure Blob 記憶體或 Azure Data Lake Storage Gen2 作為預設文件系統,但有一些例外。
在本文中,您將了解 Azure 儲存體與 HDInsight 叢集搭配運作的方式。
- 若要了解 Data Lake Storage Gen2 與 HDInsight 叢集搭配運作的方式,請參閱使用 Azure Data Lake Storage Gen2 搭配 Azure HDInsight 叢集。
- 如需建立 HDInsight 叢集的詳細資訊,請參閱在 HDInsight 中建立 Apache Hadoop 叢集。
重要
儲存體帳戶種類 BlobStorage 只能作為 HDInsight 叢集的次要儲存體。
儲存體帳戶種類 | 支援的服務 | 支援的效能層級 | 不支援的效能層級 | 支援的存取層 |
---|---|---|---|---|
StorageV2 (一般用途 v2) | Blob | 標準 | Premium | 經常性、非經常性、封存* |
儲存體 (一般用途 v1) | Blob | 標準 | Premium | N/A |
BlobStorage | Blob | 標準 | Premium | 經常性、非經常性、封存* |
不建議您使用預設的 Blob 容器來儲存商務資料。 最好在每次使用後刪除預設的 Blob 容器,以減少儲存成本。 預設容器包含應用程式與系統記錄。 請務必先擷取記錄再刪除容器。
不支援多個叢集共用一個 Blob 容器作為預設檔案系統。
注意
「封存」存取層是一個有數小時擷取延遲的離線層,不建議與 HDInsight 搭配使用。 如需詳細資訊,請參閱封存存取層。
從叢集存取檔案
注意
Azure 儲存體小組已停止 WASB 的所有作用中開發,並建議所有客戶使用 ABFS 驅動程式與 Blob 和 ADLS gen2 互動。 如需詳細資訊,請參閱 Azure Blob 檔案系統驅動程式 (ABFS):Hadoop 專用的 Azure 儲存體驅動程式
使用完整格式名稱。 使用這種方法,您可以針對想要存取的檔案提供完整路徑。
wasb://<containername>@<accountname>.blob.core.windows.net/<file.path>/ wasbs://<containername>@<accountname>.blob.core.windows.net/<file.path>/
使用簡短路徑格式。 使用這種方法,您可以利用以下方式取代到叢集根目錄的路徑:
wasb:///<file.path>/ wasbs:///<file.path>/
使用相對路徑。 使用這種方法,您可以針對想要存取的檔案,只提供相對路徑。
/<file.path>/
資料存取範例
範例是以叢集前端節點的 ssh 連線為基礎。 這些範例會使用這三個 URI 配置。 請將 CONTAINERNAME
和 STORAGEACCOUNT
取代為相關值
一些 hdfs 命令
在本機儲存體上建立檔案。
touch testFile.txt
在叢集儲存體上建立目錄。
hdfs dfs -mkdir wasbs://CONTAINERNAME@STORAGEACCOUNT.blob.core.windows.net/sampledata1/ hdfs dfs -mkdir wasbs:///sampledata2/ hdfs dfs -mkdir /sampledata3/
將資料從本機儲存體複製到叢集儲存體。
hdfs dfs -copyFromLocal testFile.txt wasbs://CONTAINERNAME@STORAGEACCOUNT.blob.core.windows.net/sampledata1/ hdfs dfs -copyFromLocal testFile.txt wasbs:///sampledata2/ hdfs dfs -copyFromLocal testFile.txt /sampledata3/
列出叢集儲存體上的目錄內容。
hdfs dfs -ls wasbs://CONTAINERNAME@STORAGEACCOUNT.blob.core.windows.net/sampledata1/ hdfs dfs -ls wasbs:///sampledata2/ hdfs dfs -ls /sampledata3/
注意
在 HDInsight 外部使用 Blob 時,大部分的公用程式無法辨識 WASB 格式而改為預期基本的路徑格式,例如 example/jars/hadoop-mapreduce-examples.jar
。
建立 Hive 資料表
顯示三個檔案位置以供說明之用。 若為實際執行,請僅使用其中一個 LOCATION
項目。
DROP TABLE myTable;
CREATE EXTERNAL TABLE myTable (
t1 string,
t2 string,
t3 string,
t4 string,
t5 string,
t6 string,
t7 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
STORED AS TEXTFILE
LOCATION 'wasbs://CONTAINERNAME@STORAGEACCOUNT.blob.core.windows.net/example/data/';
LOCATION 'wasbs:///example/data/';
LOCATION '/example/data/';
從外部叢集存取檔案
Microsoft 提供下列工具來使用 Azure 儲存體:
工具 | Linux | OS X | Windows |
---|---|---|---|
Azure 入口網站 | ✔ | ✔ | ✔ |
Azure CLI | ✔ | ✔ | ✔ |
Azure PowerShell | ✔ | ||
AzCopy | ✔ | ✔ |
識別來自 Ambari 的儲存體路徑
若要識別已設定之預設存放區的完整路徑,請瀏覽至:
HDFS>Configs,並在篩選輸入方塊中輸入
fs.defaultFS
。若要檢查 wasb 儲存體是否設定為次要儲存體,請瀏覽至:
HDFS>Configs,並在篩選輸入方塊中輸入
blob.core.windows.net
。
若要使用 Ambari REST API 取得路徑,請參閱取得預設儲存體。
Blob 容器
若要使用 Blob,您必須先建立 Azure 儲存體帳戶。 在這個步驟中,您可以指定建立儲存體帳戶所在的 Azure 區域。 叢集與儲存體帳戶必須在相同區域內託管。 Hive 中繼存放區 SQL Server 資料庫和 Apache Oozie 中繼存放區 SQL Server 資料庫必須位在相同的區域內。
您所建立的每個 Blob 不論位於何處,都屬於 Azure 儲存體帳戶中的某個容器。 此容器可能是在 HDInsight 外部建立的現有 blob。 或者,其可能是針對 HDInsight 叢集所建立的容器。
預設 Blob 容器會儲存叢集特定資訊,例如作業歷程記錄和記錄。 不要與多個 HDInsight 叢集共用預設 Blob 容器。 此動作可能損毀作業記錄。 建議您為每個叢集使用不同的容器。 將共用資料放在為所有相關叢集指定的連結儲存體帳戶上,而不是預設儲存體帳戶上。 如需如何設定連結儲存體帳戶的詳細資訊,請參閱建立 HDInsight 叢集。 不過,在刪除原始的 HDInsight 叢集後,您可以重複使用預設儲存容器。 對於 HBase 叢集,您可以利用已刪除的 HBase 叢集所使用的預設 Blob 容器來建立一個新的 HBase 叢集,藉此實際保留 HBase 資料表結構描述和資料
注意
需要安全傳輸的功能會透過安全連線,強制執行您帳戶的所有要求。 只有 HDInsight 叢集 3.6 版或更新版本支援這項功能。 如需詳細資訊,請參閱在 Azure HDInsight 中使用安全傳輸儲存體帳戶建立 Apache Hadoop 叢集。
使用其他儲存體帳戶
在建立 HDInsight 叢集時,您會指定要與它相關聯的 Azure 儲存體帳戶。 此外,您也可以在建立程序中或在叢集建立後,從相同或不同的 Azure 訂用帳戶中新增其他儲存體帳戶。 如需關於新增其他儲存體帳戶的指示,請參閱建立 HDInsight 叢集。
警告
不支援在 HDInsight 叢集以外的位置中使用其他儲存體帳戶。
下一步
在本文中,您已了解如何搭配 HDInsight 使用 HDFS 相容的 Azure 儲存體。 此儲存體可讓您建置可調整、長期封存的資料取得解決方案,並利用 HDInsight 來將儲存的結構化和非結構化資料內的資訊解除鎖定。
如需詳細資訊,請參閱