스파크

のの·2021년 1월 4일

스파크는 맵리듀스의 선형 확장성과 결함 포용성을 유지한다.

  1. 맵 단계 후 리듀스 단계를 지키지 않아도 되며 훨씬 일반적인 방향성 비순환 그래프(Directed Acyclic Graph)형태로 정의한 연산들을 실행할 수 있다. 맵리듀스라면 중간 결과를 HDFS에 반드시 저장해야 하는 상황에서 스파크는 파이프라인의 다음 단계로 중간 결과를 바로 넘길 수 있다.
  2. 사용자가 연산을 더욱 자연스럽게 표현할 수 있도록 풍부한 변환 방식을 제공하여 처리 능력을 확장한다.
  3. 인메모리 처리 방식. 스파크의 데이터 셋과 데이터 프레임을 통한 추상화는 개발자가 데이터 처리 파이프라인의 어느 지점에서라도 데이터를 클러스트의 메모리로 저장할 수 있도록 해준다. 이후 단계에서 같은 데이터를 사용해야 한다면 데이터를 다시 연산하거나 디스크로부터 다시 읽을 필요가 없다.

스파크의 인메모리 캐시 기능은 반복적으로 이뤄지는 크고 작은 모든 데이터 처리에 이상적이다. 이 기능을 활용하면 학습 데이터를 반복해서 읽어야 하는 머신러닝 알고리즘에서는 학습 데이터를 메모리에 캐싱할 수 있다. 데이터를 디시크에서 매번 읽어 들이는 대신
메모리에 올려둔 채 다양한 질의를 테스트해보고 또 그 결과를 메모리에 쉽게 저장할 수도 있다.

스파크는 맵리듀스가 지원하는 모든 데이터 포맷을 읽고 쓸 수 있어서 에이브로 파케이와 같은 하둡의 일반적인 데이터 젖아 파일 포맷도 사용할 수 있따.
HBase와 카산드라와 같은 NoSQL 데이터베이스로부터 데이터를 읽고 쓸수 있다.
스파크의 스트림 처리 라이브러리인 스파크 스트리밍을 사용하면 플룸이나 카프카로부터 연속적으로 데이터를 입력받을 수 있다. SQL 라이브러리인 Spark SQL로는 하이브 메타스토어와 상호작용이 가능하며 하이브 온 스파크를 사용하여 맵리듀스 대신 스파크를 하이브의 기본 실행 엔진으로 사용할 수 있다. 이를 통해서 클러스터 사이에서 자원을 동적으로 공유할 수 있으며 맵리듀스나 임팔라 같은 다른 처리 엔진과 동일한 정책으로 관리할 수 있게 되었다.

스칼라

성능 면에서 유리
스칼라처럼 JVM에서 동작하는 언어 위에서 R이나 파이썬으로 만들어진 알고리즘을 실행하려면 코드와 데이터를 변환하거나 다른 환경으로 옮기는 작업이 추가로 필요하며 때에 따라서는 이 추가 과정에서 오류가 생길 수도 있다. 반면 스파크가 제공하는 스칼라 API를 사용한다면 의도한 대로 동작할 가능성이 매우 커진다.

최신 기능을 활용
스파크의 머신러닝, 스트림 처리, 그래프 분석 등의 라이브러리는 모두 스칼라로 작성했기 때문에 새로운 기능이 파이썬이나 R 환경까지 지원하는 데 시일이 걸리는 편이다. 그러므로 스파크가 제공하는 모든 최신 기능을 곧바로 사용하려 한다면 최소한 스칼라에 대해서 조금은 알아야하며 그 기능들을 확장하여 새로운 문제에 적용하려면 스칼라를 어느 정도 능숙하게 다룰 수 있어야 한다.

스파크의 철학을 이해하기 쉽다.

파이썬이나 R로 스파크를 사용한다 할 지라도, 스파크의 API에는 이를 구현한 언어인 스칼라로 부터 시작된 철학이 녹아있다.

profile
wannabe developer

0개의 댓글