빅데이터 처리를 위한 오픈소스 병렬 분산 처리 플랫폼


반복처리와 연속으로 이루어지는 변환처리 의 고속화

스파크는 특정한 데이터 셋에 대하여 반복처리와 연속적으로 이루어지는 변환 처리를 고속화 할 목적으로 개발

스파크가 등장하기전에는 어땠을까?

데이터를 처리 하기 위해 맵리듀스(MapReduce)가 널리 활용 되어왔다.

맵리듀스는 기본적으로 입력 데이터를 스토리지에 읽고 다수의 머신에 분산처리를 수행한 결과를 스토리지에 저장한다. 이 처리가 끝나지않는 경우에는 데이터가

읽기 -> 분산처리 -> 저장 을 계속 보존하여 수행한다.

맵리듀스를 처리하면 중간결과가 항상 스토리지에 저장되서 데이터 크기가 커도 문제가 없이 동작하며, 장애발생시에도 쉽게 복구 된다.

하지만 특정 데이터의 부분집합에 대해 여러번 처리 하는 애플리케이션일 경우에는 맵리듀스로 효울적인 처리가 어렵다.

매번 중간 데이터를 다시 읽어야 하기 때문에다.이럴경우 디스크의 출력에 많은 리소스가 발생한다.

반면에 Spark는 연속적인 처리에서 불필요한 디스크와 네트워크 I/O가 발생하지 않도록 처리 한다.

처리 전체를 검토한 뒤에 그에 맞는 최적화 처리를 끼워 넣는 방식으로 설계하여 맵 리듀스 보다 고속으로 처리가 가능하다.


TODO

  1. 하둡,Spark 로 map과 filter programming 코드 구현하고 비교하기(궁금함)

시행착오에 적합한 환경제공

한 대의 머신으로 처리할 수 있는 용량보다 더 큰 데이터셋에 대해 시행 착오가 가능한 환경을 제공함

파이썬, Matlab, 등 다양한 애널리틱스 툴들은 데이터 해석을 한정적인 분석을 하기에 적합한 환경이다. 하지만 한 대 의 서버에서 처리할 수 있는 용량을 넘어서는 데이터셋에 대해서는 위의 소프트웨어들은 현실적이지 않음.

큰 데이터셋에 대해서는 스카일아웃과 같은 방법을 선택하고, 여러대의 머신으로 병렬 분산 처리를 수행할 필요가 있다.


Spark는 데이터셋을 추상적으로 다루기 위한 RDD(Resilient Distribued Dataset) 이라는 것이 있는데, RDD가 제공하는 API로 변환을 기술하기만 하면 처리가 되게 구현되어있다.


서로 다른 처리를 통합해 이용할 수 있는 환경

배치 처리, 스트림처리, SQL 처리 ,머신러닝, 그래프 처리 와 같은 형태의 애플리케이션을 하나의 환경에서 통합적으로 다룰 수 있다는 점

위의 다양한 형태의 어플리케이션을 구현하려면 각 프로그래밍 모델에 따라 애플리케이션을 별도로 구성을 해야했지만, 동일한 환경에서 사용이 가능하다.

예를 들면, SQL로 데이터 클랜징, 필터링 후에 머신러닝, 다시 SQL로 처리 하는 것을 구현해야한다고하면? 기존에는 각각의 미들웨어를 사용하여 처리하고 이동하고 복잡한구성을 만들수도 있었지만, 스파크 에서는 하나의 동일한 애플리케이션에서 구현하여 처리가 가능하다.

미들웨어의 병행에 운용하는 경우와 비교하여 운용 부담을 줄일 수 있다.


용어

Shuffle : 파티션의 위치가 변경되는 작업

+ Recent posts