本文匯總了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
-
在EMR的Master節點執行以下命令,添加使用者。
sudo adduser <username> -
在EMR控制台Ranger服務的状态頁簽的组件列表地區,單擊RangerUserSync組件操作列的重启,以同步新使用者。
-
驗證同步結果。
-
登入Ranger UI,詳情請參見通過控制台訪問開源組件Web介面。
-
選擇。
-
在Users頁簽中,您可以查看是否有新建立的Unix使用者。
例如,在步驟1中建立了test使用者。
-
情境二:叢集已部署OpenLDAP
如果叢集中已部署OpenLDAP服務,預設會同步LDAP使用者。此時需要手動修改Ranger配置參數以支援Unix使用者同步。具體操作步驟如下:
-
在EMR的Master節點執行以下命令,添加使用者。
sudo adduser <username> -
在EMR控制台Ranger服務的配置頁簽,搜尋並修改以下參數:
-
ranger.usersync.sync.source:設定參數值為unix。 -
ranger.usersync.source.impl.class:設定參數值為org.apache.ranger.unixusersync.process.UnixUserGroupBuilder。
-
-
按照控制台提示,儲存配置並重啟Ranger服務後,即可正常同步Unix使用者。
-
驗證同步結果。
-
登入Ranger UI,詳情請參見通過控制台訪問開源組件Web介面。
-
選擇。
-
在Users頁簽中,您可以查看是否有新建立的Unix使用者。
例如,在步驟1中建立了test使用者。
-
EMR 小檔案過多導致 Hive on Spark 作業耗時過長如何解決?
當 OSS 上存在大量小檔案時,Ranger 對 OSS 的鑒權操作會顯著增加耗時,影響 HiveServer2 的執行效率。您可以通過以下任一方案解決該問題。
方案一:關閉 Ranger OSS 鑒權
-
登入 EMR 控制台,進入叢集詳情頁。
-
在叢集服務頁簽中,找到
Ranger-plugin服務。 -
單擊
Ranger-plugin服務的状态頁簽,進入服務概述地區。 -
在服務概述地區找到
enableOSS開關,將其關閉。 -
重啟
HiveServer2及 SparkThriftServer等常駐組件。
方案二:最佳化 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 仍讀取到舊的串連串:
-
install.properties:將db_ssl_enabled設定為false,並將 JDBC URL 修改為jdbc:mysql://<host>:<port>/ranger?useSSL=false。 -
ranger-admin-site.xml:將ranger.jpa.jdbc.url修改為jdbc:log4jdbc:mysql://<host>:<port>/ranger?useSSL=false。
修改完成後,重新執行 Ranger setup 即可,無需重啟 MySQL 或 MariaDB。
禁用 SSL 會降低資料庫連接的安全性,僅建議在測試環境中使用。生產環境請先評估安全影響,再決定是否採用該方案。