What is the difference between Apache Hive and Apache Spark? | 아파치 하이브와 아파치 스파크의 차이

Q.

아파치 하이브와 아파치 스파크의 차이가 무엇인가요?

 

A1.

먼저, 스파크가 무엇인지 이해해봅시다.

기본적으로, 아파치 스파크는 범용적이고 매우 빠른 클러스터 컴퓨팅 시스템이에요. 자바, 스칼라, 파이썬, R과 같은 하이 레벨 API를 제공하지요. 스파크 프로그램을 실행하는 것은 툴을 사용하는 것이에요. 더욱이, 하둡 빅데이터보다 100배는 빠르고, 디스크에서 데이터를 읽는 것보다 10배는 빨라요. 아파치 스파크는 스칼라 언어로 작성되었어요.

아파치 스파크는 하둡과 함께 사용할 수 있어요. 또한 이미 하둡 HDFS에 존재하는 데이터를 다룰 수도 있지요.

아파치 스파크에 대해 배울 수 있는 여러 요소가 있어요. 모두 확인하려면 다음 링크를 보세요: 아파치 스파크 – 초심자를 위한 완전한 스파크 튜토리얼

아파치 스파크의 특징

스파크를 더 잘 이해하기 위하여 알아야 할 아파치 스파크의 특징들이 있어요.

  1. 인메모리 연산
    인메모리 연산을 사용해서 처리 속도를 높일 수 있어요. 데이터가 메모리에 캐시되기 때문에 매번 디스크에서 읽어 올 필요가 없고 시간이 절약돼요. 스파크는 인메모리 연산과 비순환 데이터 흐름을 활용하는 DAG 실행 엔진을 사용하기 때문에 속도가 빨라요.
  2. 재사용성
    스파크 코드는 배치 프로세싱을 할 때 재사용할 수 있고, 스트림을 과거 데이터에 연결하거나, 스트림 상태에 대해 ad-hoc 쿼리를 실행할 수 있어요.
  3. 오류대응
    아파치 스파크는 스파크 abstraction-RDD, 클러스터에 있는 일부 노드에 오류가 생겼을 때 대응할 수 있는 스파크 RDD를 통해 오류대응 기능을 제공해요. 따라서 데이터가 손실되지 않는 것이 보장돼요.
  4. 실시간 스트림 처리
    스파크는 실시간 스트림 처리를 제공해요. 초기 하둡 맵리듀스의 문제점 중 하나는 이미 존재하는 데이터만 처리할 수 있고 실시간으로 들어오는 데이터를 처리할 수 없다는 것이었어요. 하지만 스파크 스트리밍으로 이 문제를 해결할 수 있지요.
  5. Lazy Evaluation
    스파크 RDD에서의 모든 변환은 자동적으로 Lazy해요. 다시 말해, 현재 RDD에서 새로운 RDD가 생성되기 전까지 결과를 바로 돌려주지 않아요. 따라서 시스템의 효율성이 높아요. 스파크 Lazy Evaluation에 대해서 더 자세하게 알고 싶다면 이 가이드를 참조하세요.

    아파치 스파크에는 이 이외에도 더 많은 특징들이 있어요. 더 자세한 정보를 찾아보기 위해서는 링크를 보세요: 아파치 스파크의 특징 – 스파크를 사용하는 것의 장점

하이브와 스파크의 차이

아파치 하이브와 스파크의 차이점을 이야기하는 것은 사실 쉽지 않아요. 왜냐하면 둘이 서로 너무 달라서 직접 비교할 수가 없어요. 위에서 이야기했듯이, 스파크는 빅데이터 프레임워크인 반면, 아파치 하이브는 하둡 내의 데이터 웨어하우스 기능을 하는 데이터 웨어하우스에요. 하둡 파일에 저장된 큰 데이터를 확인하고 분석하지요.

하이브를 잘 이해하기 위해서는 먼저 아파치 하이브를 간략하게 살펴볼 필요가 있어요.

아파치 하이브

옛날에는 복잡한 맵리듀스 잡을 직접 작성해야 했지만, 하이브가 등장한 이후에는 그냥 SQL 쿼리를 보내면 돼요. SQL에 익숙한 유저를 주 대상으로 만들어졌어요. 하이브는 SQL과 비슷한 HiveQL(HQL)을 사용해요. HiveQL은 SQL처럼 생긴 쿼리를 맵리듀스 잡으로 자동으로 바꿔줘요.

하둡의 복잡함이 추상화되지요. 주목할 만한 점은 하이브를 사용하기 위해서 자바를 공부할 필요가 없다는 거에요.

기본적으로, 하이브는 사용자 컴퓨터에서 실행되며 SQL 쿼리를 하둡 클러스터에서 실행하기 위한 여러 잡으로 변환해요. 아파치 하이브는 데이터를 테이블로 만들어서 관리해요. HDFS에 저장된 데이터를 구조화하는 수단이지요.

하이브의 특징

아파치 하이브는 수많은 특징을 가지고 있어요. 하나씩 이야기해봅시다.

  • 데이터 요약, 확인, 분석이 훨씬 쉬워요.
  • 또한, 외부 데이터 처리를 지원해서 HDFS에 저장하지 않는 데이터를 다룰 수 있어요.
  • 로우 레벨에서 하둡과 완벽하게 연동돼요.
  • 성능을 높이기 위한 테이블 파티션이 지원해요.

규칙 기반 옵티마이저도 가지고 있어요.

아파치 하이브를 자세히 알고 싶다면 링크를 보세요: 아파치 하이브 – 초심자를 위한 자세한 하이브 튜토리얼

스파크 지식을 확인해보고 싶다면 링크를 보세요: 아파치 스파크 인터뷰 질문과 답변 50+개

 

A2.

아파치 하이브

  • 페이스북이 SQL에 익숙한 사람들을 위해서 하이브를 만들었어요. 그래서 하이브는 SQL에 익숙한 사라들이 하둡 환경을 사용할 때 집에 있는 것처럼 편안하게 해줘요.
  • 기본적으로, 하이브는 SQL 같은 인터페이스를 이용하여 분산 환경에서 큰 데이터를 읽고, 쓰고, 관리할 수 있게 해주는 데이터 웨어하우스 역할이에요.

하이브 + SQL = HQL

  • 하이브의 쿼리 언어는 SQL과 아주 비슷한 Hive Query Language(HQL)이에요.
  • 주로 사용되는 클라이언트는 두 개에요: 하이브 커맨드라인과 JDBC/ODBC 드라이버
  • 하이브 커맨드라인은 HQL 커맨드를 실행하기 위해 사용해요.
  • 둘째로, 하이브는 확장성이 매우 좋아요.
  • SQL의 모든 기본 데이터 타입을 지원해요.
  • 미리 정의된 함수를 사용하거나, 특정 목적을 위해서 사용자 정의 함수를 만들어서 사용할 수 있어요.
  • 스파크는 하둡에서의 실시간 처리를 위해 사용하는 반면, 하이브는 하둡 생태계ㅔ서 SQL 같은 쿼리를 이용하여 데이터를 분석하기 위한 툴이에요.

여기 하이브 튜토리얼 블로그에서 나사의 사례를 통해 아파치 하이브를 이해할 수 있어요.

아파치 스파크

  • 아파치 스파크는 분산 컴퓨팅 환경에서의 실시간 데이터 분석을 위한 프레임워크에요.
  • 스파크는 스칼라로 작성되었고 UC 버클리에서 만들기 시작했어요.
  • 맵리듀스를 통한 데이터 처리 속도를 높이기 위해 인메모리 연산을 사용해요.
  • 인메모리 연산과 다른 최적화를 통해 큰 데이터를 처리할 때 하둡보다 100배 빠른 속도를 보여줘요. 따라서 맵리듀스보다 더 높은 처리 성능이 필요해요.

여기서 볼 수 있듯이, 스파크는 R, SQL, 파이썬, 스칼라, 자바 등을 포함한 하이 레벨 라이브러리를 가지고 있어요. 이 표준 라이브러리들은 복잡한 환경에서 깔끔한 연동을 도와줘요. 여기에 더하여, 활용성을 높이기 위하여 MLlib, GraphX, DataFrames, Streaming services와 같은 다양한 서비스와의 연동도 가능해요.

모두의 마음 속에 아주 흔한 질문이 있지요:

“아파치 스파크: 아파치 하둡의 킬러인가, 구원자인가?” – O’Reily

이에 대한 대답은 – 사과를 사과에 비교하는 것이 아니다. 아파치 스파크는 실시간 처리에 가장 적합한 반면, 하둡은 구조화되지 않은 데이터를 저장하고 한 번에 처리하기 위하여 디자인되었다. 빠른 처리 속도, 뛰어난 분석, 다양한 연동이 가능한 아파치 스파크가 상용 하드웨어에 적은 비용으로 실행할 수 있는 하둡과 결합되면 최고의 결과를 낼 것이다.

HDFS에 저장된 빅데이터를 처리하고 분석하기 위하여 많은 회사들이 스파크와 하둡을 함께 사용하는 이유에요.

스파크를 자세히 이해하기 위해서는 이 스파크 튜토리얼 블로그를 보면 좋아요.

 

#.

첫 번째 답변은 혓바닥이 길고 자기네 회사 링크를 노골적으로 많이 넣는군요. 두 번째 답변이 낫네요.

 

원문.

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

189 Comments