[[하이브 면접 주요 질문]]
- 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
- 플랜을 실행하여 결과를 반환
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 |
---|---|
[면접] 개발자 면접 직무 관련 주요 질문 정리 (0) | 2018.01.16 |
[면접] 면접질문 모음 사이트 - Awsome Interview (0) | 2017.12.26 |
[면접][Hadoop] 맵리듀스(MapReduce) 관련 면접 주요 질문 (0) | 2017.09.25 |