아파치 하이브
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
아파치 하이브는 HDFS, 아마존 S3 등과 같은 파일 시스템에 저장된 대규모 데이터 세트를 분석하기 위한 데이터 웨어하우스 시스템이다. HiveQL이라는 SQL 유사 쿼리 언어를 제공하며, 스키마 온 리드 방식을 사용한다. 쿼리는 MapReduce, 아파치 테즈, 스파크 작업으로 변환되어 하둡의 YARN에서 실행된다. 하이브는 다양한 저장 유형 지원, 메타데이터 저장, 압축 데이터 작업 지원, 사용자 정의 함수 제공 등의 기능을 제공하며, 메타데이터는 RDBMS 형식으로 저장된다. 하이브 아키텍처는 메타스토어, 드라이버, 컴파일러, 옵티마이저, 익스큐터, CLI, UI 및 스리프트 서버로 구성된다. HiveQL은 SQL을 기반으로 하지만, SQL-92 표준을 엄격하게 따르지는 않으며, 쓰기 시 스키마를 적용하지 않고 읽기 시 스키마를 사용한다. 하이브는 ACID 트랜잭션을 지원하며, Hadoop 보안과의 통합을 통해 Kerberos 인증을 지원한다.
더 읽어볼만한 페이지
- 페이스북 소프트웨어 - HHVM
HHVM은 페이스북에서 개발한 PHP 및 Hack 언어 실행 엔진으로, JIT 컴파일을 통해 높은 성능을 제공하며 웹 개발 분야에 새로운 가능성을 제시했다. - 페이스북 소프트웨어 - 페이스북 메신저
페이스북 메신저는 2008년 페이스북 채팅으로 시작하여 2011년 독립적인 모바일 앱으로 출시된 페이스북의 인스턴트 메시징 서비스로, 다양한 기능 추가와 논란 속에서도 꾸준히 성장하여 2020년에는 메신저 룸을 출시하고 COVID-19 팬데믹 기간 동안 메시지 트래픽이 크게 증가했다. - 하둡 - 아파치 하둡
아파치 하둡은 대용량 데이터를 분산 처리하기 위한 자바 기반의 오픈 소스 프레임워크로, HDFS, 맵리듀스, YARN 등의 모듈로 구성되어 클라우드 환경에서도 사용된다. - 하둡 - 맵리듀스
맵리듀스는 대용량 데이터 처리를 위해 구글에서 개발한 프로그래밍 모델이자 프레임워크로, Map과 Reduce 함수를 사용하여 데이터를 병렬 처리하며 하둡 등의 오픈 소스 구현을 통해 널리 쓰인다. - 2015년 소프트웨어 - 알파고
알파고는 구글 딥마인드가 개발한 인공지능 바둑 프로그램으로, 심층 신경망과 몬테카를로 트리 탐색 알고리즘을 결합하여 자가 학습을 통해 인간을 뛰어넘는 바둑 실력을 달성하며 인공지능 기술 발전과 사회적 영향에 대한 논의를 촉발했다. - 2015년 소프트웨어 - 구글 포토
구글 포토는 사진 및 동영상 저장, 공유, 관리 기능을 제공하는 구글의 클라우드 기반 서비스로, 자동 분류, 얼굴 인식, 검색 기능을 제공하지만 2021년부터 무료 무제한 저장 용량 제공 정책이 변경되었고, 2024년에는 기술의 군사적 이용에 대한 윤리적 논란이 있었다.
아파치 하이브 - [IT 관련 정보]에 관한 문서 | |
---|---|
기본 정보 | |
이름 | 아파치 하이브 |
종류 | 데이터 웨어하우스 |
개발자 | 아파치 소프트웨어 재단 |
최초 개발자 | 페이스북 |
최신 안정화 버전 | 3.1.3 |
최신 안정화 버전 날짜 | 2022년 4월 8일 |
최신 미리보기 버전 | 4.0.0-beta-1 |
최신 미리보기 버전 날짜 | 2023년 8월 14일 |
운영 체제 | 크로스 플랫폼 |
프로그래밍 언어 | 자바 |
라이선스 | 아파치 라이선스 2.0 |
웹사이트 | 아파치 하이브 공식 웹사이트 |
저장소 | 아파치 하이브 GitHub 저장소 |
출시일 | 2010년 10월 1일 |
기술 정보 | |
쿼리 언어 | SQL |
데이터 모델 | 관계형 데이터베이스 모델 |
지원 파일 형식 | 텍스트 파일 RCFile ORC Parquet Avro SequenceFile |
특징 | |
특징 | 대규모 데이터 세트의 저장, 쿼리 및 분석을 지원 SQL과 유사한 쿼리 언어 (HiveQL) 제공 사용자 정의 함수 (UDF) 지원 하둡 기반의 분산 처리 다양한 데이터 소스 통합 |
활용 사례 | |
활용 사례 | 데이터 웨어하우스 구축 로그 분석 클릭스트림 분석 사기 탐지 광고 타겟팅 |
2. 특징
아파치 하이브는 HDFS 및 아마존 S3 파일 시스템, Alluxio와 같은 호환 가능한 파일 시스템에 저장된 대규모 데이터 세트 분석을 지원한다. HiveQL[9]이라는 SQL과 유사한 쿼리 언어를 제공하며, 스키마 온 리드 방식을 사용하고 쿼리를 MapReduce, 아파치 테즈(Apache Tez)[10] 및 스파크 작업으로 투명하게 변환한다. 세 가지 실행 엔진 모두 하둡의 리소스 협상자, YARN에서 실행될 수 있다. 쿼리 속도를 높이기 위해 인덱스를 제공했지만, 이 기능은 버전 3.0에서 제거되었다[11].[36]
하이브의 다른 기능은 다음과 같다.
- 일반 텍스트, RCFile, HBase, ORC 등 다양한 저장 유형[40]
- 관계형 데이터베이스 관리 시스템에 메타데이터를 저장하여 쿼리 실행 중 의미 검사를 수행하는 시간을 크게 단축[40]
- DEFLATE, BWT, 스내피 등을 포함한 알고리즘을 사용하여 하둡 생태계에 저장된 압축된 데이터에 대한 작업[40]
- 날짜, 문자열 및 기타 데이터 마이닝 도구를 조작하는 내장 사용자 정의 함수 (UDF). 하이브는 내장 함수에서 지원하지 않는 사용 사례를 처리하기 위해 UDF 세트를 확장하는 것을 지원[40]
- SQL과 유사한 쿼리(HiveQL)는 암묵적으로 MapReduce, Tez 또는 Spark 작업으로 변환[40]
기본적으로 하이브는 메타데이터를 내장된 아파치 더비 데이터베이스에 저장하며, MySQL과 같은 다른 클라이언트/서버 데이터베이스를 선택적으로 사용할 수 있다.[12],[37]
하이브에서 지원하는 처음 4가지 파일 형식은 일반 텍스트,[13] 시퀀스 파일, ORC(Optimized Row Columnar) 형식[14][15] 및 RCFile이었다.[16][17] 아파치 파케이는 0.10 이후 버전에서는 플러그인을 통해 읽을 수 있으며, 0.13부터는 기본적으로 지원된다.[18][19]
3. 아키텍처
아파치 하이브 아키텍처는 다음과 같은 주요 구성 요소로 이루어져 있다.
- '''메타스토어(Metastore):''' 테이블의 스키마, 위치 등 메타데이터를 저장한다. 파티션 메타데이터도 포함되어 있어, 드라이버가 클러스터에 분산된 데이터 세트의 진행 상황을 추적하는 데 도움을 준다.[20] 데이터는 RDBMS 형식으로 저장되며, 백업 서버를 통해 정기적으로 복제되어 데이터 손실 시 복구할 수 있다.
- '''드라이버(Driver):''' HiveQL 문을 수신하는 컨트롤러 역할을 한다. 세션을 생성하여 문의 실행을 시작하고, 실행 과정과 진행 상황을 모니터링한다. HiveQL 문 실행 중 생성되는 메타데이터를 저장하며, Reduce 작업 이후 쿼리 결과를 수집하는 지점 역할을 한다.[16]
- '''컴파일러(Compiler):''' HiveQL 쿼리를 컴파일하여 실행 계획으로 변환한다. 실행 계획에는 Hadoop MapReduce가 수행해야 하는 작업과 단계가 포함된다. 컴파일러는 쿼리를 추상 구문 트리(AST)로 변환하고, 호환성 및 컴파일 시간 오류를 확인한 후 방향 비순환 그래프(DAG)로 변환한다.[21] DAG는 입력 쿼리와 데이터를 기반으로 연산자를 MapReduce 단계 및 작업으로 나눈다.[20]
- '''옵티마이저(Optimizer):''' 실행 계획에 다양한 변환을 수행하여 최적화된 DAG를 얻는다. 조인 파이프라인을 단일 조인으로 변환하는 등 변환을 함께 집계하여 성능을 향상시킨다.[22] 또한 축소 작업 전에 데이터에 변환을 적용하는 작업을 분할하여 성능과 확장성을 높인다. YSmart[23]라는 옵티마이저는 상관된 MapReduce 작업을 단일 MapReduce 작업으로 병합하여 실행 시간을 단축시킨다.
- '''익스큐터(Executor):''' 컴파일 및 최적화 후, 작업을 실행한다. Hadoop의 작업 추적기와 상호 작용하여 실행할 작업을 예약하고, 작업 파이프라인을 처리하여 종속성이 있는 작업이 순서대로 실행되도록 한다.[22]
- '''CLI, UI 및 스리프트 서버''': 명령줄 인터페이스(CLI)는 사용자가 쿼리를 제출하고, 지침을 제공하며, 프로세스 상태를 모니터링하여 하이브와 상호 작용할 수 있는 사용자 인터페이스를 제공한다. 스리프트 서버를 사용하면 외부 클라이언트가 JDBC 또는 ODBC 프로토콜과 유사하게 네트워크를 통해 하이브와 상호 작용할 수 있다.[24]
4. HiveQL
HiveQL은 SQL을 기반으로 하지만, SQL-92 표준을 엄격하게 따르지는 않는다. HiveQL은 SQL에 없는 ''다중 테이블 삽입'', ''테이블을 선택하여 생성'' 등과 같은 확장 기능을 제공한다.
HiveQL은 데이터베이스 트랜잭션 및 구체화된 뷰에 대한 지원이 부족했고, 하위 쿼리 지원도 제한적이었다.[25][26] ACID 기능을 완전히 갖춘 삽입, 업데이트 및 삭제에 대한 지원은 0.14 릴리스에서 제공되었다.[27]
내부적으로 컴파일러는 HiveQL 문을 MapReduce, Tez 또는 Spark 작업의 방향 비순환 그래프로 변환하며, 이는 실행을 위해 하둡에 제출된다.[28]
4. 1. 예제
sqlDROP TABLE IF EXISTS docs;
CREATE TABLE docs (line STRING);
```
`docs` 테이블이 있는지 확인하고, 있다면 삭제한다. `line`이라는 `STRING` 형식의 단일 열이 있는 `docs`라는 새 테이블을 만든다.
```sql
LOAD DATA INPATH 'input_file' OVERWRITE INTO TABLE docs;
```
지정된 파일 또는 디렉토리(이 경우 "input_file")를 테이블로 로드한다. `OVERWRITE`는 데이터가 로드되는 대상 테이블을 다시 쓰도록 지정한다. 그렇지 않으면 데이터가 추가된다.
```sql
CREATE TABLE word_counts AS
SELECT word, count(1) AS count FROM
(SELECT explode(split(line, '\s')) AS word FROM docs) temp
GROUP BY word
ORDER BY word;
```
`CREATE TABLE word_counts AS SELECT word, count(1) AS count` 쿼리는 `word` 및 `count`의 두 열이 있는 `word_counts`라는 테이블을 만든다. 이 쿼리는 내부 쿼리 `(SELECT explode(split(line, '\s')) AS word FROM docs) temp`에서 입력을 가져온다. 이 쿼리는 입력 단어를 `temp`로 별칭이 지정된 임시 테이블의 서로 다른 행으로 분할하는 역할을 한다. `GROUP BY WORD`는 키를 기반으로 결과를 그룹화한다. 이렇게 하면 `count` 열에 `word` 열의 각 단어에 대한 발생 횟수가 저장된다. `ORDER BY WORDS`는 단어를 알파벳순으로 정렬한다.[5]
5. 기존 데이터베이스와의 비교
하이브는 SQL 방언을 사용하지만, 관계형 데이터베이스와 비교하여 구조와 작동 방식에 많은 차이점이 있다. 하이브는 하둡 생태계를 기반으로 구축되었기 때문에 하둡 및 맵리듀스의 제약 조건을 따라야 한다.[25]
기존 데이터베이스는 테이블에 스키마를 적용하고, 데이터가 테이블에 로드될 때 스키마를 적용한다. 이를 통해 데이터베이스는 입력된 데이터가 테이블 정의에 맞는지 확인한다. 이러한 설계를 ''쓰기 시 스키마''라고 한다. 반면 하이브는 쓰기 시점에 테이블 스키마에 대한 데이터 검증을 하지 않고, 데이터를 읽을 때 런타임 검사를 수행한다. 이 모델을 ''읽기 시 스키마''라고 한다.[25] 두 방식 모두 장단점이 있다.
기존 데이터베이스는 로딩 시간에 테이블 스키마에 대해 데이터를 검사하므로 데이터를 로드하는 데 시간이 더 오래 걸리지만, 데이터 손상을 방지하기 위한 품질 검사가 수행된다. 손상된 데이터를 조기에 발견하여 예외 처리를 할 수 있다. 테이블은 데이터 로드 시 스키마와 일치하도록 강제되므로 쿼리 시간 성능이 더 좋다. 반면 하이브는 스키마 검사 없이 데이터를 동적으로 로드할 수 있어 초기 로딩은 빠르지만, 쿼리 시 성능이 상대적으로 느리다. 하이브는 로딩 시 스키마를 사용할 수 없고 나중에 동적으로 생성되는 경우에 유리하다.[25]
트랜잭션은 기존 데이터베이스의 핵심 작업이다. 일반적인 RDBMS처럼 하이브는 ACID 속성, 즉 원자성, 일관성, 격리성, 지속성을 모두 지원한다. 하이브 0.13에서는 트랜잭션이 도입되었지만 파티션 수준으로만 제한되었다.[29] 하이브 0.14에서는 완전한 ACID 속성을 지원하기 위해 기능이 추가되었다. 하이브 0.14 이상은 ''INSERT, DELETE, UPDATE''와 같은 다양한 행 수준 트랜잭션을 제공한다.[30] 이러한 트랜잭션을 활성화하려면 `hive.support.concurrency`, `hive.enforce.bucketing`, `hive.exec.dynamic.partition.mode`와 같은 구성 속성을 적절하게 설정해야 한다.[31]
6. 보안
Hive v0.7.0은 하둡 보안과의 통합을 추가했다. 하둡은 보안을 제공하기 위해 Kerberos 인증 지원을 사용하기 시작했다. Kerberos는 클라이언트와 서버 간의 상호 인증을 허용한다. 이 시스템에서 티켓에 대한 클라이언트의 요청은 요청과 함께 전달된다. 이전 버전의 하둡에는 `hadoop.job.ugi` 속성을 설정하여 사용자가 사용자 이름을 스푸핑할 수 있는 등 여러 가지 문제가 있었다. 또한 MapReduce 작업이 동일한 사용자(하둡 또는 mapred)에서 실행되었다. Hive v0.7.0에서 하둡 보안과의 통합을 통해 이러한 문제는 대부분 해결되었다. TaskTracker 작업은 이를 실행한 사용자에 의해 실행되며, `hadoop.job.ugi` 속성을 설정하여 더 이상 사용자 이름을 스푸핑할 수 없다. Hive에서 새로 생성된 파일에 대한 권한은 HDFS에 의해 결정된다. 하둡 분산 파일 시스템 인증 모델은 사용자, 그룹 및 기타의 세 가지 엔터티와 읽기, 쓰기 및 실행의 세 가지 권한을 사용한다. 새로 생성된 파일에 대한 기본 권한은 Hive 구성 변수 `hive.files.umask.value`에 대한 unmask 값을 변경하여 설정할 수 있다.[5]
참조
[1]
웹사이트
Apache Hive - Downloads
https://hive.apache.[...]
2022-11-21
[2]
웹사이트
Release release-1.0.0 · apache/Hive
https://github.com/a[...]
[3]
서적
Pro Hadoop
https://archive.org/[...]
Apress
[4]
간행물
Major Technical Advancements in Apache Hive
[5]
서적
Programming Hive [Book]
https://www.safaribo[...]
[6]
Slideshare
Use Case Study of Hive/Hadoop
http://www.slideshar[...]
[7]
Youtube
OSCON Data 2011, Adrian Cockcroft, "Data Flow at Netflix"
https://www.youtube.[...]
[8]
문서
Amazon Elastic MapReduce Developer Guide
http://s3.amazonaws.[...]
[9]
문서
HiveQL Language Manual
https://cwiki.apache[...]
[10]
문서
Apache Tez
http://tez.apache.or[...]
[11]
문서
Hive Language Manual
https://cwiki.apache[...]
[12]
서적
Hadoop in Action
Manning Publications
[13]
웹사이트
Optimising Hadoop and Big Data with Text and HiveOptimising Hadoop and Big Data with Text and Hive
http://www.semantiko[...]
2014-11-16
[14]
웹사이트
ORC Language Manual
https://cwiki.apache[...]
2017-04-24
[15]
간행물
Understanding Insights into the Basic Structure and Essential Issues of Table Placement Methods in Clusters
[16]
웹사이트
Facebook's Petabyte Scale Data Warehouse using Hive and Hadoop
http://www.sfbayacm.[...]
2011-09-09
[17]
간행물
RCFile: A Fast and Space-efficient Data Placement Structure in MapReduce-based Warehouse Systems
https://ieeexplore.i[...]
[18]
웹사이트
Parquet
https://cwiki.apache[...]
2015-02-02
[19]
웹사이트
A Powerful Big Data Trio: Spark, Parquet and Avro
http://zenfractal.co[...]
2015-02-02
[20]
웹사이트
Design - Apache Hive - Apache Software Foundation
https://cwiki.apache[...]
2016-09-12
[21]
웹사이트
Abstract Syntax Tree
http://c2.com/cgi/wi[...]
2016-09-12
[22]
학술지
Improving the performance of Hadoop Hive by sharing scan and computation tasks
2014-07-29
[23]
간행물
YSmart: Yet Another SQL-to-MapReduce Translator
https://ieeexplore.i[...]
[24]
웹사이트
HiveServer - Apache Hive - Apache Software Foundation
https://cwiki.apache[...]
2016-09-12
[25]
서적
Hadoop: The Definitive Guide
https://archive.org/[...]
O'Reilly Media
[26]
문서
Hive Language Manual
https://cwiki.apache[...]
[27]
문서
ACID and Transactions in Hive
https://cwiki.apache[...]
[28]
웹사이트
Hive A Warehousing Solution Over a MapReduce Framework
http://www.vldb.org/[...]
2011-09-03
[29]
웹사이트
Introduction to Hive transactions
http://datametica.co[...]
2016-09-12
[30]
웹사이트
Hive Transactions - Apache Hive - Apache Software Foundation
https://cwiki.apache[...]
2016-09-12
[31]
웹사이트
Configuration Properties - Apache Hive - Apache Software Foundation
https://cwiki.apache[...]
2016-09-12
[32]
서적
Pro Hadoop
Apress
[33]
Slideshare
Use Case Study of Hive/Hadoop
http://www.slideshar[...]
[34]
Youtube
OSCON Data 2011, Adrian Cockcroft, "Data Flow at Netflix"
https://www.youtube.[...]
[35]
문서
Amazon Elastic MapReduce Developer Guide
http://s3.amazonaws.[...]
[36]
웹사이트
Working with Students to Improve Indexing in Apache Hive
http://www.facebook.[...]
[37]
서적
Hadoop in Action
Manning Publications
[38]
웹사이트
Facebook's Petabyte Scale Data Warehouse using Hive and Hadoop
http://www.sfbayacm.[...]
[39]
웹사이트
RCFile: A Fast and Space-efficient Data Placement Structure in MapReduce-based Warehouse Systems
http://www.cse.ohio-[...]
2012-11-04
[40]
웹사이트
Hive – The next generation data warehouse
http://blogs.impetus[...]
[41]
문서
[42]
서적
Hadoop: The Definitive Guide
O'Reilly Media
[43]
웹사이트
Hive Language Manual
https://cwiki.apache[...]
[44]
웹사이트
Hive A Warehousing Solution Over a MapReduce Framework
http://www.vldb.org/[...]
[45]
웹인용
Apache Hive - Downloads
https://hive.apache.[...]
2022-11-21
[46]
웹인용
Release release-1.0.0 · apache/Hive
https://github.com/a[...]
[47]
서적
Pro Hadoop
https://archive.org/[...]
Apress
[48]
웹사이트
Use Case Study of Hive/Hadoop
http://www.slideshar[...]
[49]
Youtube
OSCON Data 2011, Adrian Cockcroft, "Data Flow at Netflix"
[50]
웹사이트
Working with Students to Improve Indexing in Apache Hive
https://www.facebook[...]
[51]
서적
Hadoop in Action
Manning Publications
[52]
웹인용
Facebook's Petabyte Scale Data Warehouse using Hive and Hadoop
https://web.archive.[...]
2011-09-09
[53]
웹사이트
RCFile: A Fast and Space-efficient Data Placement Structure in MapReduce-based Warehouse Systems
http://www.cse.ohio-[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com