2024. 8. 9. 13:04ㆍDATA/HADOOP_HIVE
-derby
https://db.apache.org/derby/derby_downloads.html
-hive
https://archive.apache.org/dist/hive/
■Derby
Hive는 대규모 데이터 처리 및 쿼리 수행을 위한 데이터 웨어하우스 시스템으로, 테이블 구조, 스키마, 데이터 타입, 파티션 정보 등 Hive에서 데이터 처리를 위해 필요한 정보를 포함한 메타데이터를 저장하는 데 필요하다.
Hive 설치 시 Derby 데이터베이스는 주로 테스트 및 개발 환경에서 사용되며 Hive의 메타데이터를 저장하는 데 사용된다.
Derby는 Java로 작성된 경량 데이터베이스로, 설치와 설정이 간편하다. 개발 및 테스트 환경에서 Hive의 메타데이터를 저장하고 조작하는 데 유용하여 Hive의 간편한 데이터 저장소 역할로써 Hive를 실행하고 테스트하는데 적합하다. 별도의 데이터베이스 서버 없이 Java 애플리케이션 내에서 직접 실행되어 별도의 설치 과정 없이 사용할 수 있다. 운영 환경에서는 Hive 메타스토어 데이터베이스로 더 강력한 RDBMS (예: MySQL, PostgreSQL)를 사용하는 것이 일반적이다.
■ lib derby->hive 복사
■환경변수 등록
■ hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<Configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby://localhost:1527/metastore_db;create=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.apache.derby.jdbc.ClientDriver</value>
</property>
<property>
<name>hive.server2.enable.impersonation</name>
<value>true</value>
</property>
<property>
<name>hive.server2.authentication</name>
<value>NONE</value>
</property>
<property>
<name>datanucleus.autoCreateTables</name>
<value>True</value>
</property>
</Configuration>
Hive의 설정 파일인 hive-site.xml은 Hive의 메타스토어와 HiveServer2의 설정을 구성하는 데 사용된다.
1. javax.jdo.option.ConnectionURL
- Hive 메타스토어가 사용하는 데이터베이스의 URL을 설정한다. (metastore와 db를 jdbc 연결하는 url)
- 값: jdbc:derby://localhost:1527/metastore_db;create=true (존재하지 않을 경우 생성)
- jdbc:derby://localhost:1527/metastore_db는 Apache Derby 데이터베이스의 URL이다.
- create=true는 해당 데이터베이스가 없으면 자동으로 생성하도록 지정한다.
- Hive 메타스토어의 메타데이터를 저장할 데이터베이스를 정의한다.
2. javax.jdo.option.ConnectionDriverName
- 데이터베이스에 연결하기 위한 JDBC 드라이버의 클래스 이름을 설정한다.
- 값: org.apache.derby.jdbc.ClientDriver
- Apache Derby 데이터베이스의 JDBC 드라이버 클래스 이름이다.
- Hive가 데이터베이스와 연결할 때 사용할 JDBC 드라이버를 지정한다.
3. hive.server2.enable.impersonation
- HiveServer2에서 사용자의 권한을 위임할 수 있는지를 설정한다.
- 값: true
- true로 설정하면, HiveServer2는 사용자 위임을 허용한다.
- 역할: 사용자의 권한을 다른 사용자에게 위임할 수 있도록 설정하여 세밀한 접근 제어를 지원한다.
4. hive.server2.authentication
- HiveServer2의 인증 방법을 설정한다.
- 값: NONE
- NONE으로 설정하면 인증이 필요하지 않으며, 사용자 인증 없이 접근할 수 있다.
- 필요에 따라 KERBEROS 등의 다른 인증 방법으로 변경할 수 있다.
- 역할: HiveServer2에 접속할 때의 인증 방법을 정의한다.
5. datanucleus.autoCreateTables
- 데이터누클리어스(Datanucleus)가 메타스토어 테이블을 자동으로 생성할지 여부를 설정한다.
- 값: True
- True로 설정하면, Hive가 시작될 때 필요한 메타스토어 테이블이 자동으로 생성된다.
- 역할: Hive의 메타데이터 저장소에 필요한 테이블이 자동으로 생성되도록 보장한다.
Datanucleus
Datanucleus는 Java 객체를 다양한 데이터 저장소에 투명하게 영속(persistence)하게 해주는 Java 표준 프레임워크이다. 이 프레임워크는 Java 객체와 데이터베이스 간의 매핑을 관리하여 객체 지향 프로그래밍과 데이터베이스 간의 통합을 원활하게 한다. Java Persistence API (JPA), Java Data Objects (JDO) 등의 표준을 지원하며, 다양한 데이터 저장소에 대해 일관된 접근 방식을 제공한다. Java 객체를 데이터베이스의 테이블과 매핑하여 객체의 상태를 데이터베이스에 저장하고, 데이터베이스에서 객체를 읽어오며 객체 간의 변환 작업을 자동으로 처리하여 개발자는 데이터베이스의 세부 사항을 신경 쓰지 않고 객체 모델을 정의할 수 있다.
Datanucleus와 Hive
Hive에서 Datanucleus는 메타스토어의 데이터를 저장하고 관리하는 데 사용된다. Hive의 메타스토어는 테이블 정의, 스키마, 파티션 정보 등 메타데이터를 저장하는데, Datanucleus는 이러한 메타데이터를 데이터베이스에 영속적으로 저장하는 역할을 한다. 또, 필요한 테이블을 자동으로 생성할 수 있는 기능을 제공하여, Hive가 시작될 때 메타스토어 테이블이 자동으로 준비되도록 한다.
■ launches the Derby Network Server
■ hive실행
- 또 다른 실행
hive --hiveconf tez.queue.name=queue --hivevar targetDate=20240101
1. hiveconf 옵션:
- Hive의 설정(config) 매개변수를 지정할 때 사용된다. 이 옵션을 통해 Hive의 설정 값을 직접 변경할 수 있다.
- --hiveconf tez.queue.name=queue는 Hive 실행 시 Tez 엔진이 사용하는 queue 이름을 설정한다.
2. --hivevar 옵션:
- Hive 쿼리에서 사용할 사용자 정의 변수를 설정한다. 이 옵션은 HiveQL 쿼리 내에서 변수를 정의하고 사용할 수 있게 한다.
- --hivevar targetDate=20240101는 targetDate라는 변수를 20240101로 설정한다.
설정 값:
- tez.queue.name=queue:
- Tez 실행 엔진에서 사용할 큐(queue)의 이름을 지정한다. 여기서는 queue라는 이름의 큐를 사용하도록 설정한 것이다.
- targetDate=20240101:
- targetDate라는 사용자 정의 변수를 정의하고, 그 값을 2024010로 설정한다. 이 변수는 HiveQL 쿼리에서 동적으로 사용할 수 있다.
SELECT FROM sales WHERE sale_date = '${targetDate}';
- 이 쿼리에서 ${targetDate}는 앞서 정의한 20240101로 대체된다.
Hive 작업을 더 유연하게 구성하고 사용자 정의 변수를 통해 쿼리를 동적으로 실행할 수 있다.
'DATA > HADOOP_HIVE' 카테고리의 다른 글
HADOOP 설치 및 테스트 (0) | 2024.08.08 |
---|---|
01 mysql (0) | 2024.08.06 |