全部產品
Search
文件中心

E-MapReduce:Knox

更新時間:Jun 03, 2026

本文介紹如何在E-MapReduce上配置Knox,以通過公網方式訪問HDFS、YARN、Spark和Ganglia等Web UI頁面。

前提條件

已建立選擇了Knox服務的E-MapReduce,詳情請參見建立叢集

說明

如果您建立的叢集未選擇Knox服務,可以通過新增服務來添加。 

準備工作

設定安全性群組訪問

  1. 擷取您當前裝置的公網訪問IP地址。

    為了安全的訪問叢集組件,在設定安全性群組策略時,推薦您只針對當前的公網訪問IP地址開放。訪問IP地址,即可查看您當前的公網訪問IP地址。

  2. 添加連接埠:

    本文以添加8443連接埠為例介紹。

    1. 在EMR控制台叢集的基础信息頁面的安全地區,單擊集群安全组右側的連結。

    2. 安全组頁面,單擊入方向中的增加規則

    3. 訪問來源 填寫為上一步驟中擷取的公網訪問IP地址, 訪問目的 填寫為 8443/8443

    4. 單擊保存

重要
  • 為防止被外部的使用者攻擊導致安全問題,授權對象禁止填寫為0.0.0.0/0

  • 如果您建立叢集時,沒有掛載公網IP,可以在ECS控制台為Master節點上的ECS執行個體添加公網IP。

設定Knox使用者

訪問Knox時需要驗證身份,即需要輸入您的使用者名稱和密碼。Knox的使用者身分識別驗證基於LDAP,您可以使用叢集中Apache Directory Server的LDAP服務。

  • 方式一(推薦)

    在EMR on ECS頁面,單擊目的地組群的叢集名稱。單擊上方的用户管理頁簽,直接添加Knox訪問帳號,詳情請參見使用者管理

  • 方式二 :

    1. 通過SSH方式串連叢集,詳情請參見登入叢集

    2. 準備您的使用者資料,例如Tom。

      編輯users.ldif檔案。

      su knox
      vim /opt/apps/KNOX/knox-current/templates/users.ldif

      替換檔案中所有的emr-guestTom,替換EMR GUESTTom,設定userPassword的值為您自己的密碼。

    3. 執行以下命令,匯入使用者資料至LDAP。

      cd /opt/apps/KNOX/knox-current/templates
      sh ldap-sample-users.sh

訪問Web UI

訪問Web UI的詳情,請參見通過控制台訪問開源組件Web介面

常見問題

  • Q:Knox組件異常停止,啟動Knox的時候報錯Failed to start gateway: org.apache.hadoop.gateway.services.ServiceLifecycleException: Gateway SSL Certificate is Expired,具體資訊如下所示。

    s/ecm/sxxx.0.3/bin/.. as GATEWAY_HOME via system property.
    2021-08-03 16:37:35,794 INFO  knox.gateway (GatewayConfigImpl.java:init(346)) - Cookie scoping feature enabled: false
    2021-08-03 16:37:36,091 WARN  knox.gateway (RemoteAliasService.java:init(448)) - There is no registry client defined for remote configuration monitoring.
    2021-08-03 16:37:36,091 INFO  knox.gateway (RemoteAliasService.java:start(485)) - Remote Alias Service enabled
    2021-08-03 16:37:36,102 INFO  knox.gateway (JettySSLService.java:init(96)) - Credential store for the gateway instance found - no need to create one.
    2021-08-03 16:37:36,120 INFO  knox.gateway (JettySSLService.java:init(118)) - Keystore for the gateway instance found - no need to create one.
    2021-08-03 16:37:36,124 INFO  knox.gateway (JettySSLService.java:logAndValidateCertificate(148)) - The Gateway SSL certificate is issued to hostname: localhost.
    2021-08-03 16:37:36,125 INFO  knox.gateway (JettySSLService.java:logAndValidateCertificate(151)) - The Gateway SSL certificate is valid between: 3/9/20 4:12 PM and 3/9/21 4:12 PM.
    2021-08-03 16:37:36,136 FATAL knox.gateway (GatewayServer.java:main(162)) - Failed to start gateway: org.apache.knox.gateway.services.ServiceLifecycleException: Gateway SSL Certificate is Expired. Server will not start.
  • A:您可以按照以下步驟處理。

    1. 使用SSH登入叢集,詳情請參見登入叢集

    2. 執行以下命令,將之前錯誤的認證重新命名。

      sudo mv /opt/apps/KNOX/knox-current/data/security/keystores/gateway.jks /opt/apps/KNOX/knox-current/data/security/keystores/bak_gateway.jks
      說明

      您也可以將之前錯誤的認證移動到其他目錄。

    3. 啟動Knox。

      1. 在EMR控制台的集群服务頁面,選擇Knox服務地區的more > 启动

      2. 在彈出的對話方塊中,輸入執行原因,單擊确定

      3. 确认對話方塊中,單擊确定