이번 포스트에는
저번에 설치한 Hive의 MetaStore Embedded MetaStore인 derbyDB에서
이번포스트에는 local MetaStore인 MySQL,
다음 포스트에는 PostgreSQL로 각각 변경해보고 확인해보겠습니다.
vritualbox 설치,ubuntu설치, ssh통신, hadoop 설치가 완료 되지 않으신 분은 아래의 URL을 참고하여 완료해 주세요.
1.virtualbox 설치 및 ubuntu 설치
spidyweb.tistory.com/212?category=842040
2.power shell과 ssh통신
3.hadoop 설치
4.hive 설치
https://spidyweb.tistory.com/215
그리고 Hive의 metastore가 뭔지 잘 모르시는 분은 아래의 링크에서 개념을 보고 와주세요.
https://spidyweb.tistory.com/231
Hive metastore MySQL 로 변경하기
https://spidyweb.tistory.com/232
1. 현재 metastoreDB derbyDB 확인하기
hive-site.xml에서 현재 embedded metastore인 derby를 확인 하실 수 있습니다.
2. 바꾸게 될 MetaStoreDB local metastore 파라미터 확인
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://[IP]:[port]/[DB NAME]</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.mariadb.jdbc.Driver</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>User</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>Password</value>
<description>password to use against metastore database</description>
</property>
|
cs |
3.MySQL java connector 설치 및 소프트링크만들기, 유저 권한부여
*MySQL이 설치 안되신 분은 아래의 링크를 참조해주세요.
https://spidyweb.tistory.com/233
1) MySQL java connector 설치
1
|
sudo apt-get install libmysql-java
|
cs |
2) MySQL java 소프트링크만들기
1
|
ln -s /usr/share/java/mysql-connector-java.jar $HIVE_HOME/lib/mysql-connector-java.jar
|
cs |
3) my sql prompt 접속후 root 계정에 모든 권한 부여하기
1
2
3
4
5
|
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root';
FLUSH PRIVILEGES;
--root계정에 모든 권한 부여
|
cs |
4.hive-site.xml 변경하기
1) hive-site.xml 가 있는 /apache-hive-3.1.2-bin/conf에 가서 nano hive-site.xml로 편집합니다.
1
2
|
cd apache-hive-3.1.2-bin/conf
nano hive-site.xml
|
cs |
2)위에 2번에서 나온 4가지 파라미터들을 ctrl+w로 찾아갑니다.
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost/hive?createDatabaseIfNotExist=true&serverTimezone=Asia/Seoul&useSSL=false</value>
<description>username to use against metastore database</description>
</property>
*데이터베이스가 hive라는 이름으로 없을 시 생성하고, 서버timezone을 아시아/서울로 설정, SSL사용x로 설정
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
<description>password to use against metastore database</description>
</property>
ctrl+x로 저장하고 나옵니다.
5.metastore mysql설정된 것 확인
1)start-all.sh로 하둡환경 실행
2) schematool -initSchema -dbType mysql을 하려니 sudo를 이용해 mysql에 접속하다 보니 접근권한 문제가 생겼습니다.
sudo mysql -u root -p로 mysql 프롬프트에 접속
1
2
3
4
5
|
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '비밀번호';
FLUSH PRIVILEGES;
--sudo 없이 mysql에 접속 할 수 있게 변경
|
cs |
+ mysql에 hive database를 createDatabaseIfNotExists=true로 생성을 못하는 것 같아서 mysql에서 직접 hive database를 create 해주었습니다.
3)hive 접속
4)테스트 테이블 생성
CREATE TABLE airline_delay(Year INT, Month INT,
DayofMont INT, DayOfWeek INT,
DepTime INT, CRSDepTime INT,
ArrTime INT, CRSArrTime INT,
UniqueCarrier STRING, FlightNum INT,
TaiNum STRING, ActualElapsedTime INT,
CRSElapsedTime INT, AirTime INT,
ArrDelay INT, DepDelay INT,
Origin STRING, Dest STRING,
Distance INT, TaxiIn INT,
TaxiOut INT, Cancelled INT,
CancellationCode STRING
COMMENT 'A=carrier, B=weather, C=NAS, D=security',
Diverted INT COMMENT '1=yes, 0=no',
CarrierDelay STRING, WeatherDelay STRING,
NASDelay STRING, SecurityDelay STRING,
LateAircraftDelay STRING)
COMMENT 'The data consitsts of filght arrival and departure details for all commercial flights within the USA, froom October 1987 to April 2008'
PARTITIONED BY (delayYear INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;
이걸로 hive metastore를 mysql로 변경하기 및 table생성을 완료했습니다.
댓글