本文匯總了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(合并後的目標檔案大小)。