yarn resource-manager

25
APACHE HADOOP YARN - Resource Manager 編 -

Upload: seiya-mizuno

Post on 11-Jan-2017

64 views

Category:

Data & Analytics


0 download

TRANSCRIPT

Page 1: Yarn resource-manager

APACHE HADOOP YARN

- Resource Manager 編 -

Page 2: Yarn resource-manager

2

水野 聖也 ( みずの せいや )16 入社

なんとなく使っているけど、実はあまり良くわかっていない YARN について

はじめに

この本の 7 章を読んで勉強しようという会です !!

Page 3: Yarn resource-manager

3

YARN の概要ResourceManager がやっていること

Client とのやりとりNode Manager とのやりとりApplication Master とのやりとりSecurity 周り

• Client → ResourceManager• ApplicationMaster → NodeManager• ApplicationMaster → ResourceManager

目次

Page 4: Yarn resource-manager

4YARN の構成 (Platform Layer)

NodeManager

ResourceManager

NodeManager

YARN クラスタ

Client

リソースをコンテナとして管理

各ノードのコンテナの利用を管理

Page 5: Yarn resource-manager

5YARN の動作 (Framework Layer)

NodeManager

ResourceManager

NodeManager

YARN クラスタ

submit

Client

Application Master

Application Master を起動

Page 6: Yarn resource-manager

6YARN の動作 (Framework Layer)

NodeManager

ResourceManager

NodeManager

YARN クラスタ

Client

Application MasterApp の実行に必要な

メモリや CPU を要求コンテナリソースをスケジューリング

App 実行submit

※ クラスタモードの場合

※Application Master は Submit した App の数だけ 立ち上がります

Page 7: Yarn resource-manager

7Platform と Application

YARN Platform

App1

App2

App3

App4

1 : N

Page 8: Yarn resource-manager

8Client とのやりとり

Node Manager

Node Manager

YARN クラスタApplication

MasterApp の実行に必要なメモリや CPU を要求

App 実行

ResourceManager

submit

Client

Page 9: Yarn resource-manager

9Client とのやりとり

Client ServiceClient から Resource Manager の操作

• App の起動や終了

Administration Service管理用の操作

• ジョブキューの更新

• Cluster 内のノードリストの更新

Web Server8088 ポートでお馴染みの→

submit

Client ResourceManager

Page 10: Yarn resource-manager

10

submit

Client

ApplicationMaster とのやりとり

Node Manager

Node Manager

YARN クラスタ

App 実行

ResourceManager

Application MasterApp の実行に必要な

メモリや CPU を要求Application Master を起動

Page 11: Yarn resource-manager

11ApplicationMaster とのやりとり

ApplicationsManagerSubmit されたアプリケーションを管理

• リソースが足りるかのチェック

• ID はユニークかのチェック

• アプリケーションログの集約

ApplicationMaster LauncherApplicationMaster を起動,停止する

ResourceManager

ApplicationMaster

AMLaunche

r起動

Page 12: Yarn resource-manager

12ApplicationMaster とのやりとり

ApplicationMasters ServiceApplicationMaster からのリクエストを受け付ける.

• ApplicationMaster の登録,終了

• ApplicationMaster からのコンテナ取得,解放の要求をYarn Scheduler に流す.

ResourceManager

App の実行に必要なメモリや CPU を要求

ApplicationMaster

AMs Servic

e

YARNSchedule

rリソースコンテナのスケジューリング

登録

( スケジューリングの詳細は 8 章らしいです )

Page 13: Yarn resource-manager

13ApplicationMaster とのやりとり

ApplicationMaster Liveness MonitorApplicationMaster の死活監視

ResourceManager

heartbeatApplicationMaste

r2

AM Livenes

s Monitor

ApplicationMaster1

heartbeatAM1: 17:50:44AM2: 17:44:28

Last heartbeats

一定時間 ( デフォルト 10 分 )Heartbeat がないと死んだと見なす

Page 14: Yarn resource-manager

14ApplicationMaster とのやりとり

ApplicationMaster Liveness MonitorApplicationMaster の死活監視

ResourceManager

再起動 !!ApplicationMaste

r2

AM Livenes

s Monitor

ApplicationMaster1

死んだ場合…

別のコンテナで再起動をかけてくれる !!

Page 15: Yarn resource-manager

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

Page 16: Yarn resource-manager

16NodeManager とのやりとり

YARN クラスタ

Client

Application MasterApp の実行に必要な

メモリや CPU を要求

submit

NodeManager

NodeManager

ResourceManager

Page 17: Yarn resource-manager

17NodeManager とのやりとり

Resource Tracker ServiceNode List の管理 (Nodes-List Manager)

• クラスタへの登録,削除NodeManager の死活監視 (NodeManagers Liveness

Monitor)

NodeManager

ResourceManager

heartbeatResource Tracker Service

YARNSchedule

r

Node 上のリソースの状態も送っている ( 多分 )

各ノードのリソースの空き状況 ApplicationMaster のリソース要求

に基づきスケジューリングする

Page 18: Yarn resource-manager

18Application とコンテナの管理

ContainerAllocationExpirer ApplicationMaster が YARN Scheduler が生成したスケジュール通りに

リソースを利用しているかを監視 不当に長時間確保されているリソースを解放

NodeManager

ResourceManager

heartbeatResource Tracker Service

YARNSchedule

r

Node 上のリソースの状態も送っている ( 多分 )

heartbeat で送られてきたリソースの状態と作成したスケジュールを比較

ContainerAllocation

Expirer不当な利用なら解放

Page 19: Yarn resource-manager

Security 周り

Page 20: Yarn resource-manager

20

YARN の概要ResourceManager がやっていること

Client とのやりとりNode Manager とのやりとりApplication Master とのやりとりSecurity 周り

• Client → ResourceManager• ApplicationMaster → NodeManager• ApplicationMaster → ResourceManager

目次

Page 21: Yarn resource-manager

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

Page 22: Yarn resource-manager

22AM → NMContainer Token

悪い ApplicationMaster による不正なリソース使用を防止• Resource の確保とその使用が一致しているかを確認

ResourceManager

ApplicationMasterCT Secret

Manager

NodeManager

Nodes-List

Manager登録

Master Key

EncryptedContainer Token

コンテナ起動

EncryptedContainer Token

Page 23: Yarn resource-manager

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

Page 24: Yarn resource-manager

24AM → NMNMToken

Container Token で作られるのは AM と Container が1:1 対応のコネクション

NMToken では,効率化のため AM と NM 単位のコネクションを張る

ResourceManager

ApplicationMaster

NMTokenSecret

Manager

NodeManager

Nodes-List

Manager登録

Master Key

Encrypted

NMTokenEncrypte

dNMToken

Page 25: Yarn resource-manager

25AM → RMAMRMToken

ApplicationMaster からの Resource Request を認証

ResourceManager

ApplicationMaster

AMRMToken Secret

ManagerAMRMToken

AMRMTokenResource Request