Post on 11-Jan-2017
APACHE HADOOP YARN
- Resource Manager 編 -
2
水野 聖也 ( みずの せいや )16 入社
なんとなく使っているけど、実はあまり良くわかっていない YARN について
はじめに
この本の 7 章を読んで勉強しようという会です !!
3
YARN の概要ResourceManager がやっていること
Client とのやりとりNode Manager とのやりとりApplication Master とのやりとりSecurity 周り
• Client → ResourceManager• ApplicationMaster → NodeManager• ApplicationMaster → ResourceManager
目次
4YARN の構成 (Platform Layer)
NodeManager
ResourceManager
NodeManager
YARN クラスタ
Client
リソースをコンテナとして管理
各ノードのコンテナの利用を管理
5YARN の動作 (Framework Layer)
NodeManager
ResourceManager
NodeManager
YARN クラスタ
submit
Client
Application Master
Application Master を起動
6YARN の動作 (Framework Layer)
NodeManager
ResourceManager
NodeManager
YARN クラスタ
Client
Application MasterApp の実行に必要な
メモリや CPU を要求コンテナリソースをスケジューリング
App 実行submit
※ クラスタモードの場合
※Application Master は Submit した App の数だけ 立ち上がります
7Platform と Application
YARN Platform
App1
App2
App3
App4
1 : N
8Client とのやりとり
Node Manager
Node Manager
YARN クラスタApplication
MasterApp の実行に必要なメモリや CPU を要求
App 実行
ResourceManager
submit
Client
9Client とのやりとり
Client ServiceClient から Resource Manager の操作
• App の起動や終了
Administration Service管理用の操作
• ジョブキューの更新
• Cluster 内のノードリストの更新
Web Server8088 ポートでお馴染みの→
submit
Client ResourceManager
10
submit
Client
ApplicationMaster とのやりとり
Node Manager
Node Manager
YARN クラスタ
App 実行
ResourceManager
Application MasterApp の実行に必要な
メモリや CPU を要求Application Master を起動
11ApplicationMaster とのやりとり
ApplicationsManagerSubmit されたアプリケーションを管理
• リソースが足りるかのチェック
• ID はユニークかのチェック
• アプリケーションログの集約
ApplicationMaster LauncherApplicationMaster を起動,停止する
ResourceManager
ApplicationMaster
AMLaunche
r起動
12ApplicationMaster とのやりとり
ApplicationMasters ServiceApplicationMaster からのリクエストを受け付ける.
• ApplicationMaster の登録,終了
• ApplicationMaster からのコンテナ取得,解放の要求をYarn Scheduler に流す.
ResourceManager
App の実行に必要なメモリや CPU を要求
ApplicationMaster
AMs Servic
e
YARNSchedule
rリソースコンテナのスケジューリング
登録
( スケジューリングの詳細は 8 章らしいです )
13ApplicationMaster とのやりとり
ApplicationMaster Liveness MonitorApplicationMaster の死活監視
ResourceManager
heartbeatApplicationMaste
r2
AM Livenes
s Monitor
ApplicationMaster1
heartbeatAM1: 17:50:44AM2: 17:44:28
Last heartbeats
一定時間 ( デフォルト 10 分 )Heartbeat がないと死んだと見なす
14ApplicationMaster とのやりとり
ApplicationMaster Liveness MonitorApplicationMaster の死活監視
ResourceManager
再起動 !!ApplicationMaste
r2
AM Livenes
s Monitor
ApplicationMaster1
死んだ場合…
別のコンテナで再起動をかけてくれる !!
YARN-Client vs YARN-Cluster 15
Client Mode
Cluster Mode
submitResourceManag
erApplicationMast
er
submit
Driver Process
ResourceManager
ApplicationMaster
Driver Process
❌ SPOF
❌Driver
Process
Fail Over!
ApplicationMaster
16NodeManager とのやりとり
YARN クラスタ
Client
Application MasterApp の実行に必要な
メモリや CPU を要求
submit
NodeManager
NodeManager
ResourceManager
17NodeManager とのやりとり
Resource Tracker ServiceNode List の管理 (Nodes-List Manager)
• クラスタへの登録,削除NodeManager の死活監視 (NodeManagers Liveness
Monitor)
NodeManager
ResourceManager
heartbeatResource Tracker Service
YARNSchedule
r
Node 上のリソースの状態も送っている ( 多分 )
各ノードのリソースの空き状況 ApplicationMaster のリソース要求
に基づきスケジューリングする
18Application とコンテナの管理
ContainerAllocationExpirer ApplicationMaster が YARN Scheduler が生成したスケジュール通りに
リソースを利用しているかを監視 不当に長時間確保されているリソースを解放
NodeManager
ResourceManager
heartbeatResource Tracker Service
YARNSchedule
r
Node 上のリソースの状態も送っている ( 多分 )
heartbeat で送られてきたリソースの状態と作成したスケジュールを比較
ContainerAllocation
Expirer不当な利用なら解放
Security 周り
20
YARN の概要ResourceManager がやっていること
Client とのやりとりNode Manager とのやりとりApplication Master とのやりとりSecurity 周り
• Client → ResourceManager• ApplicationMaster → NodeManager• ApplicationMaster → ResourceManager
目次
21Client → ResourceManagerClient Service
Kerberos 認証による Access Control
ResourceManager delegation Token を使った認証
Client
ResourceManager
Kerberos
Client
ResourceManager
Kerberos
1. 認証
2.request 3. Access Control
1. 認証2.Delegation Token 発行3.Delegation
Token 送信
Client
5. Access Control4.request
Application ACL
Manager
Application ACL
Manager
22AM → NMContainer Token
悪い ApplicationMaster による不正なリソース使用を防止• Resource の確保とその使用が一致しているかを確認
ResourceManager
ApplicationMasterCT Secret
Manager
NodeManager
Nodes-List
Manager登録
Master Key
EncryptedContainer Token
コンテナ起動
EncryptedContainer Token
23AM → NMContainer Token
悪い ApplicationMaster による不正なリソース使用を防止• Resource の確保とその使用が一致しているかを確認
NodeManager
EncryptedContainer Token
Container ID NodeManager address
• 割り当てと違う NodeManager で実行しようとしていないか
Application Submitter• コンテナに送信したファイル等の
Access Control Resource
• 割り当てたリソースと使うリソースが同じか
Expiry timestamp Master key ID ResourceManager ID
24AM → NMNMToken
Container Token で作られるのは AM と Container が1:1 対応のコネクション
NMToken では,効率化のため AM と NM 単位のコネクションを張る
ResourceManager
ApplicationMaster
NMTokenSecret
Manager
NodeManager
Nodes-List
Manager登録
Master Key
Encrypted
NMTokenEncrypte
dNMToken
25AM → RMAMRMToken
ApplicationMaster からの Resource Request を認証
ResourceManager
ApplicationMaster
AMRMToken Secret
ManagerAMRMToken
AMRMTokenResource Request