Hive-소개

'빅 데이터'라는 용어는 방대한 양, 고속 및 날마다 증가하는 다양한 데이터를 포함하는 대규모 데이터 세트 모음에 사용됩니다. 전통적인 데이터 관리 시스템을 사용하면 빅 데이터를 처리하기가 어렵습니다. 따라서 Apache Software Foundation은 빅 데이터 관리 및 처리 문제를 해결하기 위해 Hadoop이라는 프레임 워크를 도입했습니다.

하둡

Hadoop은 분산 환경에서 빅 데이터를 저장하고 처리하기위한 오픈 소스 프레임 워크입니다. 하나는 MapReduce이고 다른 하나는 Hadoop 분산 파일 시스템 (HDFS)입니다.

  • MapReduce: 대규모 상용 하드웨어 클러스터에서 대량의 구조화, 반 구조화 및 비 구조화 데이터를 처리하기위한 병렬 프로그래밍 모델입니다.

  • HDFS:Hadoop 분산 파일 시스템은 데이터 세트를 저장하고 처리하는 데 사용되는 Hadoop 프레임 워크의 일부입니다. 상용 하드웨어에서 실행되는 내결함성 파일 시스템을 제공합니다.

Hadoop 에코 시스템에는 Hadoop 모듈을 지원하는 데 사용되는 Sqoop, Pig 및 Hive와 같은 다양한 하위 프로젝트 (도구)가 포함되어 있습니다.

  • Sqoop: HDFS와 RDBMS간에 데이터를 가져오고 내보내는 데 사용됩니다.

  • Pig: MapReduce 작업을위한 스크립트를 개발하는 데 사용되는 절차 적 언어 플랫폼입니다.

  • Hive: MapReduce 작업을 수행하기 위해 SQL 유형 스크립트를 개발하는 데 사용되는 플랫폼입니다.

Note: MapReduce 작업을 실행하는 방법에는 여러 가지가 있습니다.

  • 구조화, 반 구조화 및 비 구조화 데이터에 Java MapReduce 프로그램을 사용하는 전통적인 접근 방식입니다.
  • Pig를 사용하여 구조화 된 데이터와 반 구조화 된 데이터를 처리하는 MapReduce의 스크립팅 접근 방식입니다.
  • Hive를 사용하여 구조화 된 데이터를 처리하기위한 MapReduce 용 Hive 쿼리 언어 (HiveQL 또는 HQL).

Hive 란?

Hive는 Hadoop에서 구조화 된 데이터를 처리하는 데이터웨어 하우스 인프라 도구입니다. Hadoop 위에 상주하여 빅 데이터를 요약하고 쿼리 및 분석을 쉽게합니다.

처음에 Hive는 Facebook에 의해 개발되었으며 나중에 Apache Software Foundation에서이를 채택하여 Apache Hive라는 이름으로 오픈 소스로 개발했습니다. 다른 회사에서 사용합니다. 예를 들어 Amazon은 Amazon Elastic MapReduce에서이를 사용합니다.

하이브는 아닙니다

  • 관계형 데이터베이스
  • OLTP (OnLine Transaction Processing) 설계
  • 실시간 쿼리 및 행 수준 업데이트를위한 언어

Hive의 특징

  • 스키마를 데이터베이스에 저장하고 데이터를 HDFS로 처리합니다.
  • OLAP 용으로 설계되었습니다.
  • HiveQL 또는 HQL이라는 쿼리를위한 SQL 유형 언어를 제공합니다.
  • 친숙하고 빠르며 확장 가능하며 확장 가능합니다.

Hive의 아키텍처

다음 구성 요소 다이어그램은 Hive의 아키텍처를 보여줍니다.

이 구성 요소 다이어그램에는 다른 단위가 포함되어 있습니다. 다음 표는 각 장치를 설명합니다.

단위 이름 조작
사용자 인터페이스 Hive는 사용자와 HDFS 간의 상호 작용을 생성 할 수있는 데이터웨어 하우스 인프라 소프트웨어입니다. Hive가 지원하는 사용자 인터페이스는 Hive 웹 UI, Hive 명령 줄 및 Hive HD Insight (Windows 서버에서)입니다.
메타 스토어 Hive는 테이블, 데이터베이스, 테이블의 열, 데이터 유형 및 HDFS 매핑의 스키마 또는 메타 데이터를 저장할 각 데이터베이스 서버를 선택합니다.
HiveQL 프로세스 엔진 HiveQL은 Metastore의 스키마 정보를 쿼리하는 SQL과 유사합니다. MapReduce 프로그램에 대한 전통적인 접근 방식을 대체하는 것 중 하나입니다. Java로 MapReduce 프로그램을 작성하는 대신 MapReduce 작업에 대한 쿼리를 작성하여 처리 할 수 ​​있습니다.
실행 엔진 HiveQL 프로세스 엔진과 MapReduce의 결합 부분은 Hive 실행 엔진입니다. 실행 엔진은 쿼리를 처리하고 MapReduce 결과와 동일한 결과를 생성합니다. MapReduce의 풍미를 사용합니다.
HDFS 또는 HBASE Hadoop 분산 파일 시스템 또는 HBASE는 데이터를 파일 시스템에 저장하는 데이터 저장 기술입니다.

하이브 작업

다음 다이어그램은 Hive와 Hadoop 간의 워크 플로를 보여줍니다.

다음 표는 Hive가 Hadoop 프레임 워크와 상호 작용하는 방식을 정의합니다.

단계 아니. 조작
1 Execute Query

명령 줄 또는 웹 UI와 같은 Hive 인터페이스는 실행할 쿼리를 드라이버 (JDBC, ODBC 등의 모든 데이터베이스 드라이버)로 보냅니다.

2 Get Plan

드라이버는 구문 및 쿼리 계획 또는 쿼리 요구 사항을 확인하기 위해 쿼리를 구문 분석하는 쿼리 컴파일러의 도움을받습니다.

Get Metadata

컴파일러는 메타 스토어 (모든 데이터베이스)에 메타 데이터 요청을 보냅니다.

4 Send Metadata

Metastore는 컴파일러에 대한 응답으로 메타 데이터를 보냅니다.

5 Send Plan

컴파일러는 요구 사항을 확인하고 계획을 드라이버에 다시 보냅니다. 여기까지 쿼리의 구문 분석 및 컴파일이 완료되었습니다.

6 Execute Plan

드라이버는 실행 계획을 실행 엔진으로 보냅니다.

7 Execute Job

내부적으로 작업 실행 프로세스는 MapReduce 작업입니다. 실행 엔진은 작업을 Name 노드에있는 JobTracker로 보내고이 작업을 Data 노드에있는 TaskTracker에 할당합니다. 여기서 쿼리는 MapReduce 작업을 실행합니다.

7.1 Metadata Ops

실행 중에 실행 엔진은 Metastore를 사용하여 메타 데이터 작업을 실행할 수 있습니다.

8 Fetch Result

실행 엔진은 데이터 노드에서 결과를받습니다.

9 Send Results

실행 엔진은 이러한 결과 값을 드라이버에 보냅니다.

10 Send Results

드라이버는 결과를 Hive 인터페이스로 보냅니다.