使用 Azure HDInsight 針對 Apache Hadoop YARN 進行疑難解答

瞭解在 Apache Ambari 中使用 Apache Hadoop YARN 承載時的常見問題及其解決方式。

如何? 在叢集上建立新的 YARN 佇列嗎?

解決步驟

使用Ambari中的下列步驟來建立新的YARN佇列,然後在所有佇列之間平衡容量配置。

在此範例中,兩個現有的佇列(預設值thriftsvr)都從 50% 的容量變更為 25%, 這可提供新的佇列 (spark) 50% 的容量。

Queue Capacity 容量上限
預設值 25% 50%
thrftsvr 25% 50%
Spark 50% 50%
  1. 選取 [Ambari 檢視] 圖示,然後選取網格線模式。 接下來,選取 [YARN 佇列管理員]。

    Apache Ambari dashboard YARN Queue Manager.

  2. 選取預設佇列。

    Apache Ambari YARN select default queue.

  3. 針對預設佇列,將容量從 50% 變更為 25%。 針對 thriftsvr 佇列,將 容量 變更為 25%。

    Change the capacity to 25% for the default and thriftsvr queues.

  4. 若要建立新的佇列,請選取 [ 新增佇列]。

    Apache Ambari YARN dashboard Add Queue.

  5. 將新佇列命名為 。

    Apache Ambari YARN dashboard name Queue.

  6. 容量 值保留為 50%,然後選取 [ 動作] 按鈕。

    Apache Ambari YARN select action.

  7. 選取 [ 儲存並重新整理佇列]。

    Select Save and Refresh Queues.

這些變更會在 YARN 排程器 UI 上立即顯示。

進一步閱讀

如何? 從叢集下載 YARN 記錄嗎?

解決步驟

  1. 使用安全殼層 (SSH) 用戶端 連線 至 HDInsight 叢集。 如需詳細資訊,請參閱 進一步閱讀

  2. 若要列出目前正在執行之 YARN 應用程式的所有應用程式識別碼,請執行下列命令:

    yarn top
    

    標識碼會列在APPLICATIONID數據行中。 您可以從 APPLICATIONID 資料行下載記錄

    YARN top - 18:00:07, up 19d, 0:14, 0 active users, queue(s): root
    NodeManager(s): 4 total, 4 active, 0 unhealthy, 0 decommissioned, 0 lost, 0 rebooted
    Queue(s) Applications: 2 running, 10 submitted, 0 pending, 8 completed, 0 killed, 0 failed
    Queue(s) Mem(GB): 97 available, 3 allocated, 0 pending, 0 reserved
    Queue(s) VCores: 58 available, 2 allocated, 0 pending, 0 reserved
    Queue(s) Containers: 2 allocated, 0 pending, 0 reserved
    
                      APPLICATIONID USER             TYPE      QUEUE   #CONT  #RCONT  VCORES RVCORES     MEM    RMEM  VCORESECS    MEMSECS %PROGR       TIME NAME
     application_1490377567345_0007 hive            spark  thriftsvr       1       0       1       0      1G      0G    1628407    2442611  10.00   18:20:20 Thrift JDBC/ODBC Server
     application_1490377567345_0006 hive            spark  thriftsvr       1       0       1       0      1G      0G    1628430    2442645  10.00   18:20:20 Thrift JDBC/ODBC Server
    
  3. 若要下載所有應用程式主機的 YARN 容器記錄,請使用下列命令:

    yarn logs -applicationIdn logs -applicationId <application_id> -am ALL > amlogs.txt
    

    此命令會建立名為 amlogs.txt 的記錄檔。

  4. 若要只下載最新應用程式主機的 YARN 容器記錄,請使用下列命令:

    yarn logs -applicationIdn logs -applicationId <application_id> -am -1 > latestamlogs.txt
    

    此命令會建立名為 latestamlogs.txt 的記錄檔。

  5. 若要下載前兩個應用程式主機的 YARN 容器記錄,請使用下列命令:

    yarn logs -applicationIdn logs -applicationId <application_id> -am 1,2 > first2amlogs.txt
    

    此命令會建立名為 first2amlogs.txt 的記錄檔。

  6. 若要下載所有 YARN 容器記錄,請使用下列命令:

    yarn logs -applicationIdn logs -applicationId <application_id> > logs.txt
    

    此命令會建立名為 logs.txt 的記錄檔。

  7. 若要下載特定容器的 YARN 容器記錄檔,請使用下列命令:

    yarn logs -applicationIdn logs -applicationId <application_id> -containerId <container_id> > containerlogs.txt
    

    此命令會建立名為 containerlogs.txt 的記錄檔。

延伸閱讀

如何? 檢查 Yarn 應用程式診斷資訊嗎?

Yarn UI 中的診斷功能可讓您檢視在 Yarn 上執行之應用程式的狀態和記錄。 診斷可協助您對應用程式進行疑難解答和偵錯,以及監視其效能和資源使用量。

若要檢視特定應用程式的診斷,您可以按下應用程式清單中的應用程式識別碼。 在應用程式詳細數據頁面上,您也可以查看已嘗試執行應用程式的所有嘗試清單。 您可以按下任何嘗試以查看更多詳細數據,例如嘗試識別碼、容器標識碼、節點識別碼、開始時間、完成時間和診斷

Screenshot showing Yarn Application Diagnostics.

如何? 針對 YARN 常見問題進行疑難解答?

Yarn UI 未載入

如果您的 YARN UI 未載入或無法連線,且會傳回「HTTP 錯誤 502.3 - 不正確的閘道」,它高度表示您的 Resource Manager 服務狀況不良。 若要降低此問題的風險,請依照下列步驟操作:

  1. 移至 [Ambari UI>YARN>摘要],並檢查是否只有使用中的 Resource Manager 處於 [已啟動] 狀態。 如果沒有,請嘗試重新啟動狀況不良或已停止的 Resource Manager 來減輕風險。
  2. 如果步驟 1 無法解決問題,請 SSH 作用中的 Resource Manager 前端節點,並使用 jstat -gcutil <Resource Manager pid> 1000 100檢查垃圾收集狀態。 如果您在幾秒鐘內看到 FGCT 大幅增加,表示 Resource Manager 在完整 GC 中忙碌中,而且無法處理其他要求。
  3. 移至Ambari UI>YARN>CONFIGS>進階並增加 。Resource Manager java heap size
  4. 在 Ambari UI 中重新啟動必要的服務。

這兩個資源管理員都處於待命狀態

  1. 檢查 Resource Manager 記錄檔,以查看是否有類似的錯誤存在。
Service RMActiveServices failed in state STARTED; cause: org.apache.hadoop.service.ServiceStateException: com.google.protobuf.InvalidProtocolBufferException: Could not obtain block: BP-452067264-10.0.0.16-1608006815288:blk_1074235266_494491 file=/yarn/node-labels/nodelabel.mirror
  1. 如果錯誤存在,則請確認是否有些檔案處於複寫狀態,或 HDFS 中是否有遺漏區塊。 您可以執行 hdfs fsck hdfs://mycluster/

  2. 執行 hdfs fsck hdfs://mycluster/ -delete 太強制清除 HDFS,並移除待命 RM 問題。 或者,在其中一個前端節點上執行 PatchYarnNodeLabel 來修補叢集。

下一步

如果您沒有看到您的問題,或無法解決您的問題,請瀏覽下列其中一個管道以取得更多支援:

  • 透過 Azure 社群支援獲得由 Azure 專家所提供的解答。

  • 連線至 @AzureSupport,這是用來改善客戶體驗的官方 Microsoft Azure 帳戶。 將 Azure 社群連線到正確的資源:解答、支援和專家。

  • 如果需要更多協助,您可在 Azure 入口網站提交支援要求。 從功能表列中選取 [支援] 或開啟 [說明 + 支援] 中樞。 如需詳細資訊,請參閱如何建立 Azure 支援要求。 Microsoft Azure 訂用帳戶包括訂用帳戶管理及帳務支援的存取權,而技術支援由其中一項 Azure 支援方案提供。