全部產品
Search
文件中心

E-MapReduce:常見問題

更新時間:Sep 02, 2026

本文匯總了Ranger使用時的常見問題。

為什麼Ranger UserSync無法自動同步Linux/LDAP使用者?

  • 問題分析:該問題主要存在於EMR-3.23.0及之前的版本。

  • 解決方案:登入叢集的emr-header-1節點,手動修改設定檔/etc/ecm/ranger-usersync-conf/ranger-ugsync-site.xml中ranger.usersync.enabled的參數值為true,然後在EMR控制台重啟RangerUserSync組件。

如何將Unix使用者同步到Ranger UI的Policy中?

在同一個叢集中,無法同時將LDAP使用者和Unix使用者同步到Ranger UI的Policy中。如果您需要將Unix使用者同步到Ranger,請根據叢集是否部署了OpenLDAP服務,選擇以下方法將Unix使用者添加到Ranger UI的Policy中。

情境一:叢集未部署OpenLDAP

  1. 在EMR的Master節點執行以下命令,添加使用者。

    sudo adduser <username>
  2. 在EMR控制台Ranger服務的状态頁簽的组件列表地區,單擊RangerUserSync組件操作列的重启,以同步新使用者。

  3. 驗證同步結果。

    1. 登入Ranger UI,詳情請參見通過控制台訪問開源組件Web介面。

    2. 選擇Settings > Users/Groups/Roles。

    3. 在Users頁簽中,您可以查看是否有新建立的Unix使用者。

      例如,在步驟1中建立了test使用者。

情境二:叢集已部署OpenLDAP

如果叢集中已部署OpenLDAP服務,預設會同步LDAP使用者。此時需要手動修改Ranger配置參數以支援Unix使用者同步。具體操作步驟如下:

  1. 在EMR的Master節點執行以下命令,添加使用者。

    sudo adduser <username>
  2. 在EMR控制台Ranger服務的配置頁簽,搜尋並修改以下參數:

    • ranger.usersync.sync.source:設定參數值為unix。

    • ranger.usersync.source.impl.class:設定參數值為org.apache.ranger.unixusersync.process.UnixUserGroupBuilder。

  3. 按照控制台提示,儲存配置並重啟Ranger服務後,即可正常同步Unix使用者。

  4. 驗證同步結果。

    1. 登入Ranger UI,詳情請參見通過控制台訪問開源組件Web介面。

    2. 選擇Settings > Users/Groups/Roles。

    3. 在Users頁簽中,您可以查看是否有新建立的Unix使用者。

      例如,在步驟1中建立了test使用者。

EMR 小檔案過多導致 Hive on Spark 作業耗時過長如何解決?

當 OSS 上存在大量小檔案時,Ranger 對 OSS 的鑒權操作會顯著增加耗時,影響 HiveServer2 的執行效率。您可以通過以下任一方案解決該問題。

方案一:關閉 Ranger OSS 鑒權

  1. 登入 EMR 控制台,進入叢集詳情頁。

  2. 在叢集服務頁簽中,找到Ranger-plugin服務。

  3. 單擊Ranger-plugin服務的状态頁簽,進入服務概述地區。

  4. 在服務概述地區找到enableOSS開關,將其關閉。

  5. 重啟HiveServer2及 Spark ThriftServer等常駐組件。

方案二:最佳化 Hive 小檔案合并參數

在 Hive 服務配置中設定以下參數:

  • hive.merge.mapfiles=true(開啟 Map 階段小檔案合并)。

  • hive.merge.mapredfiles=true(開啟 Reduce 階段小檔案合并)。

  • hive.merge.size.per.task=256000000(合并後的目標檔案大小)。

Ranger 初始化出現 SSL 異常如何處理?

問題現象

EMR 叢集使用自建 MySQL 或 MariaDB 作為 Ranger 中繼資料庫,且資料庫已開啟 SSL (have_ssl=YES) 時,執行 Ranger 初始化 (setup) 報錯 javax.net.ssl.SSLException。典型報錯資訊為 javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)。其中,SSLHandshakeException 是 SSLException 的子類。

問題原因

Ranger 預設使用的 mysql-connector-java 5.1.47 與 MariaDB 的 SSL 握手協議不相容,導致 TLS 協商失敗。該驅動在關閉 SSL 的情況下可以正常串連資料庫,因此無需將其替換為 MySQL 8.x 版本的 connector。

解決方案

在 Ranger 的資料庫連接配置中禁用 SSL,即在 JDBC URL 中添加 useSSL=false 參數。需要同時修改以下兩處配置,只修改其中一處會導致 setup 仍讀取到舊的串連串:

  1. install.properties:將 db_ssl_enabled 設定為 false,並將 JDBC URL 修改為 jdbc:mysql://<host>:<port>/ranger?useSSL=false。

  2. ranger-admin-site.xml:將 ranger.jpa.jdbc.url 修改為 jdbc:log4jdbc:mysql://<host>:<port>/ranger?useSSL=false。

修改完成後,重新執行 Ranger setup 即可,無需重啟 MySQL 或 MariaDB。

說明

禁用 SSL 會降低資料庫連接的安全性,僅建議在測試環境中使用。生產環境請先評估安全影響,再決定是否採用該方案。