Hive 설치 & mariaDB

0

DB

목록 보기
14/17
  • 참고한 블로그 : https://velog.io/@yje876/220128

  • 중간에 systemctl 사용하려하면
    System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down
    에러 뜬다. 이럴 때 systemctl start mariadb.service 대신에 service mariadb start 를 사용한다.

  • hive 를 다운받기 위해서
    https://dlcdn.apache.org/hive/ 여기서 원하는 버전을 다운로드 받으면 된다.

    • 다운로드 : wget https://dlcdn.apache.org/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz
    • 압축해제 : tar -xvzf apache-hive-3.1.3-bin.tar.gz
  • hadoop 다운로드 : wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz

  • mariadb java client 다운로드: wget https://repo1.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/3.1.4/mariadb-java-client-3.1.4.jar

  • hdfs 안먹힐 경우, PATH 확인해보고, source ~/.profile로 한번 업데이트 해줘야함.

  • schematool -initSchema -dbType mysql 에서

    Error: Syntax error: Encountered "<EOF>" at line 1, column 64. (state=42X01,code=30000)
    org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state would be inconsistent !!
    Underlying cause: java.io.IOException : Schema script failed, errorcode 2
    • 에러 나면
      https://dncjf0223.tistory.com/29 여기 밑에 hive-site.xml 설정하는 것 따라하기.
      -> javax.jdo.option.ConnectionDriverName 에서 com.my.sql.cj.jdbc.Driver 대신에 com.my.sql.jdbc.Driver 으로 사용
  • schematool -initSchema -dbType mysql 에서
    Underlying cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException : Unknown database 'hive'
    SQL Error code: 1049
    • 에러나면,
    1. service mariadb start
    2. mysql -u root -p
    3. show databases; 했을 때 hive 없으면
    4. create database hive; 하기.
  • hive 를 입력했을 때 에러1
Exception in thread "main" java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to class java.net.URLClassLoader (jdk.internal.loader.ClassLoaders$AppClassLoader and java.net.URLClassLoader are in module java.base of loader 'bootstrap')

위의 에러가 뜬다면 hive 기본이 java 8 버전과 어울리는데, hadoop3 이상은 java 11과 잘맞는다. 그래서 나도 jdk11을 쓰고ㅠ 있었는데 위의 오류가 떠서 apt install openjdk-8-jdk 로 재설치 하고, vi ~/.profile 로 JAVA_HOME 의 변수 위치 설정을 다시 해줬다. (11 -> 8 로 단순하게 바꿈)

  • hive를 입력했을 때 에러2
Caused by: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
  • hive-site.xml 에 들어가서
    위치 : /opt/hive/apache-hive-3.1.3-bin/conf

    <property>
     <name>system:java.io.tmpdir</name>
     <value>/tmp/hive/java</value>
    </property>
    <property>
     <name>system:user.name</name>
     <value>${user.name}</value>
    </property>

    을 추가하면 해결!

  • 출처 : https://stackoverflow.com/questions/27099898/java-net-urisyntaxexception-when-starting-hive

  • hive 에서 SQL 입력 시 에러

    Error: Table 'CTLGS' already exists (state=42S01,code=1050)
    
    • 중복된 테이블에 있단다. 구글 검색했을 땐 drop detabase hive 로 hive만 지우던데, 난 지워도 안돼서 metastore를 지웠더니 됐음. (내가 hive-site.xml 에 metastore 로 설정해놈)
    • 그리고 출처에서
      schematool -initSchema -dbType mysql
      schematool -initSchema -dbType mysql -userName hive -passWord hive
      이걸 두번 연속으로 적혀있는데, 위에꺼하면 밑에꺼 안되는게 당연하다~ 이미 만들었으므로. 난 밑에꺼로 할것
  • hive SQL 입력시 에러

    hive> create table T1(id string); // 하자마자 에러뜸
    FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
    • hive --service metastore & 입력 후 다른 터미널 창을 열어 hive를 실행하면 된다. 왜 이렇게 하면 될까..?
    • 출처 : https://dncjf0223.tistory.com/29
profile
백엔드를 공부하고 있습니다.

0개의 댓글