Azure HDInsight:常見問題集

本文提供有關如何執行 Azure HDInsight 的一些最常見問題的解答。

建立或刪除 HDInsight 叢集

如何佈建 HDInsight 叢集?

若要檢閱 HDInsight 叢集類型和布建方法,請參閱 使用 Apache Hadoop、Apache Spark、Apache Kafka 等在 HDInsight 中設定叢集。

如何? 刪除現有的 HDInsight 叢集嗎?

若要深入瞭解何時不再使用時刪除叢集,請參閱 刪除 HDInsight 叢集

嘗試在建立和刪除作業之間保留至少 30 到 60 分鐘。 否則作業可能會失敗,並出現下列錯誤訊息:

Conflict (HTTP Status Code: 409) error when attempting to delete a cluster immediately after creation of a cluster. If you encounter this error, wait until the newly created cluster is in operational state before attempting to delete it.

如何? 為工作負載選取正確的核心或節點數目?

適當的核心數目和其他組態選項取決於各種因素。

如需詳細資訊,請參閱 HDInsight 叢集的容量規劃。

HDInsight 叢集中的各種節點類型為何?

請參閱 Azure HDInsight 叢集中的資源類型。

建立大型 HDInsight 叢集的最佳做法為何?

  1. 建議使用 自定義Ambari DB 設定 HDInsight 叢集,以改善叢集延展性。
  2. 使用 Azure Data Lake 儲存體 Gen2 建立 HDInsight 叢集,以利用 Azure Data Lake 儲存體 Gen2 的更高頻寬和其他效能特性。
  3. 前端節點應該足以容納在這些節點上執行的多個主要服務。
  4. 某些特定工作負載,例如互動式查詢也需要較大的 Zookeeper 節點。 請考慮至少八個核心 VM。
  5. 在Hive和Spark的情況下,請使用 外部Hive中繼存放區

個別元件

我可以在叢集上安裝其他元件嗎?

是。 若要安裝其他元件或自訂叢集組態,請使用:

  • 建立期間或之後的腳本。 腳本是透過腳本動作叫用。 腳本動作是一種組態選項,您可以從 Azure 入口網站、HDInsight Windows PowerShell Cmdlet 或 HDInsight .NET SDK 使用。 此組態選項可從 Azure 入口網站、HDInsight Windows PowerShell Cmdlet 或 HDInsight .NET SDK 使用。

  • HDInsight 應用程式平臺 可安裝應用程式。

如需支援的元件清單,請參閱 HDInsight 提供哪些 Apache Hadoop 元件和版本?

我可以升級叢集上預安裝的個別元件嗎?

如果您升級叢集上預安裝的內建元件或應用程式,Microsoft 將不會支援產生的設定。 這些系統設定尚未由 Microsoft 測試。 嘗試使用不同的 HDInsight 叢集版本,該叢集可能已經預安裝元件的升級版本。

例如,不支援將Hive升級為個別元件。 HDInsight 是受控服務,許多服務都與Ambari伺服器整合並經過測試。 自行升級Hive會導致其他元件的索引二進位檔變更,而且會導致叢集上的元件整合問題。

Spark 和 Kafka 可以在相同的 HDInsight 叢集上執行嗎?

否,您無法在相同的 HDInsight 叢集上執行 Apache Kafka 和 Apache Spark。 為 Kafka 和 Spark 建立個別的叢集,以避免資源爭用問題。

如何? 在Ambari中變更時區?

  1. 在開啟Ambari Web UI https://CLUSTERNAME.azurehdinsight.net,其中CLUSTERNAME是叢集的名稱。

  2. 在右上角,選取 [系統管理員] |設定。

    Ambari Settings.

  3. 在 [使用者 設定] 視窗中,從 [時區] 下拉式清單中選取新的時區,然後按兩下 [儲存]。

    Ambari User Settings.

Metastore

如何從現有的中繼存放區移轉至 Azure SQL 資料庫?

若要從 SQL Server 遷移至 Azure SQL 資料庫,請參閱教學課程:使用 DMS 將 SQL Server 移轉至 Azure SQL 資料庫 中的單一資料庫或集區資料庫。

刪除叢集時是否刪除Hive中繼存放區?

這取決於叢集設定為使用的中繼存放區類型。

針對預設中繼存放區:預設中繼存放區是叢集生命週期的一部分。 當您刪除叢集時,相應的中繼存放區和中繼資料會一併刪除。

針對自定義中繼存放區:中繼存放區的生命週期不會系結至叢集的生命週期。 因此,您可以建立和刪除叢集,而不會遺失元數據。 即使您刪除並重新建立 HDInsight 叢集之後,Hive 架構之類的元數據仍會持續存在。

如需詳細資訊,請參閱 在 Azure HDInsight 中使用外部元數據存放區。

移轉 Hive 中繼存放區也會移轉 Ranger 資料庫的默認原則嗎?

否,原則定義位於 Ranger 資料庫中,因此移轉 Ranger 資料庫會移轉其原則。

您是否可以將Hive中繼存放區從企業安全性套件 (ESP) 叢集移轉至非ESP叢集,反之亦然?

是,您可以將Hive中繼存放區從ESP遷移至非ESP叢集。

如何估計Hive中繼存放區資料庫的大小?

Hive 中繼存放區可用來儲存 Hive 伺服器所使用的數據源元數據。 大小需求部分取決於Hive數據源的數目和複雜度。 這些項目無法預先估計。 如Hive中繼存放區指導方針中所述,您可以從S2層開始。 該層提供 50 個 DTU 和 250 GB 的記憶體,如果您看到瓶頸,請相應增加資料庫。

您是否支援 Azure SQL 資料庫 以外的任何其他資料庫作為外部中繼存放區?

否,Microsoft 僅支援 Azure SQL 資料庫 做為外部自定義中繼存放區。

我可以跨多個叢集共享中繼存放區嗎?

是,只要這些叢集使用相同的 HDInsight 版本,您就可以跨多個叢集共用自定義中繼存放區。

連線性和虛擬網路

封鎖網路上埠 22 和 23 有何影響?

如果您封鎖埠 22 和埠 23,您將無法存取叢集。 HDInsight 服務不會使用這些埠。

如需詳細資訊,請參閱下列文件:

我可以在與 HDInsight 叢集相同的子網內部署其他虛擬機嗎?

是,您可以在與 HDInsight 叢集相同的子網內部署額外的虛擬機。 以下是可能的組態:

我應該將數據儲存在邊緣節點的本機磁碟上嗎?

否,將數據儲存在本機磁碟上並不是個好主意。 如果節點失敗,則儲存在本機的所有數據都會遺失。 建議您將數據儲存在 Azure Data Lake 儲存體 Gen2 或 Azure Blob 記憶體中,或掛接 Azure 檔案儲存體 共用來儲存數據。

我可以將現有的 HDInsight 叢集新增至另一個虛擬網路嗎?

否,您無法進行這項操作。 虛擬網路應在布建時指定。 如果在布建期間未指定任何虛擬網路,部署會建立無法從外部存取的內部網路。 如需詳細資訊,請參閱 將 HDInsight 新增至現有的虛擬網路

安全性和憑證

Azure HDInsight 叢集上的惡意代碼防護建議為何?

如需惡意代碼保護的相關信息,請參閱適用於 Azure 的 Microsoft Antimalware 雲端服務 和 虛擬機器

如何? 建立 HDInsight ESP 叢集的索引鍵表嗎?

為您的網域用戶名稱建立 Kerberos 金鑰表。 您稍後可以使用此keytab向遠端加入網域的叢集進行驗證,而不需要輸入密碼。 功能變數名稱是大寫:


ktutil
ktutil: addent -password -p <username>@<DOMAIN.COM> -k 1 -e aes256-cts-hmac-sha1-96
Password for <username>@<DOMAIN.COM>: <password>
ktutil: wkt <username>.keytab
ktutil: q

建立keytab時,AES256 加密何時需要鹽化?

如果您的 TenantName 和 DomainName 不同(例如 TenantName – bob@CONTOSO.ONMICROSOFT.COM & DomainName – bob@CONTOSOMicrosoft.ONMICROSOFT.COM),您必須使用 -s 選項來新增 SALT 值。

如何? 判斷適當的 SALT 值嗎?

  1. 使用互動式 Kerberos 登入來判斷 keytab 的適當 salt 值。 互動式 Kerberos 登入預設會使用最高加密。 應該啟用追蹤來觀察鹽。 以下是 Kerberos 登入範例:

$ KRB5_TRAACE=/dev/stdout kinit <username> -V
  1. 查看鹽 「.......」 的輸出線。
  2. 建立 keytab 時,請使用這個 Salt 值。

ktutil
ktutil: addent -password -p <username>@<DOMAIN.COM> -k 1 -e aes256-cts-hmac-sha1-96 -s <SALTvalue>
Password for <username>@<DOMAIN.COM>: <password>
ktutil: wkt <username>.keytab
ktutil: q

我可以使用現有的 Microsoft Entra 租使用者來建立具有 ESP 的 HDInsight 叢集嗎?

啟用 Microsoft Entra Domain Services,才能使用 ESP 建立 HDInsight 叢集。 開放原始碼 Hadoop 依賴 Kerberos 進行驗證(而不是 OAuth)。

若要將 VM 加入網域,您必須擁有域控制器。 Microsoft Entra Domain Services 是受控域控制器,並被視為 Microsoft Entra 識別符的延伸模組。 Microsoft Entra Domain Services 提供所有 Kerberos 需求,以受控方式建置安全的 Hadoop 叢集。 HDInsight 即受控服務會與 Microsoft Entra Domain Services 整合以提供安全性。

我是否可以在 Microsoft Entra Domain Services 安全 LDAP 設定中使用自我簽署憑證,並布建 ESP 叢集?

建議使用證書頒發機構單位所簽發的憑證。 但 ESP 也支援使用自我簽署憑證。 如需詳細資訊,請參閱

我可以將Data Analytics Studio (DAS) 安裝為ESP叢集嗎?

否,ESP 叢集不支援 DAS。

如何提取 Ranger 中顯示的登入活動?

針對稽核需求,Microsoft 建議啟用 Azure 監視器記錄,如使用 Azure 監視器記錄來監視 HDInsight 叢集中所述

我可以在叢集上停用 'Clamscan' 嗎?

Clamscan 是在 HDInsight 叢集上執行的防病毒軟體,由 Azure 安全性 (azsecd) 用來保護您的叢集免於病毒攻擊。 Microsoft 強烈建議使用者不要對預設 Clamscan 設定進行任何變更。

此程式不會干擾或從其他進程中移除任何週期。 它一律會產生給其他程式。 只有在系統閑置時,才會看到 來自 Clamscan 的CPU尖峰。

在必須控制排程的案例中,您可以使用下列步驟:

  1. 使用下列命令停用自動執行:

    sudo sudo usr/local/bin/azsecd config -s clamav -d Disabled service azsecd restart

  2. 新增以 root 身分執行下列命令的 Cron 作業:

    /usr/local/bin/azsecd manual -s clamav

如需如何設定及執行cron作業的詳細資訊,請參閱 如何? 設定Cron作業

為什麼 Spark ESP 叢集上提供 LLAP?

LLAP 基於安全性考慮啟用 (Apache Ranger),而不是效能。 使用較大的節點 VM 來容納 LLAP 的資源使用量(例如,最小 D13V2)。

如何在建立 ESP 叢集之後新增其他 Microsoft Entra 群組?

有兩種方式可以達成此目標:1- 您可以在叢集建立時重新建立叢集並新增其他群組。 如果您在 Microsoft Entra Domain Services 中使用範圍同步處理,請確定群組 B 包含在限定範圍的同步處理中。 2- 將群組新增為先前用來建立 ESP 叢集之上一個群組的巢狀子群組。 例如,如果您已建立具有群組 A的 ESP 叢集,則稍後可以新增群組 B 作為的巢狀子群組 A ,並在大約一小時後自動同步處理並可在叢集中使用。

儲存體

我可以將 Azure Data Lake 儲存體 Gen2 新增至現有的 HDInsight 叢集作為額外的記憶體帳戶嗎?

否,目前無法將 Azure Data Lake 儲存體 Gen2 儲存器帳戶新增至具有 Blob 記憶體做為其主要記憶體的叢集。 如需詳細資訊,請參閱 比較記憶體選項

如何尋找 Data Lake 記憶體帳戶目前鏈接的服務主體?

您可以在 Data Lake 儲存體 Gen1 存取中,在 Azure 入口網站 中的叢集屬性下找到您的設定。 如需詳細資訊,請參閱 驗證叢集設定

如何計算 HDInsight 叢集的記憶體帳戶和 Blob 容器使用量?

執行下列其中一個動作:

  • 使用 PowerShell

  • 尋找 /user/hive/的大小 。HDInsight 叢集上的垃圾桶/ 資料夾,使用下列命令列:

    hdfs dfs -du -h /user/hive/.Trash/

如何設定 Blob 記憶體帳戶的稽核?

若要稽核 Blob 記憶體帳戶,請使用在 Azure 入口網站 中監視記憶體帳戶的程式來設定監視。 HDFS 稽核記錄只提供本機 HDFS 文件系統的稽核資訊(hdfs://mycluster)。 它不包含在遠端記憶體上完成的作業。

如何在 Blob 容器與 HDInsight 前端節點之間傳輸檔案?

在前端節點上執行類似下列殼層腳稿的腳稿:

for i in cat filenames.txt
do
   hadoop fs -get $i <local destination>
done

注意

檔案filenames.txt會有 Blob 容器中檔案的絕對路徑。

是否有任何 Ranger 外掛程式可供儲存?

目前,Blob 記憶體和 Azure Data Lake 儲存體 Gen1 或 Gen2 沒有任何 Ranger 外掛程式存在。 針對 ESP 叢集,您應該使用 Azure Data Lake 儲存體。 您至少可以使用 HDFS 工具,在檔案系統層級手動設定精細許可權。 此外,使用 Azure Data Lake 儲存體 時,ESP 叢集會使用叢集層級的 Microsoft Entra ID 來執行一些文件系統存取控制。

您可以使用 [Azure 儲存體 總管],將數據存取原則指派給使用者安全組。 如需詳細資訊,請參閱

我可以在叢集上增加 HDFS 記憶體,而不需要增加背景工作節點的磁碟大小嗎?

否。 您無法增加任何背景工作節點的磁碟大小。 因此,增加磁碟大小的唯一方法是卸除叢集,並使用較大的背景工作 VM 重新建立。 請勿使用 HDFS 來儲存任何 HDInsight 資料,因為刪除叢集時會刪除數據。 相反地,請將您的數據儲存在 Azure 中。 相應增加叢集也可以將額外的容量新增至您的 HDInsight 叢集。

邊緣節點

是否可以在建立叢集之後新增邊緣節點?

請參閱 在 HDInsight 中的 Apache Hadoop 叢集上使用空白邊緣節點。

如何連線到邊緣節點?

建立邊緣節點之後,您可以在埠 22 上使用 SSH 連線到它。 您可以從叢集入口網站找到邊緣節點的名稱。 名稱通常會以 -ed 結尾。

為什麼保存的腳本不會在新建立的邊緣節點上自動執行?

您可以使用持續性腳本,透過調整作業自定義新增至叢集的新背景工作節點。 持續性腳本不適用於邊緣節點。

REST API

從叢集提取 Tez 查詢檢視的 REST API 呼叫為何?

您可以使用下列 REST 端點來提取 JSON 格式的必要資訊。 使用基本身份驗證標頭來提出要求。

  • Tez Query Viewhttps://< cluster name.azurehdinsight.net/ws/v1/timeline/HIVE_QUERY_ID/>
  • Tez Dag Viewhttps://< cluster name.azurehdinsight.net/ws/v1/timeline/TEZ_DAG_ID/>

如何? 使用 Microsoft Entra 使用者從 HDI 叢集擷取設定詳細數據嗎?

若要與 Microsoft Entra 使用者交涉適當的驗證令牌,請使用下列格式透過閘道:

  • <cluster dnsname>https://.azurehdinsight.net/api/v1/clusters/testclusterdem/stack_versions/1/repository_versions/1

如何? 使用Ambari RESTful來監視YARN效能?

如果您在相同的虛擬網路或對等互連虛擬網路中呼叫 Curl 命令,則命令為:


curl -u <cluster login username> -sS -G
http://<headnodehost>:8080/api/v1/clusters/<ClusterName>/services/YARN/components/NODEMANAGER?fields=metrics/cpu

如果您從虛擬網路外部或從非對等互連虛擬網路呼叫 命令,則命令格式為:

  • 針對非 ESP 叢集:

    
    curl -u <cluster login username> -sS -G 
    https://<ClusterName>.azurehdinsight.net/api/v1/clusters/<ClusterName>/services/YARN/components/NODEMANAGER?fields=metrics/cpu
    
  • 針對 ESP 叢集:

    
    curl -u <cluster login username>-sS -G 
    https://<ClusterName>.azurehdinsight.net/api/v1/clusters/<ClusterName>/services/YARN/components/NODEMANAGER?fields=metrics/cpu
    

注意

Curl 會提示您輸入密碼。 您必須輸入叢集登入用戶名稱的有效密碼。

計費

部署 HDInsight 叢集需要多少費用?

如需計費相關定價和常見問題的詳細資訊,請參閱 Azure HDInsight 定價 頁面。

HDInsight 計費何時啟動和停止?

HDInsight 叢集計費會在叢集建立後啟動,並在刪除叢集時停止。 計費按分鐘比例計算。

如何? 取消我的訂用帳戶嗎?

如需如何取消訂用帳戶的資訊,請參閱 取消您的 Azure 訂用帳戶

對於隨用隨付訂用帳戶,取消訂用帳戶之後會發生什麼事?

如需取消訂用帳戶后的相關信息,請參閱 取消訂閱之後會發生什麼情況?

Hive

即使我執行 HDInsight 3.6 叢集,Hive 版本為何在 Ambari UI 中顯示為 1.2.1000 而不是 2.1?

雖然 Ambari UI 中只出現 1.2,但 HDInsight 3.6 同時包含 Hive 1.2 和 Hive 2.1。

其他常見問題

HDInsight 為即時串流處理功能提供什麼功能?

如需串流處理整合功能的相關信息,請參閱 在 Azure 中選擇串流處理技術。

當叢集在特定期間閑置時,是否有辦法動態終止叢集的前端節點?

您無法使用 HDInsight 叢集執行此動作。 您可以針對這些案例使用 Azure Data Factory。

HDInsight 提供哪些合規性供應專案?

如需合規性資訊,請參閱 Microsoft 信任中心