昨日書いたSpark and YARNで、下記のようなことを書いたので少し検証してみた。
YARNで強化するSparkのセキュリティ対策
Spark自体が提供するセキュリティ対策のほかに、YARNのCapacity Schedulerを使うことによって、RMに対してアプリケーション登録時に認証をかけることができるようになる。ちょっと時間切れになってきたので、詳細はまたあとで追記。
YARNのスケジューラが持つキュー
YARNのCapacity SchedulerとFair Schedulerはアプリケーションの登録を受け付けるキューをもっており、これらはUNIXユーザー/グループベースのACLを掛けることができる。このことによりSparkアプリケーションを実行するユーザーごとにアプリケーションの登録可否を制御できる。Capacity Schedulerの場合、複数のキューを持つことができるので、キュー単位でのユーザーの利用制限を掛けることもできる。
以下はCapacity Schedulerの設定例。defaultという名前のキューに対してyutaというUNIXユーザーがアプリケーションを登録したりkillできるようにするには、capacity-scheduler.xmlに以下のような設定をしてやる。
<property>
<name>yarn.scheduler.capacity.root.acl_administer_queue</name>
<value></value>
</property>
<property>
<name>yarn.scheduler.capacity.root.acl_submit_applications</name>
<value></value>
</property>
<property>
<name>yarn.scheduler.capacity.root.default.acl_administer_queue</name>
<value>yuta</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.default.acl_submit_applications</name>
<value>yuta</value>
</property>
注意すべき点としてyarn.scheduler.capacity.root.acl_administer_queue
とyarn.scheduler.capacity.root.acl_submit_applications
というより上位の設定のデフォルト値が*(全許可)
となっており、これを上記の例のように削除してやらないと、いくらdefaultキューの設定をいじってあげても制限が効かない。この挙動はどうなのよ?っていう話はYARN-1941で議論されているが、とりあえずこのまま放置される模様。
上記と同じ設定をAmbariで実施するならこんな感じだ。
左がrootの設定、右がdefaultキューの設定
Apache Rangerによるユーザー/グループの管理
ユーザーやグループの管理はApache Rangerに移管することもできる。Apache RangerはHadoopエコシステムに対して認可と監査を提供するコンポーネントで、UNIXユーザーやLDAPからユーザーやグループの動機をうけ、それらに対してHadoopの各コンポーネントへのアクセスの認可と、オペレーションログを管理してくれる。例えばYARNとRangerを組み合わせるのであれば以下のようなUIにおいて「どのキューに誰からのアクセスを許可するのか」といった設定をしてやる。
マルチテナントなSparkクラスタの運用
昨日のポストでSparkはYARNで動かすべきかというパートで「マルチテナントなSparkクラスタならYARNを使うことのメリットが出やすいのでは」というような話を書いたが、マルチテナントであれば当然ユーザーの数も増える。
そういった環境においては、capacity-scheduer.xmlの更新で利用ユーザーやグループを管理するのは運用の手間がかかる。こういったケースでは前述のApache Rangerを使って下記のような構成を取るのがベターだと言える。
まとめ
YARNはキューのACLを持っているので、Sparkに対して「誰がアプリケーション登録できるのか」というユーザー/グループ単位での制御を提供してくれる。更にApache Rangerと組み合わせるとユーザー/グループの管理をLDAP等に外出しできる。なので、多数のユーザーが利用するようなSparkのクラスタにマッチする。
ということで、SparkのクラスタマネージャにYARNを選択することのひとつのメリットとして「マルチテナント環境の管理がしやすい」と言える。
Disclaimer
これは個人の意見であり、わたしの雇用者を代表するものではありません。