[Hive] HiveServer 2 개요

3666 단어 Hive
1. HiveServer1
Hive Server 는 원 격 클 라 이언 트 가 각종 프로 그래 밍 언어 로 Hive 에 요청 하고 결 과 를 검색 할 수 있 도록 선택 할 수 있 는 서비스 입 니 다.HiveServer 는 Apache ThriftTM (http://thrift.apache.org/) 위 에 있 는 것 이기 때문에 때로는 Thrift Server 라 고 불 릴 수 있 습 니 다. 이 는 새로운 서비스 인 Hive Server 2 도 Thrift 위 에 세 워 졌 기 때 문 입 니 다. Hive Server 2 가 도 입 된 후부 터 Hive Server 도 Hive Server 1 이 라 고 불 립 니 다.
경고 하 다.
HiveServer 는 여러 클 라 이언 트 의 동시 요청 을 처리 할 수 없습니다. 이것 은 사실상 HiveServer 가 내 보 낸 Thrift 인터페이스 에 가해 진 제한 이 며, HiveServer 소스 코드 를 수정 해서 해결 할 수 없습니다.
Hive Server 2 는 Hive Server 를 재 작성 하여 이러한 문 제 를 해결 하 였 으 며, Hive 0.11.0 버 전부터 시작 하 였 다.Hive Server 2 를 사용 하 는 것 을 권장 합 니 다.
Hive 1.0.0 버 전 (이전 에는 0.14.1 버 전) 부터 Hive Server 가 삭제 되 기 시작 했다.Hive Server 2 로 전환 하 십시오.
2. HiveServer2
2.1 도입
Hive Server 2 (HS2) 는 클 라 이언 트 가 Hive 조 회 를 수행 할 수 있 는 서비스 입 니 다.Hive Server 2 는 Hive Server 1 의 개선 판 으로 Hive Server 1 이 폐기 되 었 습 니 다.Hive Server 2 는 다 중 클 라 이언 트 병행 과 인증 을 지원 할 수 있 습 니 다.API 클 라 이언 트 (예 를 들 어 JDBC 와 ODBC) 를 개방 하 는 데 더 좋 은 지원 을 제공 하기 위 한 것 입 니 다.
HiveServer 2 단일 프로 세 스 가 실행 되 며 Thrift 기반 Hive 서비스 (TCP 또는 HTTP) 와 웹 UI 에 사용 되 는 Jetty 웹 서버 를 포함 하여 조합 서 비 스 를 제공 합 니 다.
2.2 구조
Thrift 기반 Hive 서 비 스 는 Hive Server 2 의 핵심 으로 Hive 조회 (예 를 들 어 Beeline 에서) 를 유지 하 는 것 을 책임 집 니 다.Thrift 는 크로스 플랫폼 서 비 스 를 구축 하 는 RPC 프레임 워 크 다.그 창 고 는 서버, Transport, Protocol, 프로세서 등 4 층 으로 구성 되 어 있다.있다 https://thrift.apache.org/docs/concepts 레이 어 링 에 대한 더 자세 한 정 보 를 찾 습 니 다.
2.2.1 Server
HiveServer 2 는 TCP 모드 에서 TThreadPoolServer (Thrift 에서 온 것) 를 사용 하고 HTTP 모드 에서 Jetty Server 를 사용 합 니 다.
TThread PoolServer 는 모든 TCP 연결 에 작업 스 레 드 를 할당 합 니 다.연결 이 비어 있 더 라 도 모든 스 레 드 는 연결 과 연결 되 어 있 습 니 다.따라서 대량의 동시 연결 로 인해 대량의 스 레 드 가 발생 하여 잠재 적 인 성능 문 제 를 초래한다.앞으로 HiveServer 2 는 TCP 모드 의 다른 유형의 서버 로 전환 할 수 있 습 니 다. 예 를 들 어 TThreaded Selector Server.
2.2.2 Transport
클 라 이언 트 와 서버 사이 에 프 록 시가 필요 하 다 면 (예 를 들 어 부하 균형 이나 안전 상의 이유 로) HTTP 모드 가 필요 합 니 다.TCP 모드 와 같은 지원 을 받 는 이유 다.Hive 설정 속성 hive.server2.transport.mode 을 통 해 Thrift 서비스의 전송 모드 를 지정 할 수 있 습 니 다.
2.2.3 Protocol
협의 책임 의 서열 화 와 반 서열 화.Hive Server 2 는 현재 Thrift 프로 토 콜 로 서열 화 TBinaryProtocol 하고 있다.앞으로 TCompactprotocol 과 같은 다른 프로 토 콜 을 더 많이 고려 할 수 있 고 더 많은 성능 평 가 를 고려 할 수 있 습 니 다.
2.2.4 프로세서
처리 프로 세 스 는 요청 을 처리 하 는 응용 프로그램의 논리 입 니 다.예 를 들 어 ThriftCLIService.ExecuteStatement() 방법 은 Hive 조 회 를 컴 파일 하고 집행 하 는 논 리 를 실현 했다.
2.3 의존
  • Metastore metastore 는 내장 형 (HiveServer 2 와 같은 과정) 이나 원 격 서버 (Thrift 기반 서비스) 로 설정 할 수 있 습 니 다.HS2 는 컴 파일 에 필요 한 메타 데 이 터 를 조회 하 는 것 과 관련 이 있다.
  • 하 둡 클 러 스 터 하 이브 서버 2 는 각종 실행 엔진 (MapReduce / Tez / 스파크) 의 물리 적 실행 계획 을 준비 하고 작업 을 하 둡 클 러 스 터 에 제출 해 수행 했다.

  • 3. JDBC Client
    JDBC 드라이버 를 사용 하여 클 라 이언 트 와 HiveServer 2 가 상호작용 을 하도록 추천 합 니 다.JDBC 대신 Thrift 클 라 이언 트 를 직접 사용 하 는 사례 (예 를 들 어 Hadoop Hue) 가 있 습 니 다.다음은 첫 번 째 조회 와 관련 된 일련의 API 호출 입 니 다.
  • JDBC 클 라 이언 트 (예 를 들 어 Beeline) 는 전송 연결 (예 를 들 어 TCP 연결) 을 초기 화하 고 OpenSession API 를 호출 하여 Session Handle 을 가 져 와 HiveConnection 을 만 듭 니 다.세 션 은 서버 에서 만 듭 니 다.
  • HiveStatement (JDBC 기준 에 따라) 을 실행 하고 Thrift 클 라 이언 트 는 ExecuteStatement API 를 호출 합 니 다.API 호출 에서 Session Handle 정 보 는 조회 정보 와 함께 서버 에 전달 된다.
  • HiveServer 2 서버 가 요청 을 받 고 드라이버 (CommandProcessor) 를 조회 분석 하고 컴 파일 하도록 합 니 다.이 드라이버 는 배경 작업 을 시작 하면 Hadoop 과 상호작용 을 한 다음 클 라 이언 트 에 응답 을 되 돌려 줍 니 다.Execute Statement API 의 비동기 디자인 입 니 다.응답 은 서버 에서 만 든 OperationHandle 을 포함 합 니 다.
  • 클 라 이언 트 는 OperationHandle 과 HiveServer 2 의 상호작용 을 사용 하여 실행 상 태 를 조회 합 니 다.

  • 원문:https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Overview#HiveServer2Overview-Introduction

    좋은 웹페이지 즐겨찾기