⭐ Engine = 어떤 입력을 받아서, 일정한 규칙에 따라 실제 작업을 수행하는 핵심 실행 모듈(Execution Core)
“엔진”이라는 단어는 어떤 시스템의 중심에서 실제 행동을 수행하는 실행기(executor)를 의미하는데 , 어디에서(어떤 객체) 수행되고, 어디에서(어떤 컴퓨터) 실행되는지를 정확히 구분하는 것이 중요하다.
여러 객체(여러 가지 역할 분해)들의 모임+
ex) Controller , Driver , Scheduler , Executor , Parser , Optimizer ,Mapper , Reducer... (수많은 역할들이 존재)
여러 컴퓨터(여러 곳에서 수행)(=클러스터) 가
협력하여 하나의 일(Client Job) 을 수행하는 구조
DB엔진은 SQL을 받아서 실제 DB 내부 작업을 수행하는 컴포넌트.
DB 엔진이 하는 일:
SQL Parser → SQL 해석
Optimizer → 최적 실행 계획 생성
Executor → 데이터를 읽고 join, filter, group-by 실행
Storage Engine → 데이터를 파일로 저장/로드
Transaction Manager → ACID 보장
Buffer Manager → 캐싱
DB 엔진: SQL을 → 실제 데이터 읽고 쓰는 동작으로 변환해 수행하는 실행 엔진
Mapper/Reducer 태스크 분산 실행
Shuffle & Sort
실패 감지 및 재실행
HDFS에서 데이터 읽기
디스크 기반 중간 저장
사용자가 작성한 Mapper/Reducer 코드를 → 클러스터 전체에 배포해 실행하는 엔진
DAG 생성 및 최적화
Executor 할당
RDD/DataFrame Transformation 실행
인메모리 처리
Shuffle 관리
Fault tolerance
사용자의 DataFrame/SQL 코드를 → 클러스터에서 병렬 실행하는 엔진
Hive는 “SQL을 실행 엔진에 넘기기 위한 컴파일러/쿼리 엔진”이지
자체적으로 일을 수행하지 않음.
그래서 Hive는 아래와 같이 구성됨:
HiveQL(SQL) → Logical Plan → Physical Plan → (MapReduce/Tez/Spark)
Hive는 실행 엔진이 아니라 ‘실행 엔진의 앞단에서 SQL을 해석하는 Layer’
따라서 Hive 자체는 engine이 아니지만,
Hive-on-Spark, Hive-on-Tez 형태로 "실행 엔진 위에서 동작하는 SQL 엔진"이라고 부르기도 함.
1) 입력을 받아
2) 그것을 어떠한 계획(execution plan)으로 변환하고
3) 실제 처리 동작을 수행하여
4) 결과를 만들어내는 실행 장치
엔진의 예시를 비교해서 보자
분야 무엇을 입력으로? 엔진이 실제로 하는 일
DB 엔진 SQL 쿼리 데이터 읽기/Join/Aggregation/Transaction
MapReduce 엔진 Mapper/Reducer 코드 + 파일 태스크 분산/Shuffle/정렬/병렬 실행
Spark 엔진 RDD, DataFrame 코드 DAG 실행, 인메모리 병렬 처리
검색 엔진 사용자의 검색어 문서 검색, 랭킹
게임 엔진 게임 로직/자원 렌더링, 물리 엔진 실행
사용자가 가속 페달(입력)을 밟으면
엔진이 연료를 태우고(실행)
바퀴를 돌리는 힘(결과)을 만들어냄
컴퓨터 구조에서도 “입력받아서 실제로 실행하는 핵심 모듈”을 엔진이라 부르는 것.
엔진(engine)이란?
사용자의 명령 또는 코드를 받아,
실제 작업을 수행해 결과를 만들어내는 핵심 실행기(execution core).
DB 엔진 → SQL 실행
MapReduce 엔진 → MR job 분산 실행
Spark 엔진 → DAG 기반 분산 처리
Hive → SQL compiler (엔진 아님)
Hive-on-Spark → Spark가 엔진
Hive-on-MR → MR이 엔진
엔진(engine) = 컨트롤(계획·스케줄링) + 실행(작업 수행)을 모두 포함하는 실행 시스템 전체를 말한다.
컨트롤만 있는 것은 엔진이 아님
실행만 있는 것도 엔진이 아님
계획 + 스케줄링 + 실행 + 관리 + 복구
이 전부가 함께 있는 시스템이 “엔진”
그래서 Spark, MapReduce, DBMS 엔진 등은 모두 컨트롤 + 실행을 포함한다.