• 티스토리 홈
  • 프로필사진
    홀쑥
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
홀쑥
  • 프로필사진
    홀쑥
    • 분류 전체보기 (55)
      • Language (14)
        • Java (1)
        • Python (13)
      • DataBase (4)
        • NoSQL (1)
        • RDBMS (3)
      • OS (12)
        • Linux (10)
      • Etc (5)
        • 오류 모음 (5)
      • hadoop ecosystem (9)
        • Hadoop (4)
        • Hive (2)
        • Sqoop (1)
        • Zeppelin (1)
      • Cloud Service (0)
      • ELK STACK (2)
        • ElasticSearch (2)
      • Airflow (0)
      • Infra (0)
        • Docker (0)
        • Kubernetes (0)
      • Algorithm & Data Structure (7)
        • 백준 알고리즘 (6)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [Hive] 설치 및 시작
        2020년 06월 24일
        • 홀쑥
        • 작성자
        • 2020.06.24.:59

        Hive의 메타데이터를 저장하는 db를 durbyDB를 MySQL로 바꿀 예정

        dn01에서 MariaDB실행

        # mysql -u root -p 

        로 로그인

        > grant all privileges on *.* to hive@"dn01" identified by "hive" with grant option;

        > use mysql

        >select user,host from user;

        >exit

         

         

        1. dn01 노드의  root 계정에서

         

        # cd /tmp 

        # wget http://apache.mirror.cdnetworks.com/hive/hive-2.3.7/apache-hive-2.3.7-bin.tar.gz

        # tar xzvf apache-hive-2.3.7-bin.tar.gz


        # mkdir -p /opt/hive/2.3.7


        # mv apache-hive-2.3.7-bin/* /opt/hive/2.3.7/


        # ln -s /opt/hive/2.3.7 /opt/hive/current


        # cd /opt/hive

        2. Hive 폴더 접근 권한 설정


        [root@dn01 ~]# chmod -R 775 /opt/hive/2.3.7/

        [root@dn01 ~]# chown -R hadoop:hadoop /opt/hive/

        3. Hadoop 계정으로 전환


        [root@dn01 ~]# su - hadoop

        4. HIVE 환경 변수 추가


        [hadoop@dn01 ~]# vi ~/.bash_profile

        끝부분에 추가

                #### HIVE 2.3.7 #######################
                   export HIVE_HOME=/opt/hive/current
                   export PATH=$PATH:$HIVE_HOME/bin
                   export CLASSPATH=.:${JAVA_HOME}/lib:${JREHOME}/lib:/opt/hive/current/lib
                #### HIVE 2.3.7 #######################

        저장 후 확인

        [hadoop@dn01 ~]# source .bash_profile

         

        5. HIVE 설정 파일 복사


        [hadoop@dn01 ~]# cp /opt/hive/current/conf/hive-env.sh.template /opt/hive/current/conf/hive-env.sh
        [hadoop@dn01 ~]# cp /opt/hive/current/conf/hive-default.xml.template /opt/hive/current/conf/hive-site.xml

         

        6. HIVE 설정 파일 수정 ( 해당 부분을 찾아서 수정 - 제발 오타 확인!!!!!  )

         

        [hadoop@dn01 ~]# vi /opt/hive/current/conf/hive-env.sh

        HADOOP_HOME=/opt/hadoop/current

        원래 있던 #HADOOP_HOME 의 주석을 해제하고 타이핑하거나 줄을 삭제하고 복사

        [hadoop@dn01 ~]# vi /opt/hive/current/conf/hive-site.xml


        <property>
          <name>javax.jdo.option.ConnectionURL</name>
          <value>jdbc:mysql://192.168.56.102:3306/hive?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>hive</value>
          <description>username to use against metastore database</description>
        </property>
        <property>
          <name>javax.jdo.option.ConnectionPassword</name>
          <value>hive</value>
          <description>password to use against metastore database</description>
        </property>
        <property>
         <name>hive.exec.local.scratchdir</name>
         <value>/home/hadoop/iotmp</value>
         <description>Local scratch space for Hive jobs</description>
         </property>
         <property>
         <name>hive.downloaded.resources.dir</name>
         <value>/home/hadoop/iotmp</value>
         <description>Temporary local directory for added resources in the remote file system.</description>
         </property>
         <property>
            <name>hive.cli.print.current.db</name>
            <value>true</value>
            <description>Whether to include the current database in the Hive prompt.</description>
        </property>

        5929줄이기때문에 /ConnectionURL 로 찾아간다.

        이 부분을

        value 값을

        jdbc:mysql://192.168.56.102:3306/hive?createDatabaseIfNotExist=true

        로 바꾼다

        다음은 /ConnectionDriverName을 찾는다

        똑같이 value 값을

        com.mysql.jdbc.Driver

        로 바꾼다

        다음은 /ConnectionUserName을 찾아

        value를

        hive

        로 바꾼다

        다음은 /ConnectionPassword 다음 검색내용을 보려면 n을 누르면 된다.

        value를

        hive

        로 바꾼다.

        다음은 /local.scratchdir 로

        value를

        /home/hadoop/iotmp

        로 바꾸고

        바로 그 뒤에 있는 resources.dir의 value를

        /home/hadoop/iotmp

        로 바꾸고

        /current.db 로

        찾아가 value를

        true

        로 바꾼다.

         

        7. HIVE 관련 디렉토리 생성 및 권한 변경


        [hadoop@dn01 ~]# mkdir -p /home/hadoop/iotmp
        [hadoop@dn01 ~]# chmod -R 775 /home/hadoop/iotmp/

         

        8. MYSQL Connector 다운로드 및 hive lib로 복사


        [hadoop@dn01 ~]# cd /tmp
        [hadoop@dn01 tmp]# wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.38.tar.gz

        [hadoop@dn01 tmp]# tar xzvf mysql-connector-java-5.1.38.tar.gz


        [hadoop@dn01 tmp]# cd mysql-connector-java-5.1.38
        [hadoop@dn01 mysql-connector-java-5.1.38]# mv mysql-connector-java-5.1.38-bin.jar /opt/hive/current/lib/

         

        9. HIVE 기본 디렉터리 생성 및 권한 추가

        nn01에서 start-all.sh로 하둡을 켜놓은 상태여야 한다.


        [hadoop@dn01 ~]# hdfs dfs -mkdir /tmp
        [hadoop@dn01 ~]# hdfs dfs -mkdir -p /user/hive/warehouse
        [hadoop@dn01 ~]# hdfs dfs -chmod -R 777 /tmp
        [hadoop@dn01 ~]# hdfs dfs -chmod -R 777 /user/hive/warehouse

         

        10. HIVE mysql 기본 스키마 생성


        [hadoop@dn01 ~]# schematool -initSchema -dbType mysql
        ( 에러가 발생한다면 기존에 같은 이름의 데이타베이스가 있으니깐
          show databases에서 drop database hive; 제거 )

        11. HIVE 접속


        [hadoop@dn01 ~]# hive
        ( hive 실행전에 메타스토어를 초기화 해야 한다. 즉 10번 하고 hive 명령어 실행  )

        브라우저에서 http://192.168.56.101:50070
        메뉴 >  Utitlies > Browser Directory >
         /   
        user
        hive
        warehouse 에서 앞으로 확인

        하이브 나오기

        12. beeline  접속하기 위한 추가 작업


        beeline은 그룹과 유저가 other이기 때문에

        * 모든 노드의 core-site.xml 에 수정 :
        모든 그룹과 호스트에게 접속하기 위한 관문역할의  proxy를 모두가 가능하도록 변경

        nn01에서
        # cd $HADOOP_HOME/etc/hadoop


        # vi core-site.xml

        마지막 </property> 뒤에

         

        <property>
          <name>hadoop.proxyuser.hadoop.groups</name>
          <value>*</value>
        </property>
        <property>
          <name>hadoop.proxyuser.hadoop.hosts</name>
          <value>*</value>
        </property>

        추가

        * beeline은 others 권한으로 접속하므로, HDFS 권한을 수정해준다.
        # hdfs dfs -chmod -R 777 /tmp
        # hdfs dfs -chmod -R 777 /user/hive/warehouse


        core-site.xml 수정하여 dn01, dn02에 복사.
        # scp core-site.xml hadoop@dn01:/opt/hadoop/current/etc/hadoop
        # scp core-site.xml hadoop@dn02:/opt/hadoop/current/etc/hadoop

        # hdfs dfs -ls /

        # hdfs dfs -ls /user/hive

        로 권한 확인

        -----------------mariadb.service중인지 확인------------------

        active가 아니면 켜줘야한다.

         

        hive에 데이터 넣기

        # hive --service metastore & (metastore를 백그라운드로 실행)

        # ps -ef | grep metastore

        # hive --service hiveserver2 &

        # ps -ef | grep hiveservice2

        # hive

         > create database sample1;

         > show databases;

         > use sample1;

        > create table emp(name string);

        > insert into emp(name) values ("PARK");

        http://192.168.56.101:50070/

        에 들어가 /user/hive/warehouse를 확인하면

         

        db가 생겼다.

        dn02에서 dn01로 접속

        # ssh dn01

        # hdfs dfs -ls /user/hive/warehouse/sample1.db/emp

        # hdfs dfs -cat /user/hive/warehouse/sample1.db/emp/000000_0

        내용을 확인할 수 있다.

         

        belline 데이터 넣기

        dn01에서

        # beeline

        > !connect jdbc:hive2://

        hive

        hive

        > show databases;

        > use sample1;

        > insert into emp(name) values("KIM")

         > select * from emp;

        > !quit 

        로 beeline을 나올 수 있다.

        hive에 데이터 입력

        # hive

        > create database kdatademo;

        > use kdatademo;

        > create table customers(

        > id bigint,

        > name string,

        > address string);

        > desc customers;

        insert into customers values
        ( 1111, "John", "WA" ),
        ( 2222, "Emily", "WA" ),
        ( 3333, "Rick", "WA" ),
        ( 4444, "Jane", "CA" ),
        ( 5555, "Amit", "NJ" ),
        ( 6666, "Nina", "NY" );

        > select * from customers;

        create table if not exists orders(
        id bigint,
        product_id string,
        customer_id bigint,
        quantity int,
        amount double);

        insert into orders values
        (111111, "phone", 1111, 3, 1200 ),
        (111112, "camera", 1111, 1, 5200 ),
        (111113, "notebook", 1111, 1, 10 ),
        (111114, "bag", 2222, 2, 20 ),
        (111115, "t-shirt", 4444, 2, 66 );

        > select * from orders;

        * [ 연습 ]
        - 주소가 WA인 고객 검색

        - 주소가 WA이면서 id가 2222보다 큰 고객 명단

        - 고객테이블에서 주소컬럼 검색

        - 주소로 정렬하여 고객명과 주소 검색

        - 고객명단 수 검색

        - 첫번째 고객명단 검색 ( mysql 문법 )

        - 주소별 인원수 검색

        - 고객아이디, 고객명과 고객이 주문한 상품명 출력

        'hadoop ecosystem > Hive' 카테고리의 다른 글

        [Hive] 예제  (0) 2020.06.24
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바