Hive 시리즈 의 HSQL 을 MapReduce 로 전환 하 는 과정

4012 단어 hive.
hive 의 라 이브 러 리, 표 등 데 이 터 는 실제 hdfs 시스템 의 디 렉 터 리 와 파일 로 개발 자 들 이 sql 문 구 를 통 해 운영 관계 데이터 베이스 처럼 파일 내용 을 조작 할 수 있 도록 합 니 다. 예 를 들 어 조회, 통계, 삽입 등 작업 을 수행 할 수 있 습 니 다.하 이브 가 어떻게 이런 짓 을 했 는 지 궁 금 했 어 요.인터넷 에서 괜 찮 은 문서 몇 편 을 참고 하여 조심스럽게 공유 할 수 있 습 니 다.주요 참조 링크http://tech.meituan.com/hive-sql-to-mapreduce.html http://www.slideshare.net/recruitcojp/internal-hive 설명: 본 논문 의 그림 은 slideshare 내용 을 빌려 씁 니 다.
hive 의 전체적인 구조 도 는 다음 과 같다. copiler 부분 은 HiveSQL 을 MapReduce 작업 으로 전환 하 는 것 을 책임 진다.
Paste_Image.png
기본 변환 절차 인 hiveSQL 을 MapReduce 로 전환 하 는 실행 계획 은 다음 과 같은 몇 가지 절 차 를 포함한다. HiveSQL - > AST (추상 문법 트 리) - > QB (조회 블록) - > Operator Tree (조작 트 리) - > 최 적 화 된 조작 트 리 - > mapreduce 작업 트 리 - > 최 적 화 된 mapreduce 작업 트 리
Paste_Image.png
SQL Parser: Antlr 는 SQL 의 문법 규칙 을 정의 하고 SQL 어법, 문법 해석 을 완성 하 며 SQL 을 추상 문법 트 리 AST Tree 로 전환 합 니 다.Semantic Analyzer: AST Tree 를 옮 겨 다 니 며 조회 의 기본 구성 단원 인 Query Block 을 추상적으로 추정한다.Logical plan: Query Block 을 옮 겨 다 니 며 실행 트 리 Operator Tree 로 번역 합 니 다.Logical plan optimizer: 논리 층 최적화 기 는 Operator Tree 변환 을 하고 불필요 한 ReduceSink Operator 를 합병 하여 shuffle 데이터 양 을 감소 합 니 다.Physical plan: Operator Tree 를 옮 겨 다 니 며 MapReduce 작업 으로 번역 합 니 다.Logical plan optimizer: 물리 층 최적화 기 는 MapReduce 작업 의 변환 을 진행 하여 최종 실행 계획 을 생 성 합 니 다.
step 1: SQL Parser 아래 그림 에서 보 듯 이 sql 문 구 는 세 부분 AST 의 첫 번 째 부분 에 대응 하 는 SQL 문 구 를 FROM access 로 해석 할 수 있 습 니 다.log_hbase a JOIN product_hbase p ON (a.prono=p.prono)。 insert overwrite table 은 두 번 째 부분 에 대응 합 니 다.selecta. user, a. prono, p. maker, p. price 는 세 번 째 부분 에 대응 합 니 다.
Paste_Image.png
step 2: Semantic Analyzer 이 단 계 는 AST 를 기본 조회 블록 QB 로 변환 합 니 다. 다음 그림 에서 보 듯 이 QB 의 대상 은 다음 과 같은 속성 을 포함 합 니 다. alias ToTabs: 표 의 별명 정 보 를 저장 합 니 다 alias ToSubq: 하위 조회 정 보 를 저장 합 니 다 qbm: 모든 입력 표 의 메타 정 보 를 저장 합 니 다. 예 를 들 어 표 가 HDFS 에 있 는 경로, 표 데 이 터 를 저장 하 는 파일 형식 등 입 니 다.
QBParseInfo 대상 은 다음 과 같은 속성 을 포함 합 니 다: joinExpr: TOK 저장JOIN 노드 정보 destToxx: 출력 과 각 작업 의 ASTnode 노드 의 대응 관 계 를 저장 합 니 다.
Paste_Image.png
다음 그림 에서 표 의 별명 a, p 는 alias Totabs 에 저장 되 어 있 으 며 각각 "access log hbase", "product hbase" 에 대응 합 니 다. TOK JOIN 정 보 는 ParseInfo 대상 에 저 장 됩 니 다: joinExpr
Paste_Image.png
다음 그림 에서 보 듯 이 TOK DESTINATION 노드 는 nameToDest 속성 에 저 장 됩 니 다.
Paste_Image.png
다음 그림 에서 보 듯 이 TOK SELECT 노드 는 nameToDest 속성 에 저 장 됩 니 다.
Paste_Image.png
step 3: Logical Plan 이 단 계 는 쿼 리 블록 QB 를 조작 트 리 로 변환 하 는 것 입 니 다. 트 리 의 기본 연산 자 는 TableScanOperator, SelectOperator, FilterOperator, JoinOperator, GroupByOperator, ReduceSink Operator 를 포함 합 니 다. TableScanOperator: 데이터 시트 의 데 이 터 를 스 캔 하여 원 표 에서 데 이 터 를 가 져 옵 니 다. JoinOperator 는 Join 작업 을 마 쳤 습 니 다. FilterOperator 는 필터 작업 을 마 쳤 습 니 다.sql 에 대응 하 는 where 구문 기능 ReduceSink Operator: Hive Map 단계 의 끝, Reduce 단계 의 시작 을 표시 합 니 다. SelectOperator: reduce 단계 출력 select 의 열 FileSink Operator: 결과 데 이 터 를 출력 파일 로 생 성 합 니 다.
두 개의 입력 표 에서 데 이 터 를 읽 고 operator 트 리 로 두 개의 Table ScanOperator 노드 를 표시 합 니 다.
Paste_Image.png
Join 은 reduce 단계 에서 실 행 됩 니 다. join 노드 를 실행 하기 전에 ReduceSink Operator 노드 두 개 를 추가 하여 현재 map 단계 가 끝 났 고 reduce 단계 에 들 어 갔 음 을 표시 합 니 다.
Paste_Image.png
selectoperator 노드, reduce 노드 에서 select 가 지정 한 열 값 을 가 져 옵 니 다.
Paste_Image.png
nameToDest ASTnode 노드 를 FileSink Operator 노드 로 변환 하여 결 과 를 대상 파일 에 기록 합 니 다.
Paste_Image.png
위의 몇 가지 전환 절 차 를 통 해 최종 적 으로 생 성 된 logical 계획 트 리.
Paste_Image.png
logical plan tree 는 logical plan optimizer 를 통 해 최적화 할 수 있 습 니 다. 완 성 된 논리 최적화 트 리 는 물리 집행 계획 과 물리 집행 계획 최적화 로 전환 할 수 있 습 니 다. 본 고 는 상세 한 소 개 를 하지 않 고 추 후 시간 이 있 으 면 다시 보충 할 수 있 습 니 다.
PS: Hive sql 컴 파일 후의 실행 계획 보기 Hive > explain select * from tablename;
참고 문서:http://tech.meituan.com/hive-sql-to-mapreduce.html http://www.slideshare.net/recruitcojp/internal-hive http://lxw1234.com/archives/2015/09/476.htm
작성 자: wujustin 링크:http://www.jianshu.com/p/660fd157c5eb 출처: 약서 저작권 은 작가 에 게 있 습 니 다. 상업 전 재 는 작가 에 게 연락 하여 권한 을 수 여 받 으 십시오. 비 상업 전 재 는 출처 를 밝 혀 주 십시오.

좋은 웹페이지 즐겨찾기