What is the difference between Spark and Presto? | 스파크와 프레스토의 차이

Q.

스파크와 프레스토의 차이점이 무엇인가요?

 

A.

쿼리 엔진을 평가할 때에는 모멘텀, 기술지원 기업, 현재 기능 범위, 추후 개선을 고려한 구조를 포함하여 다양한 요소를 종합적으로 고려해야해요. 아래 요소들에 따라 아파치 스파크와 프레스토의 경우를 생각해봅시다.

모멘텀

오픈 소스 기여자 규모: 스파크의 오픈 소스 커뮤니티는 프레스토보다 몇 배나 커요. 아파치 스파크는 1400명의 기여자가 있고, 스파크 SQL만 해도 450명이 넘어요. 프레스토는 깃허브에 164명의 기여자와 229개의 이메일 주소가 있어요.

유저 규모: 프레스토는 그리 많지 않은 실리콘 밸리 기술 기업들이 주로 사용하는 반면, 스파크는 “새크라멘토의 동쪽”을 넘어서 전 세계에서 많이 쓰여요. 예를 들어 월마트, 블룸버그, 캐피탈 원, CERN 등이 있어요. 실리콘 밸리의 거의 모든 스타트업들과 큰 기업들이 스파크를 사용하고, 대부분의 포춘 500대 기업들도 스파크를 사용하고 있거나 사용할 계획을 하고 있어요.

기술지원 기업: 거의 모든 기술지원 기업들이 스파크와 스파크 SQL 서비스를 제공하지만, 아주 일부만이(테라데이터 등) 프레스토를 제공해요.

기능 범위

안시 SQL 2003 지원: 스파크 SQL은 모든 빅데이터 SQL 엔진들 중 안시 SQL 2003 표준을 가장 잘 지원해요. 안시 SQL 표준을 모두 지원하는 데이터베이스 또는 쿼리 엔진은 없다는 점을 참고하세요. 일부 쿼리 엔진이 다른 것들보다 표준을 더 잘 지원하는 경우가 있어요. 스파크 SQL은 TPC-DS 쿼리 99개를 변형 없이 모두 실행할 수 있지만, 프레스토를 포함한 대부분의 다른 엔진들은 그렇지 않아요. 사실, TPC-DS 쿼리 99개가 스파크 SQL의 소스 코드에 포함되어 있어요.

복잡하고 실행 시간이 긴 쿼리: 스파크 SQL은 복잡하고 실행 시간이 긴 쿼리를 더 잘 지원해요. 반면, 프레스토는 짧은 실시간 쿼리를 처리하기 위해 초기에 디자인되었고, 결과적으로 큰 조인이나 복잡하고 여러 단계로 이루어진 쿼리를 처리하기 힘들어요. 이런 단점 때문에, 페이스북은(프레스토를 만든 회사) 복잡한 ETL을 위하여 스파크를 점점 많이 사용하고 있어요.

BI / JDBC / ODBC 연결: 스파크 SQL과 프레스토 모두 BI / JDBC / ODBC 연결이 가능해요.

서로 다른 데이터베이스 호환성: 둘 모두 제3자가 커넥터를 만들고 중간 엔진으로 사용할 수 있도록 해주는 괜찮은 데이터 소스 API를 갖고 있어요. 하지만 중간 엔진들을 사용하는 것은 사용할 수 있는 데이터베이스의 가짓수에 비례하여 효과적이지요. 유저 규모의 차이 때문에 유료 데이터베이스와 오픈 소스 데이터베이스 모두 스파크가 더 많은 커넥터를 가지고 있어요. (오라클, DB2, 몽고DB, 레디스, 카산드라, 일라스틱서치 등)

성능

구조 & 혁신: 학문적인 기반 덕분에 스파크 커뮨니티는 매우 혁신적이에요. 예를 들어, 카탈리스트 옵티마이저는 확장성과 모듈화 측면에서 제가 지금까지 본 것중 최고의 옵티마이저라고 생각해요. 텅스텐 실행 엔진은(전단계 코드 생성 포함) 현대 컴파일러와 데이터베이스 시스템의 가장 뛰어난 아이디어들을 훌륭하게 합쳐놓았어요. 저는 요즈음의 모든 오픈 소스 쿼리 엔진들 중 스파크가 성능 최적화에 가장 적합한 구조를 가지고 있고 대부분의 경우에 성능이 더 뛰어날 것이라고 자신있게 이야기할 수 있어요.

벤치마크: AtScale은 임팔라, 스파크, 하이브, 프레스토를 최근 벤치마크에서 비교했어요. 전체 13개 쿼리 중 7개에 대해서 스파크가 가장 빠른 쿼리 엔진이었어요. 임팔라는 13개 중 6개에 대해서 가장 빨랐어요. 프레스토와 하이브의 성능이 가장 안좋았어요. 스파크는 대부분의 경우에 (13개 중 11개) 프레스토보다 빨랐고, 일부 경우에는 4배 이상 빨랐어요.

물론, 마지막 이야기는 스파크가 항상 더 성능이 좋다는 이야기는 아니에요. 현재로써 프레스토가 더 최적화가 잘 되어 있는 영역들이 있어요. 예를 들어, 프레스토 유저들은 ORC 포맷을 표준으로 사용하는 경향이 있어요. 그 결과 프레스토는 더 빠른 ORC 리더를 갖고 있고, 스파크는 더 빠르고 벡터화된 Parquet 리더를 갖고 있어요. (더 빠른 ORC 리더는 개발 중)

우리는 고객들이 데이터브릭에서 스파크를 이용하여 가장 효과적인 방법으로 데이터를 처리할 수 있도록 하기 위해 일해요. 만약 다른 엔진보다 느리다면 우리는 이걸 버그로 생각하고 빠르게 해결해요.

요약하자면 스파크와 스파크SQL이 더 크고 성숙한 생태계, 더 많은 기능을 갖고 있으며 더 다양한 목적을 가진 더 많은 기업들에게 사용되고 있다는 것이에요.

 

#.

결국 광고였군요. 그래도 유저 풀이 많다는 것은 유의미한 요소인 것 같아요. 스택오버프로우에 검색 결과부터 다를테니까요.

 

원문.

https://www.quora.com/What-is-the-difference-between-Spark-and-Presto

1,454 Comments

  1. Hiya, I am really glad I’ve found this info. Nowadays bloggers publish only about gossip and internet stuff and this is actually frustrating. A good website with exciting content, that’s what I need. Thank you for making this website, and I will be visiting again. Do you do newsletters by email?