ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • brew를 통해 Hadoop설치, Hive설치 후 Mysql연동하기
    ComputerScience/DB,Cloud 2020. 7. 29. 19:07

    개발하면서 가장 어렵고 곤란한 것을 뽑자면 새로운 프로그램 툴을 설치하고 환경설정하는 것이 아닐까?

    이번에도 그렇다. Hadoop을 설치하고 Hive를 설치하고 Mysql을 연동하는데 정말 한 세월이 걸렸다.

    잊지 않기 위해, 나와 같은 곤란함을 가진 사람들에게 도움이 되기 위해 다음과 같은 글을 올립니다.

     

    • 설치는 Macbook에서 진행됐고 사용하는 terminal은 zsh입니다.
    • 자바는 미리 설치가 되어있다고 가정합니다.
    • 다운 받는 버전은 시기에 따라 다를 수 있으니 해당 버전에 맞게 숫자를 다르게 쓰셔야 합니다.

     

    Homebrew 설치

     

    맥용 패키지 매니저이다. yum과 apt-get과 유사하다고 보면 된다.

    $/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

    터미널에 다음과 같이 입력하고 brew를 설치해준다.

    $brew --verison 을 입력했을 때, 버전이 나온다면 설치가 완료된 것이다.

     

    mysql , hadoop, hive설치

     

    $brew install mysql
    ... 설치 ...
    $brew install hadoop
    ... 설치 ...
    $brew install hive
    ... 설치 ...

    brew를 통해 mysql, hadoop 그리고 hive를 설치해주자.

    설치된 경로는 /usr/local/Cellar이다. 기억해두자.

     

    PATH설정

     

    $open ~/.zshrc 혹은 vim이 익숙하시다면 vi ~/.zshrc
    [bash를 사용하신다면 $open ~/.bash_profile]

    그러면 .zshrc 내용을 수정할 수 있다.

    자바를 설치할 때 아마 경로를 다 설정해 줬을 것이다.

     

    이런식으로 나와 있을 것이다.

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home [자바 경로]
    export PATH=${PATH}:$JAVA_HOME/bin:

     

    그렇다면 이 내용을

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
    export HADOOP_HOME=/usr/local/Cellar/hadoop/3.3.0/libexec
    export HIVE_HOME=/usr/local/Cellar/hive/3.1.2_1/libexec

    export PATH=${PATH}:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:

    이런식으로 수정해준다.

    중간에 3.3.0이나 3.1.2_1은 설치한 버전이고 각자의 경로에서 확인 가능하다.

     

    수정한 내용을 저장해주고 터미널에 다음과 같이 입력한다.

    $source ~./zshrc

     

     

    Hadoop설정

     

    하둡을 설치한 뒤 설정을 해주어야 한다.
    tariat.tistory.com/492

     

    맥(mac)에서 하둡(hadoop) 설치하기

    하둡을 집에서도 사용하고 싶어졌다. DB마다 SQL문법이 달라 매번 바뀌는 것도 귀찮기도 하고, 테스트를 해보기도 좋을 것 같다는 얄팍(?)한 생각에서 시작됐다. 하지만 설치를 시작하고 얼마 안 �

    tariat.tistory.com

    해당 블로그에 설정법을 자세히 써주셨으니 따라서 진행하면 된다.

     

    설정을 마친 뒤 다음과 같이 입력한다.

    $start-all.sh

     

     

     

    $jps 를 입력 시 다음과 같이 나오면 성공이다,

    [모든 것을 마치고 하둡을 사용하지 않을 때는, $stop-all.sh를 해주어야 한다]

     

    mysql-java connector 다운로드 


    dev.mysql.com/downloads/connector/j/

     

    MySQL :: Download Connector/J

    MySQL Connector/J 8.0 is highly recommended for use with MySQL Server 8.0, 5.7 and 5.6. Please upgrade to MySQL Connector/J 8.0.

    dev.mysql.com

    여기에서 내 버전에 맞는 mysql -java Connector를 다운받아 준다.

    mysql 버전은 터미널에서 $mysql --version을 통해 확인이 가능하다.

    Mac이기 때문에 Platform Independent를 받아준다.

    그 외 버전은 오른쪽 Archives에서 다운로드가 가능하다.

     

    zip파일로 받아준다. 본인은 mysql이 8.0.21이라 해당버전을 다운받아 줬다,.

     

    zip을 풀어준 뒤

    $cd를 통해 zip파일을 풀어준 경로로 간다. ($cd mysql-connector-java-8.0.21)

    해당 경로에서 /usr/local/Cellar/hive/3.1.2_1/libexec/lib에 jar파일을 복사하는 명령어를 입력한다.

     

    /mysql-connector-java-8.0.21 $cp mysql-connector-java-8.0.21-bin.jar /usr/local/Cellar/hive/3.1.2_1/libexec/lib

     

    mysql에 metastore 만들어 주기

     

    mysql을 설치한 뒤 설정은 다음과 같다.

    whitepaek.tistory.com/16

     

    macOS MySQL 설치 및 설정 사용법

    macOS에서 MySQL 설치, 삭제, 환경변수 설정 및 사용법! Web 공부를 하다 보면 데이터베이스는 필수로 사용되는 거 같습니다. 저는 Web 개발 공부를 하고 있는데, 데이터베이스로 MySQL을 사용하려고 ��

    whitepaek.tistory.com

    이 분 블로그가 설명이 잘 되어있다. 이 블로그를 통해  초기설정을 마치신 뒤,

    mysql에 접속한 뒤 다음과 같이 metastore를 만들어준다.

    $mysql.server start

    mysql >
    mysql> -uroot -p
    mysql > create database metastore;
    mysql > use metastore;
    mysql > create user 'hiveuser'@'localhost' identified by '1234'; 
    identified by ' '에는 password를 입력해줘야 하는데 여기선 1234를 입력해준다]
    mysql > grant all on metastore.* to 'hiveuser'@'localhost' identified by '1234';
    mysql > flush privileges;

    모든것을 완료한 뒤 다음을 통해 권한을 확인할 수 있다.

     

    mysql> use mysql;
    mysql> show grants for 'hiveuser'@'localhost';

     

    hive-env.sh 수정 

     

    hive-env.sh.template파일을 hive-env.sh로 복사해준다.

    [HIVE_HOME = /usr/local/Cellar/hive/3.1.2_1/libexec]

    $cd $HIVE_HOME/conf 
    $cp hive-env.sh.template hive-env.sh
    $open hive-env.sh

     

    48번째 줄에 HADOOP경로를 추가해주자.

    export HADOOP_HOME=/usr/local/Cellar/hadoop/3.3.0/libexec

     

    hive-site.xml 수정

     

    hive-default.xml.template파일을 hive-site.xml로 복사해준다.

    $cd $HIVE_HOME/conf 
    $cp hive-default.xml.template hive-site.xml
    $open hive-site.xml

    모든 내용을 지우고 다음의 내용을 복사해서 넣어준다.

    user이름을 hiveuser, 비밀번호를 1234로 아까 설정해줬기에 이런식으로 넣어준다.

    <configuration>
      <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://localhost:3306/metastore</value>
    </property>
    <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.cj.jdbc.Driver</value>
    </property>
    <property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>hiveuser</value>
    </property>
    <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>1234</value>
    </property>
    <property>
      <name>datanucleus.fixedDatastore</name>
      <value>false</value>
    </property>
    <property>
        <name>hive.exec.local.scratchdir</name>
        <value>/tmp/hive</value>
        <description>Local scratch space for Hive jobs</description>
    </property>
    <property>
        <name>hive.downloaded.resources.dir</name>
        <value>/tmp/hive</value>
        <description>Temporary local directory for added resources in the remote file system.</description>
    </property>
    <property>
        <name>hive.querylog.location</name>
        <value>/tmp/hive</value>
        <description>Location of Hive run time structured log file</description>
    </property>
    <property>
        `<name>hive.metastore.schema.verification</name>`
        <value>false</value>
        <description>Some Description</description>
    </property>
      <property>
        <name>hive.blobstore.optimizations.enabled</name>
        <value>true</value>
        <description>
          This parameter enables a number of optimizations when running on blobstores:
          (1) If hive.blobstore.use.blobstore.as.scratchdir is false, force the last Hive job to write to the blobstore.
          This is a performance optimization that forces the final FileSinkOperator to write to the blobstore.
          See HIVE-15121 for details.
        </description>
      </property>
    </configuration>
    

     

     

    metastore 초기화 작업

     

    hive를 실행시키기 전에 metastore를 초기화시켜야 함.

    $schemaTool -dbType mysql -initSchema

     

    hdfs 디렉토리 생성

     

    hdfs 디렉토리를 생성하고 권한을 변경시켜 주자.

     

    $hdfs dfs -mkdir /tmp
    $hdfs dfs -mkdir /user
    $hdfs dfs -mkdir /user/hive
    $hdfs dfs -mkdir /user/hive/warehouse
    $hdfs dfs -chmod g+x/tmp
    $hdfs dfs -chmod g+x/user/hive
    $hdfs dfs -chmod g+x/user/hive/warehouse

    이렇게 하면 완료!!

     

    마무리

     

    다시 터미널에서

    $hive

    를 키면 정상적으로 켜짐을 알 수 있는데,

     

    만약에, mysql 버전이 높다면

    다음과 같은 time-zone에러가 뜰 수 있다.

    다음 오류는 이 블로그를 참고하길 바란다.

     

    tlo-developer.tistory.com/78

     

    MySQL 한국시간 설정 (Time Zone)

    I MySQL 한국시간 설정 (Time Zone) 1. MySQL 접속 2. Seoul 이 들어가는 시간대 선택 1 2 3 4 select b.name,a.time_zone_id from mysql.time_zone a, mysql.time_zone_name b where a.time_zone_id = ..

    tlo-developer.tistory.com

    다시, mysql을 켜서 

    mysql > use metastore;
    mysql > show tables;

     

    다음과 같이 나온다면 성공!!!

    댓글

Designed by Tistory.