[AWS-Hadoop|Hive|Spark] Hive 3.1.2 설치 (Mysql, Hadoop 연동)
| SystemStructure
11일째인 오늘은 Hive를 설치하겠습니다.
목차
1. 하이브 설치 및 환경설정
2. Mysql-Connector , Guava Library 설치 및 업로드
3. hive 환경파일 생성 및 수정
4. HDFS, YARM, Job History 서버 시작
5. HIVE 디렉토리 생성
6. schematool 띄우기
7. HIVE 실행
하이브를 쓰는 이유
hadoop으로 하면 맵리우스로 데이터 분석해야 했는데 hive는 DB 쿼리로 분석할 수 있게 됩니다.
1. 하이브 설치 및 환경설정
1.1 하이브 설치
[hadoop@client ~]$ cd ~ && wget https://dlcdn.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
1.2 압축풀기
[hadoop@client ~]$ tar xvf apache-hive-3.1.2-bin.tar.gz
1.3 폴더명 변경
[hadoop@client ~]$ mv ./apache-hive-3.1.2-bin ./hive
[hadoop@client ~]$ ls
1.4 사용자 환경파일 수정
[hadoop@client ~]$ vi ~/.bashrc
아래 내용 추가
export HIVE_HOME=/home/hadoop/hive
:$HIVE_HOME/bin
[hadoop@client ~]$ source ~/.bashrc
[hadoop@client ~]$ echo $HIVE_HOME
2. Mysql-Connector , Guava Library 설치 및 업로드
2.1 Mysql-Connector 설치
https://dev.mysql.com/downloads/connector/j/?os=26 접속
- Product Version : 8.0.21
- Operating System : Platform Indepedent
-> 참고로 저는 Redhat 9를 사용하고있습니다.
Download -> mysql-connector-java-8.0.21 압축 해제 -> mysql-connector-java-8.0.21.jar 사용
- 경로 : mysql-connector-java-8.0.21\mysql-connector-java-8.0.21\mysql-connector-java-8.0.21.jar
잠시 후 File Zilla라는 FTP 프로그램을 이용해서 mysql-connector-java-8.0.21.jar 를 Linux에 업로드합니다.
2.2 Guava 설치
https://jar-download.com/artifacts/com.google.guava/guava/29.0-jre/source-code
Download guava (29.0-jre) 선택 -> jar_files 압축 해제 -> guava-29.0-jre.jar 사용
1.6 Mysql-Connector, Guava Library Upload (FileZilla)
FileZiilla가 없으신분들은 아래 사이트에서 FileZilla를 먼저 다운로드 해주세요.
서버3대 아이콘 선택 -> 새 사이트 -> 이름 바꾸기(ex:client server)
- 프로토콜: SFTP
- 호스트 : 본인 PUBLIC IP 혹은 DNS (AWS 인스턴스 페이지 참조)
- 포트 : 22 혹은 안적어도 됨
- 사용자 : ec2-user -- aws redhat 사용시, ubuntu는 ubuntu (AWS 인스턴스 페이지 참조)
- 키 파일 : aws 접속시 키 파일 (AWS 인스턴스 페이지 참조)
확인을 누르면 저장이 됩니다. 다시 서버모양 아이콘을 선택해서, 연결하고 싶은 서버를 선택하여 연결하면 됩니다.
업로드하고싶은 파일은 선택 -> 마우스 오른쪽 버튼 -> 업로드
오른쪽 리눅스 서버에 업로드 된것을 확인할 수 있습니다.
현재 업로드된 File은 ec2-user로 접속하여 올렸기 때문에, 권한이 ec2-user로 되어있습니다.
권한을 hadoop으로 바꿔주기 위하여 root로 접속하겠습니다.
[ec2-user@client ~]$ su - --root계정으로 변경
Password: root패스워드
[root@client ~]# cd /home/ec2-user/ --ec2-user 홈데릭토리로 이동
[root@client ec2-user]# ls
guava-29.0-jre.jar mysql-connector-java-8.0.21.jar
[root@client ec2-user]# mv * /home/hadoop/hive/lib --현재 홈디렉토리에있는 모든것 hive/lib로 옮기기
[root@client ec2-user]# chown -R hadoop:hadoop /home/hadoop/hive/lib --권한 hadoop으로 변경
[hadoop@client ~]$ su - hadoop
[hadoop@client ~]$ cd /home/hadoop/hive/lib
[hadoop@client lib]$ ls guava-*
guava-19.0.jar guava-29.0-jre.jar
[hadoop@client lib]$ rm guava-19.0.jar --기존에 있던 guava-19.0.jar는 삭제
3. hive 환경파일 생성 및 수정
[root@client ec2-user]# su - hadoop
[hadoop@client ~]$ cd /home/hadoop/hive/conf
3.1 hive-env.sh 수정
[hadoop@client conf]$ cp hive-env.sh.template hive-env.sh
[hadoop@client conf]$ vi hive-env.sh
맨마지막 줄로 이동 HADOOP_HOME 추가
HADOOP_HOME=/home/hadoop/hadoop
Esc -> Shist + : -> wq
3.2 hive-site.xml 생성
아래 파일을 $HIVE_HOME/conf에 업로드해주세요.
본인의 /home/hadoop/hive/conf/hive-default.xml.template를 복사해서 hive-site로 사용해도 되지만,
DB등 본인에 맞춰 수정해줘야 합니다.
DirectDB가 아닌 Mysql을 연결할것이기때문에 아래와 같이 수정을 했습니다.
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://namenode:3306/hivedb?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hiveuser</value>
<description>Username to use against metastore database</description>
</property>
4. HDFS, YARM, Job History 서버 시작
[hadoop@Namenode ~]$ start-dfs.sh
[hadoop@secondnode ~]$ start-yarn.sh
[hadoop@Namenode ~]$ mapred --daemon start historyserver
5. HIVE 디렉토리 생성
[hadoop@client ~]$ hdfs dfs -mkdir -p /user/hive/warehouse
[hadoop@client ~]$ hdfs dfs -chmod g+w /user/hive/warehouse
[hadoop@client ~]$ hdfs dfs -mkdir /tmp
[hadoop@client ~]$ hdfs dfs -chmod g+w /tmp
저는 /tmp가 이미 만들어져있어서 존재한다고 뜨네요.
6. schematool 띄우기
[hadoop@client ~]$ schematool -initSchema -dbType mysql
생략
6.1 DB 접속
[hadoop@Namenode ~]$ mysql -uroot -pmysql
6.1.1 Table 생성 된것 확인하기
MariaDB [(none)]> use hivedb;
MariaDB [hivedb]> show tables;
7. HIVE 실행
[hadoop@hadoop conf]$ hive