본문 바로가기
빅데이터 시스템

Impala와 Hive로 모델링하고 관리하기

by 볼록티 2019. 12. 15.
728x90
반응형

 

-이번장에서 배울 것

0.Impala와 Hive가 Metastore를 사용하는 방법

 -Hive와 Impala는 데이터 포맷과 경로를 결정하기 위해 Metastore를 사용합니다. RDBMS에서 데이터의 테이블 구조와 경로를 얻고 쿼리를 통해 데이터를 HDFS로 옮겨줍니다.

메타데이터란 각 데이터의 중요한 특징을 설명하는 것입니다. (columns)

 

 

 

 

1.Impala SQL과 HiveQL DDL 로 테이블을 만드는 방법

 -데이터베이스와 테이블을 생성하고 관리하기 위해서 HiveQL또는 DDL(Data Definition Language) 또는 Impala SQL을 사용합니다.

 표준 SQL DDL과 매우 유사합니다. 작은 차이점이라고 한다면 Hive와 Impala DDL 사이에 있긴 하다.

 

 -데이터베이스 생성하기.

 -Hive와 Impala 데이터베이스는 간단한 namespace들이다. 이는 테이블 만드는데 도움이 된다.

 CREATE DATABASE loudacre;

 CREATE DATABASE IF NOT EXISTS loudacre;

 1.메타스토어에 데이터베이스 정의를 추가한다. 

 2.HDFS에 저장 디렉토리를 생성한다. 조건을 주어 생성할 수도 있다.

 

-데이터베이스 제거하기.

DROP DATABASE loudacre;

DROP DATABASE IF EXISTS loudacre; 

 

DROP DATABASE loudacre CASCADE;

-하이브에서 CASCADE를 추가하면 강제적으로 제거한다. HDFS 데이터를 삭제할수도 있음!

 

-각 열은 데이터 타입을 명시해주어야 한다. STRING, BOOLEAN, TIMESTAMP, INT, BIGINT, FLOAT, DOUBLE. 

 

-테이블을 만드는 예시

 CREATE TABLE jobs (

 id INT,

 title STRING,

 salary INT,

 posted TIMESTAMP

 )        # 데이터 타입 명시

 ROW FORMAT DELEMITED                     # 테이블 구분 지정.

 FIELDS TERMINATED BY ‘ , ’                    # ‘, ’ 로 데이터 구분

 STORED AS {TEXTFILE|SEQUENCEFILE|...}     # STORED AS TEXTFILE이 디폴트.

 

 -기존에 있는 스키마를 기반으로 테이블 만들기.

  CREATE TABLE jobs_archived LIKE jobs;

 

 SELECT를 사용하여 테이블을 사용하기

 CREATE TABLE ny_customers AS

 SELECT cust_id, fname, lname

 FROM customers

 WHERE state = ‘NY’ ;


-테이블에서 데이터 경로 다루기

 CREATE TABLE jobs (

 id INT,

 title STRING,

 salary INT,

 posted TIMESTAMP

 )        # 데이터 타입 명시

 ROW FORMAT DELEMITED   

 FIELDS TERMINATED BY ‘ , ’

 LOCATION ‘/loudacre/jobs’ ; 

 

 -외부적으로 테이블 관리하기.

 CREATE EXTERNAL TABLE adclicks

 ( campaign_id STRING,

   click_time TIMESTAMP,

   keyword STRING,

   site STRING,

   placement STRING,

   was_clicked BOOLEAN,

   cost SMALLINT)

  LOCATION ‘/loudacre/ad_data; 

 

 -데이터 탐색하기

 SHOW TABLES;

 DESCRIBE jobs;

 DESCRIBE FORMATTED jobs;

 

SHOW CREATE TABLE jobs;

 

 -HDFS의 파일로 부터 데이터 로드하기.

 hdfs dfs -mv 를 사용할 수 도 있고, 

 LOAD DATA INPATH ‘/tmp/sales.txt’ INTO sales; 를 사용할 수도 있다.

 

 -오버라이팅

 LOAD DATA INPATH ‘/tmp/sales.txt’ OVERWRITE INTO TABLE sales;

 

 -테이블에서 데이터 레코드 선택하여 붙이기.

 INSERT INTO TABLE accounts_copy SELECT * FROM accounts;

 

 -WHERE 절

 INSERT INTO TABLE accounts_copy SELECT * FROM accounts

 WHERE YEAR(acct_create_dt) = 2008

 AND acct_close_dt IS NULL;



2.Hue와 HCatalog를 사용하여 테이블을 생성, 관리하는 방법



 

3.Impala, Hive, Sqoop을 사용하여 데이터를 테이블로 로드하는 방법

 

 -관계형 데이터베이스에서 데이터 로드하기.

 -sqoop은 HIVE 와 Impala에 데이터 로드를 위해 내장되어 있다.

 

 -sqoop에 --hive-import 를 붙여서 사용함으로써 Hive와 Impala에서 접근가능한 테이블을 생성하게 된다.

 sqoop import \

 --connect jdbc:mysql://localhost/loudacre \

 --username name --password password \

 --fields-terminated-by ‘\t’

 --table employees

 --hive-import

 

 -HCatalog는 메타스토어에 접근하게 해주는 Hive의 하위 프로젝트이다. HiveQL DDL 을 사용하여 테이블을 정의한다.

 hcat -e “CREATE TABLE vendors \

 (id INT, company STRING, email STRING) \

 ROW FORMAT DELIMITED \

 FIELDS TERMINATED BY ‘,’ \

 LOCATION ‘/dualcore/vendors’ ”

 -e를 사용하여 커맨드를 명시할 수 있다.

 

 hcat -f createtable.txt

 -f를 이용하여 외부로 데이터를 내보냄.

 

 -HCatalog에서 메타데이터 보여주기.

 hcat -e ‘SHOW TABLES

 

 -DESCRIBE 커맨드로 명시된 테이블을 보여줌.

 hcat -e ‘DESCRIBE vendors’

 

 해당 데이터 뿐만아니라 메타데이터 또한 제거됨에 주의.

 hcat -e ‘DROP TABLE vendors’

 

 -Impala가 쿼리를 사용하는 방법

 1.클라이언트(impala shell 또는 Hue)가 로컬 impala 데몬에 연결(coordinator라함).

 2.coordinator는 State Store로부터 클러스터에 여러 impala 데몬들의 리스트를 요구함.

 3.coordinator는 다른 impala 데몬들에게 쿼리를 분산시킨다.

 4.결과를 클라이언트에게 전달.

 

 

 

 

 

중요포인트.

 -HDFS안의 디렉토리에 각 테이블들은 하나 또는 여러 파일로 저장됨. 

 -메타스토어는 RDBMS의 데이터에 대한 정보를 저장한다.(예:경로,컬럼이름,타입 등)

 -테이블들은 Impala SQL, HiveQL DLL로 생성되고 관리된다.

 -Impala 메타스토어로부터 메타데이터로부터 캐시작업을 한다.

 -HCatalog는 Hive, Impala 툴로 메타스토어에 접근을 하게 한다.

 -Impala와 Hive는 HDFS에서 SQL 쿼리를 수행하기 위한 툴이다.

 -HiveQL 과 Impala SQL은 SQL-92와 비슷하다.

 -Hive는 하둡 클러스터 데이터 처리 엔진에서 작업을 생산한다.

 -Impala는 하둡 클러스터에서 직접 쿼리를 실행한다.(SQL엔진에서 빠르다. NOT Map-Reduce)

 




이글은 서울과학기술대학교 권혁윤 교수님의 강의를 토대로 필기한 내용임을 밝힙니다. :)

 

728x90
반응형

'빅데이터 시스템' 카테고리의 다른 글

RDD와 함께 스파크 활용하기.  (0) 2019.12.15
스파크 기초  (0) 2019.12.15
데이터 파일 파티셔닝  (0) 2019.12.15
Impala와 Hive 소개  (0) 2019.12.15
sqoop으로 관계형 데이터 불러오기  (0) 2019.12.15

댓글