1. 하이브
- 하둡 에코시스템 중에서 데이터를 모델링하고 프로세싱하는 경우, 가장 많이 사용하는 데이터 웨어하우징용 솔루션
- RDB의 데이터베이서, 테이블과 같은 형태로 HDFS에 저장된 데이터의 구조를 정의하는 방법을 제공
- SQL과 유사한 HiveQL 쿼리를 이용하여 데이터를 조회하는 방법을 제공
구성요소
- UI
- 사용자가 쿼리 및 기타 작업을 시스템에 제출하는 사용자 인터페이스
- Driver
- 쿼리를 입력받고 작업을 처리
- 사용자 세션을 구현하고, JDBC/ODBS 인터페이스 API 제공
- Compiler
- 메타 스토어를 참고하여 쿼리 구문을 분석하고 실행계획을 생성
- Metastore
- 디비, 테이블, 파티션의 정보를 저장
- Execution Engine
- 컴파일러에 의해 생성된 실행 계획을 실행

실행 순서
- 사용자가 제출한 SQL문을 드라이버가 컴파일러에 요청하여 메타스토어의 정보를 이용해 처리에 적합한 형태로
컴파일 - 컴파일된 SQL을 실행엔진으로 실행
- 리소스 매니저가 클러스터의 자원을 적절히 활용하여 실행
- 실행 중 사용하는 원천 데이터는 HDFS 등의 저장장치를 이용
- 실행결과를 사용자에게 반환
2. 데이터베이스
- 하이브의 데이터베이스는 테이블의 이름을 구별하기 위한 네임 스페이스 역할
- 테이블의 데이터의 기본 저장 위치를 제공
- 데이터베이스 생성 시, 로케이션을 지정하지 않으면 설정값을 기본 위치로 설정
- 데이터베이스의 로케이션은 테이블이 로케이션을 지정하지 않았을 때 기본 저장 위치가 됨
# 기본 위치
hive.metastore.warehouse.dir = hdfs:///user/hive/
# 데이터베이스의 기본 위치
hdfs:///user/hive/{데이터베이스 명}.db
# 테이블의 기본 위치
hdfs:///user/hive/{데이터베이스 명}.db/{테이블 명}
- 데이터베이스 생성
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];
- 데이터베이스 수정
ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value, ...); -- (Note: SCHEMA added in Hive 0.14.0)
ALTER (DATABASE|SCHEMA) database_name SET OWNER [USER|ROLE] user_or_role; -- (Note: Hive 0.13.0 and later; SCHEMA added in Hive 0.14.0)
ALTER (DATABASE|SCHEMA) database_name SET LOCATION hdfs_path; -- (Note: Hive 2.2.1, 2.4.0 and later)
- 데이터베이스 삭제
DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];
Ex Code)
-- 데이터 베이스 생성
CREATE DATABASE IF NOT EXISTS sample_database
COMMENT "test database"
LOCATION "/user/shs/sample_database/"
WITH DBPROPERTIES (
'key1' = 'value1',
'key2' = 'value2'
);
-- 데이터베이스 정보 확인
hive> DESC DATABASE EXTENDED sample_database;
OK
sample_database test database hdfs:///user/shs/sample_database hadoop USER {key1=value1, key2=value2}
-- 데이터베이스 정보 수정
ALTER DATABASE sample_database SET DBPROPERTIES ("key1"="value4");
hive> DESC DATABASE EXTENDED sample_database;
OK
sample_database test database hdfs:///user/shs/sample_database hadoop USER {key1=value4, key2=value2}
-- 데이터베이스 드랍
-- 하위에 테이블이 존재하면 오류가 발생
hive> DROP DATABASE sample_database;
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. InvalidOperationException(message:Database sample_database is not empty. One or more tables exist.)
-- CASCADE 옵션을 이용하여 삭제
hive> DROP DATABASE sample_database CASCADE;
OK
Time taken: 0.227 seconds
'분산처리 > 빅데이터-하둡, 하이브로 시작하기' 카테고리의 다른 글
5-2) hive 테이블 1 (0) | 2023.07.31 |
---|---|
4) YARN (0) | 2023.07.27 |
3) 맵리듀스 (0) | 2023.07.27 |
2-4) HDFS 기능 2 (0) | 2023.07.18 |
2-3) HDFS 기능 1 (0) | 2023.07.17 |