[DW ver.2] Hive의 execution engine으로 Spark 사용하기

in hadoop •  7 years ago  (edited)

빅데이터 시대가 오면서, 사람들은 대용량의 데이터를 저장 및 처리할 수 있는 새로운 시스템의 필요를 느꼈습니다. 웹 로그 같은 비정형 데이터가 수없이 쌓이고 있는데, 이를 기존 RDBMS에 저장하기엔 상용 RDBMS (ex: Oracle)도  RDBMS를 설치할 스토리지도 매우 비쌌기 때문입니다. 이것을 해결하고자 나온 것이 바로 Hadoop입니다.

그런데 Hadoop은 SQL을 지원하지 않았고, Hadoop에서도 SQL을 사용하고자 만든 것이 바로 Hive입니다. 사람들은 이제 Hive를 통해 Hadoop에서도 SQL을 사용할 수 있게 되었습니다. 하지만, Hive는 Hadoop의 MapReduce 방법을 이용하여 연산을 진행하는데, 

매 연산마다
1. Disk에서 Memory로 연산에 필요한 Data를 읽어와,
2. Memory에서 연산을 진행하고 다시 Disk에 변경사항을 다시 작성 하는,
이 작업들을 반복하기 때문에, 불필요한 I/O 연산이 계속되어 굉장히 느리다는 단점이 있습니다.

그러는 와중에 Presto라는 새로운 SQL Query Engine이 나오게 됩니다. Presto 한번에 연산을 수행할 Data를 모두 Memory에 불러온 후, Memory에서 연산을 수행하기 때문에 Hive보다 훨씬 빠른 연산이 가능니다.

하지만 이 Presto에도 역시 문제가 있었으니, Data를 한번에 Memory에 불러와 연산을 수행하기 때문에, Memory 사이즈가 넘어가는 연산은 Fail 한다는 점입니다.

현재 유니드컴즈에서는 Presto를 이용하고 있었고, 이러한 한계점을 극복할 수 있는 새로운 DW의 필요성을 느꼈습니다. 이러한 단점을 극복할 수 있는 방법을 찾던 중, Spark라는 픈 소스 클러스터 컴퓨팅 프레임워크를 발견했습니다. Spark는 RDD를 바탕으로 만들어진 프레임워크 입니다. RDD에 대해서 잘 설명해주신 사이트가 있어 첨부합니다. (https://www.slideshare.net/yongho/rdd-paper-review)

Hive의 Execute Engine으로 Spark를 사용하면 Presto의 단점인, memory 사이즈가 넘어가는 연산의 실행이 불가능하다는 점을 보완할 수 있습니다. 뿐만 아니라, Spark는 복잡하고 사이즈가 큰 연산일수록 굉장히 빠른 속도를 보입니다.
(벤치마킹 관련 참고자료 : https://cdn2.hubspot.net/hubfs/488249/Asset%20PDFs/Benchmark_BI-on-Hadoop_Performance_Q4_2016.pdf)

이번 글에서는 Cloudera Manager를 이용하여, Hive의 Execute Engine으로 Spark를 설정하는 방법을 알아볼 것입니다.
(Cloudera Manager이 설치되어 있고, Cloudera Manager상에서 Hive와 Spark가 설치되어있다고 가정합니다.)

1. Cloudera Manager 실행
https://imgur.com/zGWYwTo 

2. Hive -> 구성 으로 들어가 Spark를 검색합니다.
https://imgur.com/HhHHFcO 

3. 기본 실행 엔진을 Spark로 변경하고 저장합니다.
https://imgur.com/yKWOap1 

이 세 단계 만으로 모든 설정이 완료되었습니다. Cloudera Manager를 이용하면, Data Warehouse에 대한 관리 및 유지 보수가 굉장히 편리합니다. GUI로 되어있어, 터미널에 친숙하지 않은 분들도,  Hadoop Ecosystem에 대해 완벽하게 알지 못하는 분들도 간편하게 이용할 수 있습니다.

<추가설명>
Spark에 대해 공부하다보면, Spark SQL이 따로 존재하는데 굳이 Hive의 Execute Engine으로 Spark를 사용해야 하는지 궁금증이 생길수도 있습니다. 잘 설명해준 자료가 있어 첨부합니다. (https://stackoverflow.com/questions/31611744/sparksql-vs-hive-on-spark-difference-and-pros-and-cons)

다음편에는 Cloudera Manager에 대해 소개해 드리겠습니다.


작성자 : 유니드컴즈 RE팀 김연수 연구원 ([email protected])

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Congratulations @uneedcomms! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Do not miss the last post from @steemitboard:

3 years on Steem - The distribution of commemorative badges has begun!
Happy Birthday! The Steem blockchain is running for 3 years.
Vote for @Steemitboard as a witness to get one more award and increased upvotes!