이 글은 HIVE 사용자가 아니면 SKIP 하시면 됩니다.
빅데이터에서 SQL 을 이용하기 위해서 나온 솔루션중 하나가 HIVE 입니다.
HIVE 에서는 디폴트로 메타정보를 저장하기 위해 MySQL 디비를 사용합니다.
반드시 MySQL 만 사용해야 하는건가요? 물론 아니죠.
그래서 HIVE 매뉴얼을 참조하여, 직접 시도해봤습니다.
절차는 다음과 같습니다.
PostgreSQL 유저와 디비를 만드시고
create user hadoop with password 'hadoop';
create database metastore_db owner = hadoop;
create schema authorization hadoop;
PostgreSQL jdbc 라이브러리를 Hive lib 디렉토리에 복사합니다.
[hadoop@olmaster:~/hive-0.9.0/lib]$ pwd
/home/hadoop/hive-0.9.0/lib
[hadoop@olmaster:~/hive-0.9.0/lib]$
[hadoop@olmaster:~/hive-0.9.0/lib]$ cp /mnt/hgfs/common/postgresql-9.2-1001.jdbc4.jar .
그리고 hive-site.xml 설정화일을 수정합니다.
$HIVE_HOME/conf/hive-site.xml
<property>
<name>hive.metastore.local</name>
<value>true</value> ## false 가 이닌 true 이다. postgresql 서버랑 같은 local 에 있으니..
<description>controls whether to connect to remove metastore server or open a new metastore server in Hive Client JVM</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:postgresql://localhost:5432/metastore_db</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.postgresql.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
.......
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hadoop</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hadoop</value>
<description>password to use against metastore database</description>
</property>
-- hive 띄워서 수행해봐야 겠죠?
[hadoop@olmaster:~/hive-0.9.0/conf]$ hive
WARNING: org.apache.hadoop.metrics.jvm.EventCounter is deprecated. Please use org.apache.hadoop.log.metrics.EventCounter in all the log4j.properties files.
Logging initialized using configuration in jar:file:/home/hadoop/hive-0.9.0/lib/hive-common-0.9.0.jar!/hive-log4j.properties
Hive history file=/tmp/hadoop/hive_job_log_hadoop_201211021605_2042357136.txt
hive> show tables;
OK
Time taken: 7.705 seconds
hive>
> ;
hive> create table pokies(foo int, bar string);
OK
Time taken: 0.448 seconds
hive> create table invites(foo int, bar string) partitioned by (ds string);
OK
Time taken: 0.105 seconds
hive> show tables;
OK
invites
pokies
Time taken: 0.196 seconds
hive> CREATE TABLE cite (citing INT, cited INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
OK
Time taken: 3.958 seconds
hive> describe cite;
OK
citing int
cited int
Time taken: 0.223 seconds
hive>
잘 됩니다.^^