본문 바로가기
개발자/면접

[hive] 하이브 관련 주요 면접 질문

by hs_seo 2018. 4. 18.

[[하이브 면접 주요 질문]]


- HBase와 Hive의 차이는?

  • HBase는 NoSQL 데이터베이스이고 Hive는 하둡잡을 실행하는 DW 프레임워크이다. 
  • HBase는 HDFS위에서 동작하고, Hive는 MapReduce 위에서 동작한다. 


- 하이브 서비스에 대하여 설명하세요

  • cli
    • 하이브 쉘에 대한 명령해 인터페이스이며 기본 서비스이다. 
  • HiveServer2
    • 다른 언어로 개발된 클라이언트와 연동할 수 있도록 하이브를 쓰리프트 서비스로 실행
    • 기존 하이브 서버를 개선하여 인증과 다중 사용자 동시성을 지원
    • 쓰리프트, JDBC, ODBC 연결자를 사용하는 애플리케이션과의 연결을 지원
  • beeline
    • 일반적인 CLI 처럼 내장형 모드로 동작하거나 JDBC로 하이브서버2 프로세스에 접근할 수 있는 하이브의 명령행 인터페이스
  • hwi(하이브 웹 인터페이스)
    • CLI의 대안으로 클라이언트 소프트웨어를 설치하지 않고 하이브를 접근할 수 있는 간단한 웹 인터페이스
  • jar
    • hadoop jar 와 유사한 실행방식
    • 자바 애플리케이션을 실행
  • 메타스토어
    • 하이브 테이블의 메타 정보를 저장하는 메타스토어를 실행 
    • 하이브의 메타 데이터를 저장하는 중앙 저장소 


- Hcatalog 를 사용하는 이유

  • 하둡 에코 시스템의 데이터 처리 도구(hive, pig)들 간의 데이터 공유를 위하여 테이블, 저장공간 관리계층을 지원
  • HDFS상의 파일에 대한 추상계층을 제공하여 사용자가 데이터의 위치, 저장형태에 신경쓰지 않아도 되도록 제공


- 하이브의 조인 전략에 대해서 설명하세요

  • 셔플조인 
    • 맵리듀스를 이용해서 키를 기준으로 재분배(셔플)하여 조인 측에서 조인을 수행
    • 어떤 형태의 데이터 크기와 구성에서도 작동함
    • 가장 자원을 많이 사용하며 가장 느린 조인 방식
  • 브로드캐스트 조인
    • 작은 테이블이 모든 노드의 메모리에 올라가고 매퍼는 큰 테이블을 훑어보며 조인을 함
    • 가장 큰 테이블에서 굉장히 빠른 단일 스캔
    • 작은 테이블이 메모리에 들어갈 정도로 작아야 함
  • SMB 조인
    • 매퍼는 각 키가 인접한 특성을 이용해 효과적인 조인을 수행
    • 어떤 크기의 테이블에서도 굉장히 빠름
    • 사전에 자료가 정렬되고 버켓화 되어있어야 함


- Bucket과 Partitioning의 차이

  • 버켓
    • 효율적인 데이터 처리 수행을 위한 데이터 모델
    • 지정된 버켓 칼럼의 해시값을 기준으로 지정한 개수의 파일로 저장
    • clustered by (칼럼) into [버켓 개수] buckets; 으로 설정
    • 조인키로 버켓을 생성해두면 생성된 버켓 중 필요한 버켓만 조회하면 되기 때문에 풀 스캔보다 빠르게 데이터를 처리
  • 파티셔닝
    • 데이터를 디렉토리 별로 분할 하여 정리
    • 디렉토리의 이름이 파티셔닝 정보가 됨
    • 파일기반 테이블의 약점
      • 전체 row를 검색해야 데이터를 알 수 있음
      • 데이터를 파티션 기준으로 분리하여 저장
      • 전체 파일이 아닌 파티션된 영역의 데이터만 처리하므로 속도 향상 

- 스큐와 정렬은?
  • 스큐(Skew)
    • 지정된 칼럼의 값을 분리된 파일로 저장
    • 특정한 값이 자주 등장할 때 유용
  • 정렬
    • 주어진 칼럼을 기준으로 값을 정렬
    • ORC 파일 필터 다운과 함께 사용할 때 쿼리 처리 속도를 높임

- ORDER BY, SORT BY, DISTRIBUTED BY, CLUSTER BY의 차이점?
  • ORDER BY
    • 리듀서 1개를 이용하여 데이터를 정렬
    • 큰데이터의 정렬에는 limit 옵션을 이용하는 것이 좋음
  • SORT BY
    • 리듀서별로 키값으로 정렬
  • DISTIRUBTED BY
    • 매퍼의 결과를 리듀서로 전달 할 때 키별로 파티셔닝하여 리듀서에 전달
    • 같은 키 값은 같은 리듀서로 전달
    • 정렬은 보장하지 않음
  • CLUSTER BY
    • SORT BY, DISTRIBUTED BY의 축약형
    • 리듀서 별로 데이터를 정렬하여 전달 


- 쿼리 프로세서(Query processor)는 어떻게 구성 되나요?
  • HQL을 분석하여 맵리듀스 작업을 실행하고 결과를 반환하는 역활을 하는 것이 쿼리 프로세서
  • 쿼리 프로세서의 구성요소
    • Parser
    • Semantic Analyser
    • Type Checking
    • Logical Plan Generation
    • Optimizer
    • Physical Plan Generation


Hive Architecture 의 구성요소에 대해 설명하세요.

https://cwiki.apache.org/confluence/download/attachments/27362072/system_architecture.png?version=1&modificationDate=1414560669000&api=v2


  • UI
    • CLI, HWI 등 사용자의 입력을 받는 요소
  • Driver
    • 쿼리를 받아 들이는 입력 요소
    • 사용자 쿼리를 받아서 플랜 생성을 요청하고, 쿼리를 실행하여 결과를 반환
    • JDBC, ODBC 인터페이스 제공
  • Complier
    • 쿼리를 분석하여 실행 계획을 생성
  • Metastore
    • 하이브 테이블의 메타 정보를 저장하는 중앙 관리소
  • Execution Engine
    • 플랜을 실행하여 결과를 반환



반응형