本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
本主題說明如何為啟用 Apache Ranger 的 Amazon EMR 叢集設定 Apache Zeppelin
依預設,Zeppelin 設定了預設登入名稱和密碼,這在多租戶環境中並不安全。
若要設定 Zeppelin,請完成下列步驟。
-
修改身分驗證機制。
修改
shiro.ini
檔案以實作您偏好的身分驗證機制。Zeppelin 支援 Active Directory、LDAP、PAM 和 Knox SSO。如需詳細資訊,請參閱 Apache Zeppelin 的 Apache Shiro 身分驗證。 -
設定 Zeppelin 以模擬最終使用者
當您允許 Zeppelin 模擬最終使用者時,Zeppelin 提交的作業可以作為該最終使用者執行。將下列組態新增至
core-site.xml
:[ { "Classification": "core-site", "Properties": { "hadoop.proxyuser.zeppelin.hosts": "*", "hadoop.proxyuser.zeppelin.groups": "*" }, "Configurations": [ ] } ]
接下來,將下列組態新增至位於
/etc/hadoop/conf
的hadoop-kms-site.xml
:[ { "Classification": "hadoop-kms-site", "Properties": { "hadoop.kms.proxyuser.zeppelin.hosts": "*", "hadoop.kms.proxyuser.zeppelin.groups": "*" }, "Configurations": [ ] } ]
您也可以遵循在主控台中重新設定執行個體群組中的步驟,使用主控台將這些組態新增至 Amazon EMR 叢集。
-
允許 Zeppelin 以最終使用者身分執行 sudo
建立包含下列內容的檔案
/etc/sudoers.d/90-zeppelin-user
:zeppelin ALL=(ALL) NOPASSWD:ALL
-
修改解譯器設定,在自己的程序中執行使用者作業。
對於所有解譯器,將它們設定為在「隔離」程序中執行個體化「每個使用者」的解譯器。
-
修改
zeppelin-env.sh
將下列內容新增至
zeppelin-env.sh
,以便 Zeppelin 以最終使用者身分啟動解譯器:ZEPPELIN_IMPERSONATE_USER=`echo ${ZEPPELIN_IMPERSONATE_USER} | cut -d @ -f1` export ZEPPELIN_IMPERSONATE_CMD='sudo -H -u ${ZEPPELIN_IMPERSONATE_USER} bash -c'
將下列內容新增至
zeppelin-env.sh
,以將預設筆記本許可變更為僅對建立者唯讀:export ZEPPELIN_NOTEBOOK_PUBLIC="false"
最後,將下列內容新增至
zeppelin-env.sh
,以在第一條CLASSPATH
陳述式之後包含 EMR RecordServer 類別路徑:export CLASSPATH="$CLASSPATH:/usr/share/aws/emr/record-server/lib/aws-emr-record-server-connector-common.jar:/usr/share/aws/emr/record-server/lib/aws-emr-record-server-spark-connector.jar:/usr/share/aws/emr/record-server/lib/aws-emr-record-server-client.jar:/usr/share/aws/emr/record-server/lib/aws-emr-record-server-common.jar:/usr/share/aws/emr/record-server/lib/jars/secret-agent-interface.jar"
-
重新啟動 Zeppelin。
執行下列命令以重新啟動 Zeppelin:
sudo systemctl restart zeppelin