리소스 매니저 구성요소


  1. 리소스 매니저와 클라이언트간의 통신하는 구성요소

  2. 리소스 매니저와 노드들을 연결하는 컴포넌트

  3. 응용 프로그램별 ApplicationMasters와 통신하는 구성요소

  4. ResoureManager의 핵심 – 스케쥴러와 관련된 구성요소

  5. TokenSecretManagers (for security)

  6. DelegationTokenRenewer


 

 리소스 매니저와 클라이언트간의 통신하는 구성요소들


ClientServie

리소스 매니저의 클라이언트 인터페이스입니다이 컴포넌트는 애플리케이션 제출애플리케이션 종료큐 정보 획득클러스터 상태 등과 같은 작업을 포함하여 클라이언트에서 리소스 매니저로 오는 모든 RPC 인터페이스를 관리합니다.

 

AdminService

관리자의 요청(Admin request)이 일반 사용자의 요청 때문에 실행되지 못하는 경우가 없도록 작업 명령에 더 높은 우선 순위(Higher priority)를 부여합니다노드-목록(node-list)을 새로 고치거나큐의 설정(Queues’ onfiguration) 등과 같은 관리자 작업(Admin Operation)은 별도의 인터페이스를 통하여 제공합니다.

 

 

 리소스 매니저와 노드들을 연결하는 컴포넌트들


ResourceTrakerService

이 컴포넌트는 모든 노드에서 오는 RPC에 응답을 합니다새로운 노드를 등록하거나유효하지 않거나 사용이 중지된 노드로부터의 연결을 거부하거나노드의 하트비트(Heartbeat) 획득해서 얀 스케쥴러(YarnSheduler)에게 전달합니다리소스 트랙커 서비스(ResoureTrakerServie) NMLivelinessMonitor  NodesListManager와 긴말하게 협력합니다.

 

NMLivelinessMonitor

정상적으로 동작하는 노드들을 추적하고특히죽은 노드를 내리기 위해서 이 구성요소는 각 노드의 마지막 하트비트(Heartbeat) 시간을 추적합니다노드들이 설정된 간격(기본 10안에 하트비트를 보내지 않으면 죽은것으로 간주하고리소스 매니저가 죽은 노드의 사용을 만료시킵니다만료된 노드에서 현재 수행중인 모든 컨테이너는 죽은것으로 표시되며그 노드에게는 새로운 컨테이너를 배정하지 않습니다.

 

NodesListManager

유효하거나 제외된 노드들의 집합입니다. yarn.resourcemanager.nodes.inlude-path yarn.resouremanager.nodes.exclude-path를 통해 지정된 호스트 설정 파일을 읽고그 파일를 기반으로 노드의 초기 목록을 생성을 담당합니다또한 시간이 진행됨에 따라 폐기하는 노드를 추적합니다.

 

 

 응용 프로그램별 ApplicationMasters와 통신하는 구성요소


AppliationMasterServie

모든 ApplicationMasters와의 RPC에 응답하는 구성 요소입니다그것은 새로운 ApplicationMasters의 등록과 종료되는ApplicationMasters에서의 종료/해제 요청동작중인 모든 ApplicationMasters에서의 컨테이너 할당/해제 요청을 받아 YarnSheduler로 전송하는 역할을 담당합니다이 요소는 아래에 설명된 AMLivelinessMonitor와 밀접하게 연관되어 있습니다.

 

AMLivelinessMonitor

살아 있는 ApplicationMasters의 리스트와 정지/응답하지 않는 ApplicationMasters의 리스트에 대한 관리를 돕기 위해서이 구성 요소는 각 ApplicationMasters의 추적과 마지막 하트비트(Heartbeat) 시간을 유지합니다미리 정의된 간격(기본 10내에 하트비트를 보내지 않는 ApplicationMasters는 정지한 것으로 여기고, ResourceManager에 의해서 만료됩니다만료된 ApplicationMasters에서 현재 동작하거나/할당된 모든 컨테이너는 죽은(dead) 것으로 표시됩니다. ResoureManager은 동일한 ApplicationMasters을 새로운 컨테이너에 동작시키기 위해서 스케쥴합니다이러한 동작은 최대 4번 시도될 수 있습니다.

 

 

 ResoureManager의 핵심 – 스케쥴러와 관련된 구성 요소들


ApplicationsManager

제출된 응용프로그램의 컬렉션(Colletion, 집합)을 유지 관리할 책임이 있습니다또한 웹 UI나 응용 프로그램의 명령행을 통해서 사용자가 요청할 수 있도록 응용 프로그램의 캐시를 유지합니다.

 

ApplicationACLsManager

사용자가 클라이언트(Client) APIs와 관리 요청(Admin requests) APIs를 사용하려면 권한이 부여된 사용자만 접근할 수 있는 문(Gate)이 필요합니다이 구성요소는 응용 프로그램 당 ACL(Access-Control-List)의 목록을 유지하고응용 프로그램의 상태를 보거나 응용 프로그램을 중단과 같은 요청을 받을 때마다 권한을 적용합니다.  

 

ApplicationMasterLauncher

몇가지 이유로 인하여 종료된 이전 Application Master의 시도들과 새로 제출된 응용 프로그램의Application Master를 개시하기 위한 스레드 풀(Thread-pool)를 관리합니다또한 응용 프로그램이 정상적으로 또는 강제적으로 종료되었을 경우에 Application Master를 마무리 할 책임이 있습니다.

 

YarnScheduler

스케쥴러는 용량(Capacity), (Queue) 등의 제약사항에 따라서 다양하게 실행되는 응용 프로그램에게 자원(Resource)을 할당하는 책임이 있습니다또한 메모리, CPU, 디스크네트워크 등과 같은 응용 프로그램의 자원 요구 사항을 기반으로 스케쥴링 기능을 수행합니다스케쥴러 기능은 현재 메모리만 제공하고 있으며, CPU에 대한 지원도 곧 완료될 예정입니다.

 

ContainerAllocationExpirer

이 구성요소는 모든 할당된 컨테이너들이 Application Master들을 통해서 사용되고 있으며이후에 컨테이너가 해당되는 노드 매니저에서 실행되고 있는지 보장할 책임이 있습니다. Application Master들은 신뢰할 수 없는 사용자 코드를 실행하고잠재적으로 그들을 사용하지 않고 할당을 유지할 수 있으며이로 인하여 클러스터를 충분히 활용하지 못하는 원인이 될수 있습니다.

 

이러한 문제를 해결하기 위해서, ontainerAllocationExpirer는 해당하는 노드 매너저에서 사용되지 않는 할당된 컨테이너들의 목록을 유지합니다어떠한 컨테이너이든 해당하는 노드 매니저가 정해진 시간(기본 10안에 Resource Manager에게 컨테이너의 동작 상태를 보고하지 않으면 컨테이너가 정지했다고 간주하고 Resource Manager에 의해서 만료됩니다.

 

 

 TokenSecretManagers (for security)

리소스 매니저는 토큰(Token)을 관리하고다양한 RPC 인터페이스에 대한 요청을 인증/권한부여 하는데 사용되는 비밀키(Secret-key)들을 청구하는 SecretManager의 콜렉션을 가지고 있습니다얀 보안에 대한 미래의 글에는 토큰비밀키, Secret-Manager들에 대한 상세한 설명을 포함할 것이며지금은 아래에 간략하게 요약만 합니다.

 

ApplicationTokenSeretManager

리소스 매니저 스케쥴링 요청을 보내는 임의의 프로세스를 피하기 위해서리소스 매니저는 애플리케이션 토큰(ApplicationTokens)을 사용합니다이 구성요소는 응용 프로그램이 종료될 때까지 메모리에 지역적으로 토큰을 저장하고유효한 Application Master 처리에서 발생하는 요청들을 인증하는데 사용됩니다.

 

ContainerTokenSecretManager

컨테이너 토큰(ContainerToken)은 리소스 매니저가 특정 노드에 존재하는 컨테이너를 관리하고 있는 Application Master에게 발급한 특별한 토큰입니다. ContainerTokenSecretManager ContainerToken을 위한 SecretManager입니다.

 

ContainerToken은 컨테이너가 할당된 해당 노드 매니저와의 연결을 생성하는 Application Master에 의해서 사용됩니다이 구성요소는 리소스 매니저 특정이고기본 마스터와 비밀키를 추적하고 가끔 키들을 롤백(Roll)합니다.

 

RMDelegationTokenSecretManager

ResourcManager specific delegation-token secret-manager. 이 구성요소는 리소스 매니저와 인증되지 않은 프로세스로 작업하길 원하는 클라이언트에게 위임 토큰(Delegation token)을 생성할 책임이 있습니다.

 

 

 DelegationTokenRenewer

보안 모드에서 리소스 매니저는 Kerberos 인증이며응용 프로그램을 대신하여 파일 시스템 토큰을 갱신하는 서비스를 제공합니다이 구성요소는 응용 프로그램이 실행되는 동안 그리고 토큰이 더 이상 갱신할 수 없을때까지 제출된 응용프로그램의 토큰을 갱신합니다.

 

 

결론

얀에서 리소스 매니저는 주로 스케쥴링 작업에 국한됩니다예를 들면 단지 경쟁 응용 프로그램들 간의 시스템에서 사용 가능한 자원을 중재하고 응용프로그램들의 상태 관리는 관심을 가지지 않습니다이 때문에 위에서 설명한 모듈 방식과 더불어 분명한 책임의 분리 그리고 이전 포스트에서 설명한 강력한 스케쥴러 API로 인하여리소스 매니저는 확장성과 다른 프로그래밍 패러다임에 대한 지원등 가장 중요한 설계 요구 사항을 충족할 수 있습니다서로 다른 정책 제한을 허용하기 위해서 리소스 매니저는 플러거블(Pluggable)하고 다른 알고리즘 사용을 허가합니다.

 

리소스 매니저 ]

 

 출처 : http://ryufree.tistory.com/m/230?category=252660


'Hadoop ecosystem > YARN' 카테고리의 다른 글

YARN과 MapReduce  (0) 2018.04.11
노드 매니저 구성 요소  (0) 2018.04.10
YARN 구조  (0) 2018.04.10
YARN 개념  (0) 2018.04.10

+ Recent posts