장단점 / 함께사용하는 툴 / 사용 사례

목차

  • Spark 의 장단점

  • 함께 사용하는 툴

  • Spark 을 사용한 다른 서비스 사례번외)

  • Storm, 파케이 etc

Spark 장점

1. 메모리 기반 → 속도

  • 특히 Spark 은 메모리 하둡 이라고도 불리는데, 기존의 하둡이 MapReduce 작업을 디스크 기반으로 수행하기 때문에 느려지는 성능을 메모리 기반으로 옮겨서 고속화 하고자 하는데서 출발했습니다.

  • 속도 비교 - 스파크의 메모리 내 데이터 엔진은 다중 스테이지 작업(스테이지 간에 다시 디스크에 상태를 써야하는)과 비교할 때 맵리듀스에 비해 최대 100배 더 빠릅니다. - 데이터가 메모리 내에 완전히 들어갈 수 없는 아파치 스파크 작업도 맵리듀스에 비해 약 10배 더 빠릅니다. - 서버에 메모리를 다는 경우가 많아지면서, 굳이 디스크를 사용하지 않고 인메모리 상에서 스트림처리, 병렬처리를 쉽게 하는 Spark가 인기를 얻게 되었습니다.

  • 개발자 친화적인 Spark API - 아파치 스파크는 파이썬, R과 같은 데이터 분석용으로 인기 있는 언어와 기업 친화적인 자바, 스칼라에 대한 바인딩을 제공함으로써 애플리케이션 개발자부터 데이터 사이언티스트까지 그 확장성과 속도를 편리하게 이용할 수 있습니다. - 분산 처리 엔진의 복잡성 대부분을 간단한 메서드 호출 뒤로 숨깁니다. → 간단해지는 코드 - 예시 고전적인 예는 문서의 단어 수를 세는 50줄에 가까운 맵리듀스 코드를 겨우 몇 줄의 아파치 스파크로 줄이는 코드입니다.

  • DB 호환 - Spark는 하둡의 HDFS뿐 아니라 많은 DB와 호환이 됩니다. - Hive, HBase, PostgreSQL, MySQL, MariaDB, CSV 등의 DB 및 파일을 읽을 수 있습니다.

  • 오픈소스

단점

  • 높은 메모리를 필요

  • 머신러닝 등 반복적인 데이터 처리에 적합 (한번만 수행하는 작업은 유리할 것이 없음)

  • 불안정함 (프레임워크가 죽는 경우 발생)

함께 쓰는 툴

  • Apache Zeppelin

국내에서 주도하고 있는 오픈소스 프로젝트로써, Spark를 훨씬 더 편하고 강력하게 사용할 수 있게 해주는 도구입니다.

Shell에서 사용할 코드를 기록하고 재실행할 수 있도록 관리해주는 역할과

코드나 쿼리의 실행 결과를 차트/표 등으로 시각화해서 보여주는 역할을 합니다.

Spark 을 사용하는 다른 서비스 사례

  • VCNC (비트윈)

http://engineering.vcnc.co.kr/2015/05/data-analysis-with-spark/ - 2015년도

Hadoop MapReduce 를 사용하다가 Spark 으로 교체하게 된 케이스

SQL을 MapReduce로 변환해주는 Hive 프로젝트가 있어 많은 사람이 잘 사용하고 있지만,

쿼리를 최적화하기가 어렵고 속도가 더 느려지는 경우가 많다는 어려움이 있었고,

MapReduce의 대안으로,

메모리를 활용한 아주 빠른 데이터 처리가 특징이고, Scala 를 사용하여 코드가 매우 간단하다는 장점이 있는 Spark 으로 교체하게 되었다고 합니다.

  • 금융권

금융권에서는 Risk 분석 솔루션에 스파크를 넣거나, FDS 같은 시스템에 넣는 경우도 많다.

현재 빅데이터를 쓰는 거의 모든 솔루션에 스파크는 들어갈 수 있다고 봐도 무방하다.

Spark Streaming vs Storm

"I recommend you look at storm vs spark in a different manner. if your stream response can handle some latency (as little as 1/2 a second) then spark may be the way to go. This is just my opinion as spark streaming is so darn easy. Storm is a POWERFUL engine with virtually zero latency. Storm has been clocked on millions of tuples per node per second. So you have to ask yourself if your use case needs zero latency or can you handle micro batch (spark streaming)"

Performance Comparison Between Spark and Storm - Hortonworks

Through Storm, only Stream processing is possible. Although the industry requires a generalized solution, that resolves all the types of problems, for example, batch processing, stream processing interactive processing as well as iterative processing. Thus, Apache Spark comes into limelight. Also, a general-purpose computation engine. Through it, we can handle any type of problem. As a result, Apache Spark is much too easy for developers. Also, we can integrate it very well with Hadoop. Therefore, Spark Streaming is more efficient than Storm. Hope you got all your answers regarding Storm vs Spark Streaming comparison.

Comparison between Apache Storm vs Spark Streaming - TechVidvan

대략적인 storm의 구조

Topology라고 부르는 storm의 분산 연산 구조는 Data Stream, Spout(스트림 생성자), Bolt(연산자)로 구성되어 있다.

  • Stream: 쉽게 설명하면 tuple은 named value(key-value pair)의 목록이고 stream은 연속된 tuple이다.

  • Spout: 데이터가 storm topology로 들어가는 입구이다. spout는 어댑터로써 동작하는데 데이터 소스와 연결을 맺고 데이터를 tuple로 변환하여 stream으로 tuple을 내보내는 일을 한다.

  • Bolt: 실시간 연산의 연산자나 함수로 생각할 수 있다. 다수의 stream을 입력 받아 데이터를 처리하고 선택적으로 하나 이상의 stream으로 내보낸다. Bolt는 spout나 다른 bolt로부터 stream을 받는다.

관련 용어 정리

  • Parquet (파케이)

http://engineering.vcnc.co.kr/2018/05/parquet-and-spark/

데이터 저장 포맷의 종류이고, 저장 용량 / 처리 성능 면에서 장점이 있습니다.

Spark 에서 파케이를 잘 지원하고 있습니다.

  • Apache Hadoop

클러스터에서 빅 데이터 집합을 분산 처리하고 분석하기 위한 원래의 오픈 소스 프레임워크 입니다.

  • ETL

ETL(추출, 변환 및 로드)은 구조화되지 않았거나 구조화된 데이터를 유형이 다른 데이터 원본에서 추출하는 프로세스입니다.

그런 다음 구조화된 형식으로 변환하고, 데이터 저장소로 로드합니다.

  • HDFS (Hadoop Distributed File System)

분산 저장 파일 시스템.

HDFS가 디스크의 I/O를 사용하기에 데이터를 충분히 빠르게 처리할 수 없다는 단점이 있습니다.

  • Storm

데이터의 일괄처리를 위해 개발된 하둡과 달리,

데이터의 실시간 처리를 위해 개발된 범용 분산 환경 기반 실시간 데이터 처리 시스템.

  • MapReduce vs Spark 이 가장 적합한 대립구조가 아닐까?

Last updated