Apache Hive 빅데이터 분산 컴퓨팅 박영택.

Slides:



Advertisements
Similar presentations
Python Essential 세미나 1 Python Databases Module - Part 2 (MySQL Module) 발표자 : 박영국 ( 화 )
Advertisements

이혁재 /KASA NoSQL. 요약 NoSQL 소개 데이타베이스 관련 문서 대상 : 클라이언트 프로그래머 NoSQL 소개 데이타베이스 관련 문서 대상 : 클라이언트 프로그래머.
1 SQL 정보보호학과 양 계 탁. 2 SQL 개요 SQL 개요 3 Database u 연관된 데이터들의 집합 u 데이터를 쉽게 관리하는 프로그램 종 류종 류 관계형 데이터베이스 객체지향형 데이터베이스 계층형 데이터베이스 네트워크 데이터베이스 데이터를 2 차원적인 테.
LAB: Web-scale Data Management on a Cloud Lab 1. Introduction 2011/03/04.
WCL 이민학 Big Data & Hadoop.
SQLite 소개 및 안드로이드에서의 사용법
MrDataBld 2.x 제품 소개 2007.
컴퓨터공학과 김소원.
DB2 Information Management DB2 UDB CLP Command Summary.
Hive. Part of Hadoop Ecosystems MapReduce Runtime (Dist. Programming Framework) Hadoop Distributed File System (HDFS) Zookeeper (Coordination) Hbase (Column.
HDFS Tutorial.
소리가 작으면 이어폰 사용 권장!.
김 상 국, 김 기 훈 한남대학교 컴퓨터공학과 데이터베이스 실험실
제로보드 소개 제로보드 설치하기 제로보드 관리하기
SAP QUERY SAP R/3 4.6C.
소프트웨어시스템설계(6주) 데이터베이스 연동
빅데이터 분석 과정.
질의어와 SQL 기본 SQL 고급 SQL 데이타의 수정 데이타 정의 언어 내장 SQL
관계 대수와 SQL.
오라클 데이터베이스 성능 튜닝.
Database & Internet Computing Laboratory 한 양 대 학 교
빅데이터 순환 과정과 플랫폼.
SQL*Plus - Oracle ISQL -
SELECT 문 사원 테이블의 모든 정보를 출력하는 예제 1. 비교 연산자 SELECT 문의 형태
4장. 관계 대수와 SQL SQL 관계 데이터 모델에서 지원되는 두 가지 정형적인 언어
APM 실습 (MySQL).
Distributed Computing (Apache Hadoop & Hive Review)
JDBC 프로그래밍 이수지 이동주 1.
Hive and Pig 박 영 택 컴퓨터학부.
SQL 개요 SQL 개요 - SQL은 현재 DBMS 시장에서 관계 DBMS가 압도적인 우위를 차지하는 데 중요한 요인의 하나
MySQL grandmarnier.
MySQL performance Xhark 김재홍.
Information Technology
Toad for Oracle 설치 방법.
MySQL RENO.
빅데이터 분석을 위한 통계 프로그래밍 R 오 승 근
JDBC 소개 및 설치 슬라이드 노트에 모든 설명을 작성 Database Laboratory.
11장. 데이터베이스 서버 구축과 운영.
Korea University of Technology and Education Hongyeon Kim
롯데마트 CRM 데이터 분석 교육 2014년 12월 > RE::VISION 전용준 리비젼컨설팅 대표
롯데마트 CRM 데이터 분석 교육 2014년 12월 > RE::VISION 전용준 리비젼컨설팅 대표
MySQL 기본 사용법.
트랜잭션과 잠금 트랜잭션 처리 메커니즘을 자세히 이해한다. 트랜잭션의 종류를 파악한다.
교육팀 도경모 Big.
ㅎㅎ MS-SQL서버 2000과 XML MS-SQL 서버 2000과 XML 활용 HTTP를 이용한 XML 데이터 접근
Chapter 05 데이터베이스 프로그래밍.
LogParser.
4.2 SQL 개요 SQL 개요 SQL은 IBM 연구소에서 1974년에 System R이라는 관계 DBMS 시제품을 연구할 때 관계 대수와 관계 해석을 기반으로, 집단 함수, 그룹화, 갱신 연산 등을 추가하여 개발된 언어 1986년에 ANSI(미국 표준 기구)에서 SQL.
ER-Win 사용 방법.
단일 테이블 조회를 위한 SELECT 문을 이해한다. 열 제약조건과 행 제약조건을 이해한다. 결과 집합 변경 방법을 이해한다.
뷰와 저장 프로시저 뷰의 개념을 이해한다. 뷰의 정의와 관리 방법을 이해한다. 뷰를 사용함으로써 생기는 장점을 알아본다.
게임에서 공공까지, 국내 실 사례들로 본 빅데이터 융합 분석
9장 테이블 생성 및 변경, 삭제하기(DDL).
2012 인터넷 응용프로그래밍 FTP, MySQL 사용 방법 및 텀 프로젝트용 서버에서 웹페이지 구동 방법 설명
고급 T-SQL.
CHAPTER 06. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
JSP 게시판 구현.
Database 중고차 매매 DB 비즈니스IT 윤동섭.
DataScience Lab. 박사과정 김희찬 (목)
11장. GROUP BY와 HAVING 열의 그룹화 2개 이상의 열에 대한 그룹화
8장 테이블의 생성 및 변경 정인기.
McGraw-Hill Technology Education
시스템 분석 및 설계 글로컬 IT 학과 김정기.
SQL INJECTION MADE BY 김 현중.
과제 #5 MySQL 연동 php문서에서 SQL문의 삽입, 삭제, 수정, 검색을 수행한다. 주어진 form을 최대한 활용한다.
How I Approach Tuning a SQL Statement
Data Warehouse 구축 (설계 위주)
뇌를 자극하는 Windows Server 장. 데이터베이스 서버.
테이블 데이터 처리용 command line tool들
Data Base Mysql.
Presentation transcript:

Apache Hive 빅데이터 분산 컴퓨팅 박영택

Apache Hive 개요 Apache Hive 는 MapReduce 기반의 High-level abstraction HiveQL은 SQL-like 언어를 사용 Hadoop 클러스터에서 MapReduce 잡을 생성함 Facebook 에서 데이터 웨어하우스를 위해 개발되었음 현재는 오픈소스인 Apache 프로젝트

Hive 유저를 위한 High-Level 개요 Hive 는 Client Machine 에서 동작 HiveQL 질의문을 MapReduce job으로 변환 jobs 을 클러스터에 등록

Hive를 왜 사용하는가? MapReduce 를 직접 작성하는 것 보다 좀 더 생산적임 Java 로 100 라인 작성해야 할 것을 5라인의 HiveQL 로 구현 가능 폭 넓은 사용자에게 대용량 데이터를 분석할 수 있는 기회 제공 소프트웨어 개발 경험이 필요 없음 기존 SQL 지식을 가진 사용자가 사용 가능 다른 시스템과의 상호 운용성 제공 Java 나 외부 Scripts 를 통해 확장 가능 많은 Business Intelligence(BI) 툴들이 Hive 를 지원함

어떻게 Hive에서 데이터를 Load, Store 하는가? Hive는 데이터 포멧과 위치를 가지고 있는 metasotre 를 가지고 있음 질의문 자체는 파일시스템(HDFS)에 저장되어 있는 데이터에게 질의 함

Hive와 Relational Database 와의 차이점 Hive는 데이터 포멧과 위치를 가지고 있는 metasotre 를 가지고 있음 질의문 자체는 파일시스템(HDFS)에 저장되어 있는 데이터에게 질의 함

Hive shell 사용법 Hive shell 에서 HiveQL 문장을 실행시킬 수 있음 MySQL Shell 의 interactive tool 과 유사 hive 명령어로 Hive shell 을 실행 Hive shell 은 “hive>” 프롬프트로 표현됨 각각의 명령어는 세미콜론 으로 문장을 끝냄 “quit” 를 사용하여 Hive shell 을 빠져나옴

Command Line 으로 Hive 접근 방법 HiveQL 코드가 들어있는 파일을 –f 옵션으로 실행 가능 -e 옵션을 통해 직접적인 HiveQL 실행 가능

Hive 의 Databases 와 Tables 접근 방법 USE 명령어를 통하여 현재 사용할 database 변경

Hive 의 Databases 와 Tables 접근 방법(계속) 현재 database 안에 있는 tables 들은 어떤것이 있는가? databases 에서 지정한 table을 포함하고 있는 databases 는?

Hive 의 Databases 와 Tables 접근 방법(계속) table 의 기본 구조를 보기 위한 DESCRIBE 명령 좀 더 세부적인 정보를 보기 위한 DESCRIBE FORMATTED 명령어

Hive 에서 Databases 생성 새로운 database 생성 기존의 database 가 있는지를 체크하면서 database 생성

Hive 에서 Table 생성 Table 을 생성하기 위한 기본 syntax 기본적으로 HDFS 의 /user/hive/warehouse 경로에 생성 위의 경로는 Hive의 warehouse 디렉토리

테이블의 이름을 지정하고 column의 이름과 datatype을 지정 Hive 에서 Table 생성 (계속) 테이블의 이름을 지정하고 column의 이름과 datatype을 지정

Hive 에서 Table 생성 (계속) 이 명령어는 파일의 각 필드가 어떤 character 로 구분되어 있다는 것을 말해준다.

Hive 에서 Table 생성 (계속) 예를 들면 tab-delimited 데이터라고 하면 FIELDS TERMINATED BY ‘\t’ 로 적으면 된다.

Hive 에서 Table 생성 (계속) 마지막으로 파일의 포멧을 지정할 수 있다. STORED AS TEXTFILE 이 default 이며, 지정하지 않을 경우 text format 이다.

Table 생성 예제 아래의 예제는 jobs 이름의 Table을 생성하는 예제 데이터는 text 포멧이며 하나의 line에는 comma-separated 형태의 4개 fields 를 가지고 있음. 위의 Table 과 일치하는 record 의 예제

MySQL의 데이터를 HDFS로 가져오기 MYSQL 테이블을 HDFS 를 거쳐 Hive 테이블로 가져오기 Hive HDFS DATABASE Table Sqoop MYSQL DATABASE Table

MySQL의 데이터를 HDFS로 가져오기 MySQL에 로그온 데이터베이스 목록 확인 데이터베이스 선택 테이블 목록 확인 $ mysql –-user=root –-password=cloudera 데이터베이스 목록 확인 mysql> show databases; 데이터베이스 선택 mysql> use retail_db; 테이블 목록 확인 mysql> show tables;

MySQL의 데이터를 HDFS로 가져오기 ‘categories’ 테이블의 내용 확인 mysql> SELECT * FROM categories LIMIT ;

MySQL의 데이터를 HDFS로 가져오기 테이블 ‘categories’를 HDFS로 가져오기 $ sqoop import \ --connect jdbc:mysql://localhost/retail_db \ --table categories --fields-terminated-by ‘\t’ \ --username root --password cloudera

MySQL의 데이터를 HDFS로 가져오기 명령어가 정상적으로 동작했는지 확인 $ hadoop fs -ls categories $ hadoop fs -tail categories/part-m-00000

Hive 데이터베이스 생성 테이블을 생성하기 위한 Hive의 데이터베이스 생성 생성한 데이터베이스 선택 hive> create database hdfs_retail_db; 생성한 데이터베이스 선택 hive> use hdfs_retail_db;

Hive 테이블 생성 테이블 생성 hive> CREATE TABLE categories (category_id INT, category_department_id INT, category_name STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’; 테이블 명 칼럼 명 칼럼의 데이터 타입 불러올 파일의 각 라인을 하나의 레코드로 구분 불러올 레코드를 tab으로 구분하여 칼럼에 저장

Hive 테이블에 데이터 불러오기 및 확인 hive> LOAD DATA INPATH ‘categories’ INTO TABLE categories; hive> SELECT * FROM categories LIMIT 10;

MySQL의 데이터를 직접 Hive로 가져오기 MYSQL 테이블을 HDFS 를 거치지 않고 직접 Hive 테이블로 가져오기 HDFS Hive DATABASE Table Sqoop MYSQL DATABASE Table

MySQL의 데이터를 직접 Hive로 가져오기 hive> create database hive_retail_db; 생성한 데이터베이스 선택 hive> use hive_retail_db;

MySQL의 데이터를 Hive로 가져오기 HDFS의 기존 디렉토리를 삭제 $ hadoop fs –rm –r categories MySQL의 ‘categories’ 테이블을 Hive의 ‘hive_retail_db’로 가져오기 $ sqoop import --connect jdbc:mysql://localhost/retail_db \ --username root \ --password cloudera \ --table categories \ --hive-database hive_retail_db \ --hive-import

MySQL의 데이터를 Hive로 가져오기 Hive로 가져온 테이블의 내용 확인 hive> SELECT * FROM categories LIMIT 10;

Hive의 기본 명령어 LIMIT은 질의문 결과의 레코드 수를 제한 ORDER BY는 질의문 결과를 특정 칼럼을 기준으로 정렬 hive> SELECT customer_fname, customer_lname FROM customers LIMIT 10; ORDER BY는 질의문 결과를 특정 칼럼을 기준으로 정렬 hive> SELECT customer_id, customer_fname FROM customers ORDER By customer_id DESC LIMIT 10; WHERE는 특정 칼럼 값에 조건을 설정 hive> SELECT * FROM orders WHERE order_id=1287; hive> SELECT * FROM customers WHERE customer_state IN (‘CA’, ‘OR’, ‘WA’, ‘NV’, ‘AZ’);

예제 실행을 위한 테이블 가져오기 Hive로 가져올 MySQL의 테이블 내용 확인 mysql> SELECT * FROM customers LIMIT 5; mysql> SELECT * FROM orders LIMIT 5;

예제 실행을 위한 테이블 가져오기 ‘retail_db’의 ‘customers’ 테이블을 Hive로 가져오기 $ sqoop import --connect jdbc:mysql://localhost/retail_db \ --username root \ --password cloudera \ --table customers \ --hive-database hive_retail_db \ --hive-import ‘retail_db’의 ‘orders’ 테이블을 Hive로 가져오기 --table orders \

예제 실행을 위한 테이블 가져오기 ‘retail_db’의 ‘products’ 테이블을 Hive로 가져오기 $ sqoop import --connect jdbc:mysql://localhost/retail_db \ --username root \ --password cloudera \ --table products \ --hive-database hive_retail_db \ --hive-import ‘retail_db’의 ‘departments’ 테이블을 Hive로 가져오기 --table departments \

예제 실행을 위한 테이블 가져오기 Hive shell에 접속 데이터베이스 선택 hive> use hive_retail_db; Sqoop으로 가져온 2개의 테이블(customers, orders) 확인 hive> show tables;

예제 실행을 위한 테이블 가져오기 테이블의 스키마 확인 hive> DESCRIBE customers; hive> DESCRIBE orders;

예제 실행을 위한 테이블 가져오기 ‘customers’ 테이블의 레코드 수 확인 hive> SELECT COUNT(*) FROM customers;

예제 실행을 위한 테이블 가져오기 ‘orders’ 테이블의 레코드 수 확인 hive> SELECT COUNT(*) FROM orders;

Hive 쿼리문 사용 예 각 도시별 고객의 수를 내림 차순으로 정렬하여 출력

Hive 쿼리문 사용 예 각 도시별 고객의 수를 내림 차순으로 정렬하여 출력 hive> SELECT customer_city, COUNT(*) as num FROM customers GROUP BY customer_city ORDER BY num DESC LIMIT 10; 고객의 도시를 기준으로 그룹화된 결과의 레코드 수를 계산

Hive 쿼리문 사용 예 각 도시별 고객의 수를 내림 차순으로 정렬하여 출력 hive> SELECT customer_city, COUNT(*) as num FROM customers GROUP BY customer_city ORDER BY num DESC LIMIT 10; 쿼리 문 내에서 alias를 지정하기 위해 as를 사용

Hive 쿼리문 사용 예 각 도시별 고객의 수를 내림 차순으로 정렬하여 출력 hive> SELECT customer_city, COUNT(*) as num FROM customers GROUP BY customer_city ORDER BY num DESC LIMIT 10; customer_city 칼럼을 기준으로 레코드를 그룹화

Hive 쿼리문 사용 예 각 도시별 고객의 수를 내림 차순으로 정렬하여 출력 hive> SELECT customer_city, COUNT(*) as num FROM customers GROUP BY customer_city ORDER BY num DESC LIMIT 10; alias가 num인 출력 결과 COUNT(*)를 내림 차순으로 정렬

Hive 쿼리문 사용 예 각 도시별 고객의 수를 내림 차순으로 정렬하여 출력 hive> SELECT customer_city, COUNT(*) as num FROM customers GROUP BY customer_city ORDER BY num DESC LIMIT 10; 출력 결과의 갯수를 10개로 제한

Hive 쿼리문 사용 예 COUNT와 GROUP BY에 대한 2개의 맵리듀스 Job이 실행 hive> SELECT customer_city, COUNT(*) as num FROM customers GROUP BY customer_city ORDER BY num DESC LIMIT 10; Job2 Job1

Hive 쿼리문 사용 예 COUNT와 GROUP BY에 대한 2개의 맵리듀스 Job이 실행 hive> SELECT customer_city, COUNT(*) as num FROM customers GROUP BY customer_city ORDER BY num DESC LIMIT 10; Job2 Job1

Hive 쿼리문 사용 예 각 도시별 고객의 수를 내림 차순으로 정렬하여 출력한 결과

Hive 조인의 사용 예 각 고객별 주문 상황을 출력하기 위해 2개의 테이블 ‘customers’와 ‘orders’을 조인 Join orders

Hive 조인의 사용 예 각 고객별 주문 상황을 출력하기 위해 2개의 테이블 ‘customers’와 ‘orders’을 조인 Join hive> SELECT customer_lname, order_id, order_status FROM customers c JOIN orders o ON (c.customer_id = o.order_customer_id) LIMIT 10; orders

Hive 조인의 사용 예 #1 각 고객별 주문 상황 보기 hive> SELECT customer_lname, order_id, order_status FROM customers c JOIN orders o ON (c.customer_id = o.order_customer_id) LIMIT 10;

Hive 조인의 사용 예 #2 각 고객별 주문 상황 보기 products Join hive> SELECT category_id, category_name, product_name FROM categories c JOIN products p ON(c.category_id = p.product_category_id) LIMIT 10; categiries

Hive 조인의 사용 예 #2 카테고리별 제품 목록 보기 hive> SELECT category_id, category_name, product_name FROM categories c JOIN products p ON(c.category_id = p.product_category_id) LIMIT 10;

Hive 조인의 사용 예 #3 카테고리가 속한 과 를 보기 categiries Join departments hive> SELECT category_id, category_name, department_name FROM categories c JOIN departments d ON(c.category_department_id = d.department_id) LIMIT 10;

Hive 조인의 사용 예 #3 카테고리가 속한 과 를 보기 hive> SELECT category_id, category_name, department_name FROM categories c JOIN departments d ON(c.category_department_id = d.department_id) LIMIT 10;