라벨이 Spark인 게시물 표시

(Spark) 스파크 처리 모델(RDD)

이미지
1. RDD 의 구조와 특징 RDD는 대량의 데이터를 요소로 가지는 분산 컬렉션이다. 거대한 배열과 리스트 등의 자료구조를 생각하면 이해하기 쉽다. RDD는 여러 머신으로 구성된 클러스터 환경에서  분산처리를 위해 설계되었고, 내부는 파티션이라는 단위로 나뉜다. 스파크는 파티션이 분산처리 단위이다. RDD를 파티션 단위로 여러머신에서 처리하므로 한 대의 머신으로 처리할 수 있는 것보다 더 큰 데이터를 다룰 수 있다 사용자는 예를들어 HDFS 등의 분산 파일 시스템에 있는 파일 내용을 RDD로 로드하고, RDD를 가공하는 형식으로 대량의 데이터를 분산처리할 수 있다. 스파크에서는 이런 가공은 변환(transformation) 이라 할 수 있다. 그리고 RDD의 내용에 따라 액션이라는 처리를 적용하여 원하는 결과를 얻는다. 이밖에도 RDD에는 불변(immutable) 즉, 내부 요소 값이 변경 불가한 성질과, 생성이나 변환이 지연 평가되는 성질이 있따. 2. RDD 다루기 RDD에는 변환과 액션 두 종류의 처리를 적용할 수 있다. 변환(Transformation) 변환이란 RDD를 가공하고 그 결과 새로운 RDD를 얻는 처리다. 변환 처리 후의 RDD가 가지는 요소는 변환 처리 전의 RDD에 들어있던 요소를 가공하거나 필터링해 생성된다. 변환은 다시 두 종류로 구분된다. 첫 번째, 변환 처리 전의 RDD가 가지는 요소를, 같은 RDD의 다른 요소들과 관계없이 처리할 수 있는 종류 사각형은 RDD 둥근 사각형은 파티션 그 안에 있는 것은 요소이다. filter 요소를 필터링한다. map 각 요소에 동일한 처리를 적용한다. flatmap 각 요소에 동일한 처리를 적용하고 여러 개의 요소를 생성한다.

(Spark) 스파크의 특징

1. 활용 배경 반복적인 처리와 연속으로 이루어지는 변환처리의 고속화 시행착오에 적합한 환경 제공 서로 다른 처리를 통합해 이용할 수 있는 환경 제공 1-1. 반복적인 처리와 연속으로 이루어지는 변환처리의 고속화 특정한 데이터셋에 대해 반복처리와 연속으로 이루어지는 변환처리를 고속화할 목적으로 개발되었다. 그전에는 맵리듀스가 널리 활용 되었다. 데이터의 지역성을 의시간 처리와 내결함성 그리고 확장성 등의 기능을 종합적으로 제공함으로써 복수의 머신으로 구성된 환경을 통한 병렬분산머신 처리를 더 쉽게 실현할수 있게 되었고, 그 결과 맵리듀스는 대량의 데이터 처리가 필요한 사용자들에게 널리 보급되었다. 맵리듀스는 기본적으로 입력데이터를 스토리지에서 읽고 복수의 머신에서 분산처리를 수행한 후 그 결과를 스토리지에 보존한다. 이 처리가 한번에 끝나지 않는 경우에는 데이터 플로형식으로 처리되어 읽기 -> 분산처리 -> 보존을 반복 수행한다. 맵 리듀스의 단점은 중간과정을 모두 메모리에 담을 수 없다는 것이다. 하지만 하드웨어의 발전으로 메모리의 크기가 커지면서 모든 데이터를 메모리에 담을 수 있게 되며 스파크를 사용하게 되었다. 1-2. 시행착오에 적합한 환경 제공 지금까지는 데이터의 통계분석과 머신러닝과 같은 처리를 하려면 표 계산 소프트웨어, 파이썬, R, 매틀랩 또는 BI툴을 이용했다. 이러한 것들은 결과를 바로 얻을 수 있는 것이 특징이었고, 따라서 시행착오를 겪어가며 데이터 해석을 한정적으로 하기에 적합한 환경이라 할 수 있었다. 하지만 한 대의 서버에서 처리할 수 있는 용량을 넘어서는 데이터셋에 대해서는 이런 종류의 툴이 현실적이지 않다. 거대한 용량의 데이터를 다룰 떄는 스케일 아웃과 같은 방법을 선택하고 여러 대의 머신으로 구성해 병렬 분산처리를 수행할 필요가 있다. 1-3. 다양한 처리를 통합할 수 있는 유연한 환경 배치처리, 스트림처리, SQL처리, 머신러닝 그...