Pyspark, Mesos, Management, Operation
파이썬 + 스파크 = 파이스파크(PySpark)
점점 배치 / 스트림 데이터에 대해 이미 축적된 데이터 기반의 간단한 머신러닝 서비스를 적용해 보려는
회사들이 많아지고 있다.
네트워크 데이터를 주로 다루고 있는 지금은 실시간 스트림 데이터를 Input으로
다양한 머신러닝 / 딥러닝을 통해서 분석, 탐지, 그리고 예측을 수행하고 있다.
관심을 가지고 데이터 처리에서 조금만 공부하고 업무에 임하다보면,
YARN CLUSTER 기반의 SPARK 프로젝트들이 주를 이루고 있음을 안다.
하지만,
오늘 내가 소개하고(1) 구현하는 모습(2)을 공유하려고 하는 것은,
바로 'MESOS' 라는 프레임워크이다.
'MESOS'가 무엇이냐!
즉, 전체 리소스 관리와 어플리케이션 제공을 주로 하고 있다고 이해하면 된다.
실제로 초당 3,000개 가량의 로그의 길이를 세어보는 단순 로직을 Spark를 통해서 수행한다고 치자.
얼마의 Resource를 줘야 잘 돌아가는 것일까?
모른다.
로그가 시시때때(?)로 변하고 있어서 더 모른다.
그럼 모르니까 처음부터 메모리로 100GB를 주어야 할까?
안된다.
100GB가 없다...
실제로 Spark에서 배치와 스트림 데이터에 대해서 다양한 로직과 서비스가 함께 돌아간다.
Cluster 개념과 다른 Application과의 연결도 신경써야 한다.
이때!
'MESOS'를 사용하자.
MESOS 공식 사이트(http://mesos.apache.org/documentation/latest/architecture/) 참고
사실,
위의 그림만 봐도 '아!' 하고 대략 머릿속에 그림이 그려진다.
점점 늘어가는 서비스를 지탱하는 작은 실행 Task 들을 생각해보면
힘들다.
더구나 Resource 까지 직접 관리해야 한다면?
힘들다.
솔직히!
써봐야 좋은지도 알 수 있다.
다행히 설치하고, 사용하고, 익히고, 배우고, 적용하고 단계를 통해서
직접 경험하는 일이 꼭 필요하다.
대략적인 소개로 첫 번째 'MESOS' 소개는 접는다.
** 위 Architecture에 대해서만 잠시 설명하자면 **
마스터 - 에이젼트 사이에서 발생하는 통신에 의해서 Task를 수행 한다.
마스터는 에이젼트로부터 얼마만큼의 리소스를 가지고 있는지 듣는다.
그 리소스를 필요한 Task를 수행하는데 사용 할 수 있도록 할당한다.
해당 Task를 에이젼트로 전달하여 수행한다.
자원이 계속 남아 있으면 또 다른 Task를 수행하려는 곳으로부터 전달 받을 수 있다.