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 인터페이스로 보냅니다. |