Apache Mesos에 대해 알아보려고 한다.
Apache Mesos 즉, Mesos는 분산 시스템 커널(Distributed Systems Kernel)이다. (Linux Kernel의 원리와 비슷하다고 생각하면 된다.)
때문에 Mesos를 사용하면 클라우드 환경(+데이터센터)에서 Hadoop, Spark, Kafka, Elasticsearch와 같은 다양한 어플리케이션의 리소스 관리 및 스케줄링 등을 할 수 있다.
공식 문서에는 이외에도 여러 기능들을 소개하는데 간단히 나열해보면 다음과 같다.(자세한 내용은 공식 문서 참조)
- Linear Scalability
- High Availability
- APIS
- Web UI
- Pluggable Isolation
- Containers
- Two Level Scheduling
- Cross Platform
Mesos의 아키텍처는 아래 그림 처럼 구성되어 있다.
그림 1. Mesos Architecture
특히, Mesos는 Cluster Node에 존재하는 Agent를 관리하는 Master와 Agent에서 Task를 실행시키는 Mesos frameworks로 구성되어 있다.
- Master
각 Agent에게 리소스(CPU, RAM 등등)를 공유*해 준다. (Ex: <agent ID, resource1: amount1, resource2: amount2, ...>)
특히, Master는 정책(Organizational Policy, Ex: Fair Sharing, Strict Priority)에 따라 각 Framework에게 얼마만큼의 리소스를 제공해 줄지 결정한다. (물론 Mesos의 특징 중 하나로 새로운 정책을 Plug-in 할 수 있다.)
* Apache Mesos에서는 Resource Offer라고 명명한다.
- Framework
Master로부터 할당받은 리소스를 조정하는 Scheduler 및 Agent Node에서 내부 Task를 실행시키는 Executor로 구성된다.
때문에 Master가 각 Framework에게 자원을 제공하면, Framework의 Scheduler가 어떤 리소스(Master가 제공한 리소스 중)를 사용할지 결정한다. 이후 Task를 전달하고 Agent에서 Task를 실행시킨다.
그림 2. Resource Offer Example
그럼 위의 예시를 바탕으로 간단히 Resource Offer에 대해 알아보자. 그림 2는 Resource Offer의 내부 Flow를 표현한다.
1. Agent 1은 Master에게 현재 Agent 1은 4 CPUs 및 4 GB 메모리를 가지고 있다고 알린다. 이 후 Master는 Allocation Policy Module을 호출하여 Framework 1에 모든 자원을 제공해야 한다고 알린다. (즉, Agent 1에서 사용할 수 있는 자원을 Framework 1에서도 사용할 수 있다.)
2. Master에 의해 호출된 Allocation Policy Module은 Agent 1에서 사용할 수 있는 리소스 내역을 Framework 1에 보낸다.
3. Framework Scheduler는 Master에 현재 Agent에 2개의 Task가 있고, 첫 번째 Task는 <2 CPUs, 1 GB RAM>을 필요로하고 두 번째 Task는 <1 CPUs, 2 GB RAM>을 필요로 한다고 응답한다.
4. Master는 Executor를 실행시킬수 있을 만한 리소스를 할당한 Agent에 Task를 전달한다. 그리고 차례대로 Task를 실행시킨다.
그림 1에 비해 그림 2가 복잡할 수 있지만, 사실상 그림 2는 Mesos에서 Master와 Agent 간의 Flow를 조금더 자세히 표현한 것이다.
(Mesos의 구성요소 자체가 Master와 Agent에서 Task를 실행시키는 Framework로 구성되어 있기 때문)
참조
'IT > Framework' 카테고리의 다른 글
Apache Airflow (0) | 2019.09.16 |
---|---|
Prometheus (0) | 2019.09.09 |
댓글