您可以安全的在 YARN 群集上運行 Samza 作業(yè)。YARN 使用 Kerberos 作為其認(rèn)證和授權(quán)機(jī)制。有關(guān) Hadoop 安全模式的詳細(xì)信息,請參閱此文章。
在安全的 YARN 群集上運行長期應(yīng)用程序的挑戰(zhàn)之一是其 token 更新策略。Samza 采取以下方法來管理 token 創(chuàng)建和更新。
默認(rèn)情況下,任何 HDFS 委托 token 的最長使用期限為7天(由 dfs.namenode.delegation.token.max-lifetimehdfs-site.xml 配置), token 通常每24小時更新一次(由dfs.namenode.delegation.token.renew-intervalhdfs-site.xml 配置)。如果應(yīng)用程序主機(jī)死機(jī),需要在7天后重啟?存儲在啟動器上下文中的原始 HDFS 委托 token 無論如何都是無效的。幸運的是,Samza 可以依靠 Resource Manager 來處理這種情況。有關(guān)詳細(xì)信息,請參閱以下配置部分:
當(dāng) ApplicationMaster 啟動時,它產(chǎn)生 SamzaAppMasterSecurityManager,它在其單獨的線程上運行。該 SamzaAppMasterSecurityManager 負(fù)責(zé)通過給定的 Kerberos 密鑰表定期登錄和定期再生 HDFS 委托 token 。每次運行后,它會在 HDFS 上的預(yù)定義的作業(yè)特定目錄上寫入新的 token 。該過程的頻率由下式確定 yarn.token.renewal.interval.seconds。
每個容器,一開始就運行一個 SamzaContainerSecurityManager。它從 HDFS 上的憑據(jù)文件讀取,并以相同的間隔刷新其授權(quán) token 。
yarn.kerberos.principal=user/localhost
yarn.kerberos.keytab=/etc/krb5.keytab.user
yarn.token.renewal.interval.seconds=86400
* When Application Master dies unexpectedly and needs a restart after 7 days (the default maximum lifespan a delegation token can be renewed).
* When the Samza job terminates and log aggregation is turned on for the job. Node managers need to be able to upload all the local application logs to HDFS.
1. Enable the resource manager as a privileged user in yarn-site.xml.
<property>
<name>yarn.resourcemanager.proxy-user-privileges.enabled</name>
<value>true</value>
</property>
2. Make `yarn` as a proxy user, in core-site.xml
<property>
<name>hadoop.proxyuser.yarn.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.yarn.groups</name>
<value>*</value>
</property>
更多建議: