LoginSignup
9
8

More than 5 years have passed since last update.

YARN queue ACL for Spark

Last updated at Posted at 2015-12-26

昨日書いた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_queueyarn.scheduler.capacity.root.acl_submit_applicationsというより上位の設定のデフォルト値が*(全許可)となっており、これを上記の例のように削除してやらないと、いくらdefaultキューの設定をいじってあげても制限が効かない。この挙動はどうなのよ?っていう話はYARN-1941で議論されているが、とりあえずこのまま放置される模様。

上記と同じ設定をAmbariで実施するならこんな感じだ。
左がrootの設定、右がdefaultキューの設定
ambari_queue_manager.jpg

Apache Rangerによるユーザー/グループの管理

ユーザーやグループの管理はApache Rangerに移管することもできる。Apache RangerはHadoopエコシステムに対して認可と監査を提供するコンポーネントで、UNIXユーザーやLDAPからユーザーやグループの動機をうけ、それらに対してHadoopの各コンポーネントへのアクセスの認可と、オペレーションログを管理してくれる。例えばYARNとRangerを組み合わせるのであれば以下のようなUIにおいて「どのキューに誰からのアクセスを許可するのか」といった設定をしてやる。
ranger.jpg

マルチテナントなSparkクラスタの運用

昨日のポストでSparkはYARNで動かすべきかというパートで「マルチテナントなSparkクラスタならYARNを使うことのメリットが出やすいのでは」というような話を書いたが、マルチテナントであれば当然ユーザーの数も増える。

そういった環境においては、capacity-scheduer.xmlの更新で利用ユーザーやグループを管理するのは運用の手間がかかる。こういったケースでは前述のApache Rangerを使って下記のような構成を取るのがベターだと言える。
ldap_with_spark.jpg

まとめ

YARNはキューのACLを持っているので、Sparkに対して「誰がアプリケーション登録できるのか」というユーザー/グループ単位での制御を提供してくれる。更にApache Rangerと組み合わせるとユーザー/グループの管理をLDAP等に外出しできる。なので、多数のユーザーが利用するようなSparkのクラスタにマッチする。

ということで、SparkのクラスタマネージャにYARNを選択することのひとつのメリットとして「マルチテナント環境の管理がしやすい」と言える。

Disclaimer

これは個人の意見であり、わたしの雇用者を代表するものではありません。

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8