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

2018. 4. 18. 22:39·개발자/면접

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


- 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
Internal Hive from Recruit Technologies



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
    • 플랜을 실행하여 결과를 반환


https://www.slideshare.net/pudidic/ss-31830137

https://www.slideshare.net/recruitcojp/internal-hive?next_slideshow=1

https://www.slideshare.net/nzhang/hive-anatomy

https://cwiki.apache.org/confluence/display/Hive/Design#Design-HiveArchitecture


반응형
저작자표시 비영리 (새창열림)

'개발자 > 면접' 카테고리의 다른 글

[스크랩] 기술 면접 관련 질문  (0) 2018.01.16
[면접] 개발자 면접 직무 관련 주요 질문 정리  (1) 2018.01.16
[면접] 면접질문 모음 사이트 - Awsome Interview  (0) 2017.12.26
[면접][Hadoop] 맵리듀스(MapReduce) 관련 면접 주요 질문  (0) 2017.09.25
'개발자/면접' 카테고리의 다른 글
  • [스크랩] 기술 면접 관련 질문
  • [면접] 개발자 면접 직무 관련 주요 질문 정리
  • [면접] 면접질문 모음 사이트 - Awsome Interview
  • [면접][Hadoop] 맵리듀스(MapReduce) 관련 면접 주요 질문
hs_seo
hs_seo
Hello World!
    반응형
  • hs_seo
    개발자로 살아남기
    hs_seo
  • 전체
    오늘
    어제
    • 전체 (1140)
      • 개발자 (21)
        • 개발에 유의할 점 (0)
        • 면접 (5)
      • IT 소식 (5)
        • 업계 (1)
      • java (51)
        • 디자인패턴 (3)
        • apache-common (1)
      • 개념 (47)
        • 자료구조 (4)
        • 함수형사고 (8)
        • 디자인패턴 (1)
      • 데이터분석 (1)
      • python (67)
        • 코드조각 (12)
        • 라이브러리 (2)
      • 빅데이터 (418)
        • zookeeper (5)
        • hadoop (78)
        • hdfs (12)
        • hive (127)
        • hbase (16)
        • spark (40)
        • scala (4)
        • trino (3)
        • oozie (41)
        • Hue (9)
        • R (5)
        • sqoop (6)
        • flume (3)
        • elasticsearch (2)
        • airflow (16)
        • kafka (3)
        • kubernetes (10)
        • openstack (3)
        • flink (2)
        • redis (2)
      • 빅데이터 강좌 (2)
      • 알고리즘 (131)
        • 알고리즘 (1)
        • 백준 (61)
        • 정올 (41)
        • 더블릿 (5)
        • 프로그래머스 (1)
      • 프로그래밍 언어 (30)
        • go (4)
        • js (9)
        • .Net (6)
        • Jsp (1)
        • ansible (3)
        • terraform (6)
      • Tools (56)
        • docker (2)
        • macbook (6)
        • maven (3)
        • sublime (1)
      • 프레임워크 (25)
        • [JS] angularjs (2)
        • [JS] node.js (19)
        • [Java] spring (2)
        • Android (2)
      • 데이타베이스 (43)
        • SQLD (5)
        • Oracle (1)
        • MySQL (8)
        • ADsP (2)
      • 리눅스 (25)
        • Bash (61)
      • GCP (5)
      • AWS (34)
        • EC2 (2)
        • EMR (14)
      • 정보보안기사 (4)
        • 네트워크 (1)
      • 개인 (80)
        • 업무실수 (0)
        • 책 (9)
        • 교육 (3)
        • 여행 (17)
        • 영화 (12)
        • 음악 (2)
        • 피규어 (4)
        • 게임 (3)
        • 생각 (7)
        • 기타 (10)
        • 좋은글 (5)
        • 좋은 사이트 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 빅데이터-하둡,하이브로 시작하기
    • 빅데이터-스칼라, 스파크로 시작하기
    • Kaggle에서 파이썬으로 데이터 분석 시작하기
    • 쉘스크립트 개발 시작하기
    • 개발자가 데이터 분석 준전문가 되기
    • 데브쿠마
  • 공지사항

  • 인기 글

  • 태그

    error
    백준
    java
    mysql
    emr
    S3
    airflow
    SPARK
    파이썬
    오류
    Hadoop
    하둡
    yarn
    oozie
    알고리즘
    하이브
    AWS
    Tez
    bash
    HIVE
    ubuntu
    nodejs
    Python
    build
    hbase
    다이나믹
    정올
    k8s
    HDFS
    Linux
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hs_seo
[hive] 하이브 관련 주요 면접 질문
상단으로

티스토리툴바