본문 바로가기

Study/Python

파이썬으로 병렬처리 하기 1 (Parallel Python)

몇가지 처리해야할 작업이 있습니다. 


몇 가지 케이스에 대해 계속 테스트를 해보고 있지만. 이걸 Hadoop MapReduce로 처리하는것은 정말 성능이 안나오더군요. 흔히 말한는 반복적인 작업... 이걸 Storm, 또는 Spark를 통해 해결해 보고 싶지만. 현재 사정상 신규아키텍처를 도입하는데 문제가 있어서... 


물론,,, 현재 환경은 HDP(Hortonworks Data Platform)2.3 이기 때문에, 설치하거나 실행하는데, 문제는 아닙니다. Storm 같은경우 Topology를 만들면 되겠지만.. 약간 제가 생각하는 작업에는 불리할것 같고.. Spark쪽은 아직 제가 지식이 부족해서 시간대비 성과가 부족할것 같은 생각 때문입니다.


물론, 전 아직까지는 언어중에 Java가 좋지만, 요즘 왠만한 귀찮은 작업들은 Python으로 하고 있었는데(사실 과거에는 Perl도 배워보고 싶엇지만..) 너무 강력해서 계속 쓰게 되네요. 솔찍히 Java로 10줄 만들걸 파이선으로 3줄이면 표현이 되거든요..


사실 이렇게 하다가 고민이 생겼습니다. 다중 노드(현재 저 같은 경우는 10노드 + 추가 2노드) Produce Consumer 패턴?으로 로 작업을 병렬로 처리해보고 싶었는데, 이걸 프로그램으로 하나하나 만들기도 모하고,, 이러저런 고민이 많았는데,,


파이선이 해결해 주었네요 http://www.parallelpython.com/ 몇가지 고민은 Master Node에서 Slave 노드로 작업을 어떻게 넘겨주느냐 여부인데,, 자체적인 Queue가 있는것인지, 아님 외부 Queue를 이용해야하는지 봐봐야겠네요..


지금 RabbitMQ와 Kafaka를 동시에 보고 있는데,,, 제가 제대로 알고 있다면 Kafakfa는 Consumer에게 전달된 메세지가 어떤것인지에 대한 보장??꼭 UDP같은 성격이라... 의 문제가 있어서... 텍스트들을 보다 보면,, 케이스에 따라서는 RabbitMQ를 추천하시더군요 


일단은 이번포스팅의 목적은 파이선에서 병렬 처리를 쉽게 해주는 방법이 있는데,, 그것은 parallel python 입니다.


파이썬 짱짱,,