brunch

You can make anything
by writing

C.S.Lewis

by 유윤식 Apr 12. 2019

Python: Spark with MESOS(2)

Mesos, 운영과 관리

우리는 잘 모르겠지만,

AWS, APPLE, AirBnB 등의 굴지 서비스 컴퍼니에서도 Mesos를 활용한다.


왜 사용할까?

뭔가 득이 있으니 사용하는 것 아닐까.


사실 간단하게 Mesos를 어떻게 사용하느냐 조차도 간단 할 수 없다.

앞선 글에서 소개한 Kafka, Spark, Machine Learning 모두다

절대 간단 할 수 없다.


제대로 사용하려면 각 프렘임웤이 탄생한 배경과 이유, 적용 사례들을 모두 확인해야 한다.


하지만 난 Mesos를 어떻게 사용하고 Spark와 함께 접목시킬 수 있는 간단한 테스트만을

보여주려고 한다.


Mesos는 사실 Zookeeper와 연관이 깊다.

우리는 이미 Kafka의 Zookeeper를 통해서 어느정도 친밀도를 유지해 왔다고 생각한다.


바로 Master Selection 이 주 역할이다.

Mesos의 Master를 선출하는데 Zookeeper를 사용한다.

만약(Master가 혹시라도... 뻑이 나가면...)을 대비하는 수단이다.


Mesos는 이렇게 Master가 존재한다.


Mesos Master

다양한 옵션이 있다.

그건 --help를 통해서 하나하나 꼼꼼하게 읽고 정리해아 한다.

Update가 되면 또 그렇게 읽고 정리하면 된다.

Config의 중요성은 이전에도 언급했다.


지금은 간단하게 Linux 위에서 Mesos를 통한 Spark 작업을 관리하는데 목적을 둔다.


Master 프로세스가 동작하고 있다.

뭐가 더 필요한가?


Zookeeper가 없다!!

사실 없어도 상관없다. 우리는 이걸 Standalone 이라고도 한다.


여러 Mesos Master가 있다면 Zookeeper가 필요하다.


Zookeeper는 연중 돌고있다. (가정 & 사실)

2개의 마스터를 zk 옵션을 통해서 실행한다.


Mesos Master 2 spec.

2개의 Mesos master가 실행되고 있다.

이미 Master(port 5040) 하나가 돌고 있고, 새로운 Master(port 5041)를 추가한다.

두개의 Master가 연결되었다.


이제 Agent를 활용한 Framework를 추가한다.

Agent는 실제 자원을 할당받고, 이 자원을 통해 스케쥴 로직에 따라서 어떤 작업을 수행할 수 있는지 알려준다.


먼저 Agent를 실행하면,


Mesos Agent 실행

리소스를 주목해야 한다. 저 리소스를 통해 스케쥴과 Communication 하며, Task를 수행할 수 있다.


준비는 끝났다.


바로 Spark에서 네트워크 트래픽 중 DHCP 관련 프로토콜에 대한 실시간 분석을 수행해보자.


조금은 친절하게 실행 명령어와 코드를 같이 올려본다.


spark-submit --master mesos://zk://192.168.2.12:2181/home --packages org.apache.kafka:kafka-clients:0.10.0.1,org.apache.spark:spark-sql-kafka-0-10_2.11:2.3.1 --supervise --executor-memory 1G --total-executor-cores 1 /home/david/env3.5/aiohttp_test/spark_kafka_dhcp.py


위 명령어를 연속으로 실행하면,


2개의 Framework
Resource 할당
Agent 리소스 상태

두개의 Framework가 등록되고 실제로 작동중임을 알 수 있다.


각 Framework이 CPU 1, MEM 1G 씩을 요구하였고,

스케쥴러에 따라서 두 Framework이 Agent로 할당되고,

필요한 자원을 통해서 분배 / 실행 하고 있다.


실제로는 이렇게 작동하는 로직이다.


끝.

작가의 이전글 Python: Spark with MESOS(1)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari