Mesos, 운영과 관리
우리는 잘 모르겠지만,
AWS, APPLE, AirBnB 등의 굴지 서비스 컴퍼니에서도 Mesos를 활용한다.
왜 사용할까?
뭔가 득이 있으니 사용하는 것 아닐까.
사실 간단하게 Mesos를 어떻게 사용하느냐 조차도 간단 할 수 없다.
앞선 글에서 소개한 Kafka, Spark, Machine Learning 모두다
절대 간단 할 수 없다.
제대로 사용하려면 각 프렘임웤이 탄생한 배경과 이유, 적용 사례들을 모두 확인해야 한다.
하지만 난 Mesos를 어떻게 사용하고 Spark와 함께 접목시킬 수 있는 간단한 테스트만을
보여주려고 한다.
Mesos는 사실 Zookeeper와 연관이 깊다.
우리는 이미 Kafka의 Zookeeper를 통해서 어느정도 친밀도를 유지해 왔다고 생각한다.
바로 Master Selection 이 주 역할이다.
Mesos의 Master를 선출하는데 Zookeeper를 사용한다.
만약(Master가 혹시라도... 뻑이 나가면...)을 대비하는 수단이다.
Mesos는 이렇게 Master가 존재한다.
다양한 옵션이 있다.
그건 --help를 통해서 하나하나 꼼꼼하게 읽고 정리해아 한다.
Update가 되면 또 그렇게 읽고 정리하면 된다.
Config의 중요성은 이전에도 언급했다.
지금은 간단하게 Linux 위에서 Mesos를 통한 Spark 작업을 관리하는데 목적을 둔다.
Master 프로세스가 동작하고 있다.
뭐가 더 필요한가?
Zookeeper가 없다!!
사실 없어도 상관없다. 우리는 이걸 Standalone 이라고도 한다.
여러 Mesos Master가 있다면 Zookeeper가 필요하다.
Zookeeper는 연중 돌고있다. (가정 & 사실)
2개의 마스터를 zk 옵션을 통해서 실행한다.
2개의 Mesos master가 실행되고 있다.
이미 Master(port 5040) 하나가 돌고 있고, 새로운 Master(port 5041)를 추가한다.
두개의 Master가 연결되었다.
이제 Agent를 활용한 Framework를 추가한다.
Agent는 실제 자원을 할당받고, 이 자원을 통해 스케쥴 로직에 따라서 어떤 작업을 수행할 수 있는지 알려준다.
먼저 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
위 명령어를 연속으로 실행하면,
두개의 Framework가 등록되고 실제로 작동중임을 알 수 있다.
각 Framework이 CPU 1, MEM 1G 씩을 요구하였고,
스케쥴러에 따라서 두 Framework이 Agent로 할당되고,
필요한 자원을 통해서 분배 / 실행 하고 있다.
실제로는 이렇게 작동하는 로직이다.
끝.