Hive and Pig 박 영 택 컴퓨터학부.

Slides:



Advertisements
Similar presentations
이혁재 /KASA NoSQL. 요약 NoSQL 소개 데이타베이스 관련 문서 대상 : 클라이언트 프로그래머 NoSQL 소개 데이타베이스 관련 문서 대상 : 클라이언트 프로그래머.
Advertisements

LAB: Web-scale Data Management on a Cloud Lab 1. Introduction 2011/03/04.
Big Data & Hadoop. 1. Data Type by Sectors Expected Value using Big Data.
컴퓨터와 인터넷.
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.
Nested Queries CSED421: Database Systems Labs.
Oozie Web API 기능 테스트 이승엽.
PARK SUNGJIN Oracle 설치 PARK SUNGJIN
DB 프로그래밍 학기.
DB 프로그래밍 학기.
Prepared Statements CSED421: Database Systems Labs.
소리가 작으면 이어폰 사용 권장!.
You YOungseok 데이터베이스 테이블 및 인덱스 You YOungseok.
제로보드 소개 제로보드 설치하기 제로보드 관리하기
Database Laboratory, Hong Ik University
Power Java 제3장 이클립스 사용하기.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
빅데이터 분석 과정.
질의어와 SQL 기본 SQL 고급 SQL 데이타의 수정 데이타 정의 언어 내장 SQL
빅데이터 순환 과정과 플랫폼.
APM 실습 (MySQL).
JSP Programming with a Workbook
Distributed Computing (Apache Hadoop & Hive Review)
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
Apache Hive 빅데이터 분산 컴퓨팅 박영택.
MySQL performance Xhark 김재홍.
6장 Mysql 명령어 한빛미디어(주).
MySQL 및 Workbench 설치 데이터 베이스.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
11장. 데이터베이스 서버 구축과 운영.
14장 질의응답 한빛미디어(주).
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
5장 Mysql 데이터베이스 한빛미디어(주).
MySQL 기본 사용법.
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
07 그룹 함수 그룹 함수의 개념 그룹 함수의 종류 데이터 그룹 생성 HAVING 절.
4-1장. MySQL 제13장.
3.2 SQL Server 설치 및 수행(계속) 시스템 데이터베이스 master
1. C++ 시작하기.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
16장. 테이블의 변경 새로운 행 삽입 테이블에서 테이블로 행을 복사 행 값의 변경 테이블에서 행 삭제
19장. 트랜잭션과 락(LOCK) 트랜잭션이란? MySQL의 트랜잭션 락(LOCK) 쉽게 배우는 MySQL 5.x
게임에서 공공까지, 국내 실 사례들로 본 빅데이터 융합 분석
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
HDFS와 대용량 데이터 처리 콘텐츠서비스연구팀 최완.
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
14 SQLite DB 활용 B A S I C 1 4_ 고객 등록과 조회 L A B 1 4_ 수정과 삭제를 포함하는 고객관리시스템 Advanced LAB 14_ 탭 메뉴의 고객관리시스템.
KHS JDBC Programming 4 KHS
5장 Mysql 데이터베이스 한빛미디어(주).
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
You YoungSEok Oracle 설치 You YoungSEok
웹 어플리케이션 보안 2016년 2학기 3. Mongo db.
환경 설정 예제 데이터베이스 생성 - 그림 3.34의 SQL Server 관리 스튜디오 창의 왼쪽 영역의 데이터베
CHAP 13. 방명록 만들기 실습.
JDBC Lecture 004 By MINIO.
JSP 게시판 구현.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
McGraw-Hill Technology Education
시스템 분석 및 설계 글로컬 IT 학과 김정기.
기말 프로젝트 계획 MVC 패턴 기반 웹 애플리케이션 개발 프로젝트명 : 팀명 : 팀원 :
CHAP 21. 전화, SMS, 주소록.
05. General Linear List – Homework
뇌를 자극하는 Windows Server 장. 데이터베이스 서버.
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
Chapter 10 데이터 검색1.
 6장. SQL 쿼리.
6 객체.
Ⅰ. 데이터베이스 정의 Ⅱ. MS SQL 서버 Ⅲ. 데이터베이스 인터페이스
Presentation transcript:

Hive and Pig 박 영 택 컴퓨터학부

Need for High-Level Languages Hadoop은 대용량 데이터 처리에 효율적 모든 작업을 자바로 직접 작성하는 것은 다소 장황하며 시간이 오래 걸림. 모두가 자바를 사용하길 바라거나, 사용할 줄 아는 것은 아님. Solution: higher-level의 데이터 처리 언어를 개발하는 것 Hive: HQL 은 SQL과 유사 Pig: Pig Latin 은 Perl의 사용법과 유사

Hive and Pig Hive: Hadoop에서의 데이터웨어하우스 어플리케이션 Pig: 대용량 데이터 처리 시스템 쿼리언어는 SQL의 변형인 HQL을 사용함. 테이블은 HDFS에 flat file 형태로 저장됨. Facebook에서 개발되어, 현재는 오픈소스 소프트웨어 Pig: 대용량 데이터 처리 시스템 스크립트는 dataflow 언어인 Pig Latin으로 작성됨. Yahoo에서 개발되어, 현재는 오픈소스 소프트웨어 Common idea: 큰 데이터 처리를 가능하게 하도록 higher-level 언어를 제공. Higher-level 언어가 컴파일되어 Hadoop job으로 넘어감.

Hive: Background Facebook에서 시작 “ETL” 은 python을 통해 구현됨. 데이터 처리량은 10s of GBs (2006)에서 1 TB/day 규모의 new data (2007)로 성장하였고, 현재는 그 수십 배 이상으로 성장함.

Motivation Yahoo는 Hadoop 에서의 어플리케이션 작업을 가능케 하기 위해 Pig를 사용해 작업함. 주된 사용 목적은 unstructured data의 처리 동시에, Facebook 은 Hadoop에서의 warehouse solutions 작업을 전개하였고, 곧 Hive의 개발로 이어짐. 산업에서의 Business intelligence를 위해 데이터의 사이즈가 수집되고 분 석 되는 행보는 급격히 성장하여 기존의 warehousing solution는 매우 비 싼 서비스가 됨

Motivation MR의 한계점 M/R model을 사용해야만 함. 재사용 불가. 에러가 발생하기 쉬움. MapReduce 함수의 다중 stage 필요함

Overview Intuitive What’s Hive Unstructured data를 그것의 실제 형태가 어떻든 테이블처럼 보이게 함. 이 테이블들에 SQL 기반의 쿼리를 직접 사용할 수 있음. 해당 쿼리에 대해 지정된 execution plan을 수립함. What’s Hive structured data 를 Hadoop file system에 저장하기 위한 data warehousing system execution Hadoop MapReduce plans을 통해 사용하기 쉬운 쿼리를 제공함.

Pros Pros 대용량 데이터를 쉽게 처리하기 위한 방안 SQL-based queries를 제공 사용자가 정의한 확장된 인터페이스 제공 Programmability Efficient execution plans 을 제공 다른 데이터베이스와의 상호 연동성(Interoperability)

Cons Cons Future work 데이터를 추가하는 방법이 쉽지 않음 HDFS 안의 파일은 수정 불가(immutable) Views / Variables More Operations In/Exists semantic More future work in the mail list

Application Log processing Data/Text mining Business intelligence Daily Report 사용자 행위 평가 및 예측 Data/Text mining 기계 학습 Business intelligence 광고 배달 스팸 메일 감지

Hadoop MR MR은 low-level이며 사용자 정의 프로그래머를 필요로 함. HIVE는 HiveQL라는 SQL과 같은 언어로 표현 된 쿼리를 지원 이는 하 둡에서 실행되며, MR 작업에서 컴파일 됨. HIVE는 MR 스크립트를 사용 할 수 있음. 또한 MetaStore 를 Include 할 수 있으며 쿼리 최적화 및 쿼리 편집에 유용한 스키마와 통계를 포함. 페이스 북 하이브 웨어 하우스에서 수십,수천의 테이블을 포함하고 있으며, 700TB 이상의 저장소와 200 Fb 이상의 유저들에 의해 ad-hoc 보고와 분석에 사용 됨.

Hive architecture (from the paper)

Query Language (HiveQL) Subset of SQL Meta-data queries Limited equality 와 join predicates No inserts on existing tables (to preserve worm property) 전체 테이블을 덮어 쓸 수 있음.

Hive Usage in Facebook Hive와 Hadoop은 Facebook 내에서 다양한 작업을 할 때 많이 사용됨. 700 TB = 2.1Petabyte after replication! Hadoop의 MR은 응용 프로그램 모델을 생각할 때 활용할 수 있음.

mySql : Using a Database 데이터베이스를 시작하려면 먼저 기존 데이터베이스의 유무를 확인해야 함. 현재 서버에 있는 데이터베이스를 찾기 위해 SHOW 문을 사용: mysql> show databases; +----------+ | Database | | mysql | | test | 2 rows in set (0.01 sec) :

Using a Database 새 데이터베이스를 만들기 “create database” 명령을 실행: mysql> create database webdb; 데이터베이스를 사용하려면, “use”명령을 사용: mysql> use webdb;

Creating a Table Empty set은 테이블이 없다는 것을 표시함. 데이터베이스를 선택하면, 모든 데이터베이스 테이블을 볼 수 있음 : mysql> show tables; Empty set (0.02 sec) Empty set은 테이블이 없다는 것을 표시함.

Creating a Table Table: pets 애완 동물을 저장하는 테이블 name: VARCHAR(20) owner: VARCHAR(20) species: VARCHAR(20) sex: CHAR(1) birth: DATE date: DATE VARCHAR is usually used to store string data.

Creating a Table 테이블을 만들려면 이 CREATE TABLE 명령을 사용 : mysql> CREATE TABLE pet ( -> name VARCHAR(20), -> owner VARCHAR(20), -> species VARCHAR(20), -> sex CHAR(1), -> birth DATE, death DATE); Query OK, 0 rows affected (0.04 sec)

Showing Tables mysql> show tables; +------------------+ | Tables_in_test | | pet | 1 row in set (0.01 sec)

Describing Tables 테이블 구조를 보려면, describe명령어를 사용: mysql> describe pet; +---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | | name | varchar(20) | YES | | NULL | | | owner | varchar(20) | YES | | NULL | | | species | varchar(20) | YES | | NULL | | | sex | char(1) | YES | | NULL | | | birth | date | YES | | NULL | | | death | date | YES | | NULL | | 6 rows in set (0.02 sec)

Deleting a Table 전체 테이블을 삭제하려면 DROP TABLE 명령을 사용: mysql> drop table pet; Query OK, 0 rows affected (0.02 sec)

Loading Data For example: 테이블에 데이터를 입력하는 INSERT 문을 사용. INSERT INTO pet VALUES ('Fluffy','Harold','cat','f', '1999-02-04',NULL); 다음 슬라이드는 샘플 데이터의 집합을 표시.

SQL Select SELECT 문은 테이블에서 정보를 검색 가능. 일반적인 형식은 다음과 같다: SELECT what_to_select FROM which_table WHERE conditions_to_satisfy

Selecting All Data SELECT문 원하는 컬럼을 출력. mysql> select * from pet; +----------+--------+---------+------+------------+------------+ | name | owner | species | sex | birth | death | | Fluffy | Harold | cat | f | 1999-02-04 | NULL | | Claws | Gwen | cat | f | 1994-03-17 | NULL | | Buffy | Harold | dog | f | 1989-05-13 | NULL | | Fang | Benny | dog | m | 1999-08-27 | NULL | | Bowser | Diane | dog | m | 1998-08-31 | 1995-07-29 | | Chirpy | Gwen | bird | f | 1998-09-11 | NULL | | Whistler | Gwen | bird | | 1997-12-09 | NULL | | Slim | Benny | snake | m | 1996-04-29 | NULL | 8 rows in set (0.00 sec)

Selecting Particular Rows 테이블의 조건에 맞는 특정한 행만을 선택 가능. “Bowser”의 생년월일의 변경 사항을 확인하려는 경우 “Bowser” 의 레코드를 선택 : mysql> SELECT * FROM pet WHERE name = "Bowser"; +--------+-------+---------+------+------------+------------+ | name | owner | species | sex | birth | death | | Bowser | Diane | dog | m | 1998-08-31 | 1995-07-29 | 1 row in set (0.00 sec)

Selecting Particular Rows 1998 년 이후에 태어난 모든 동물을 찾으려면 SELECT * FROM pet WHERE birth >= "1998-1-1"; 암컷인 개를 모두 찾으려면 AND를 사용. SELECT * FROM pet WHERE species = "dog" AND sex = "f"; 모든 새나 뱀을 찾으려면, OR을 사용. SELECT * FROM pet WHERE species = "snake" OR species = "bird";

Selecting Particular Columns 테이블에서 전체 행을 표시하지 않으려면, 관심이 있는 열 들을 쉼표로 구분하여 지정. 애완 동물이 태어난 때를 알고 싶은 경우, 이름과 출생 열을 선택함. (see example next slide.)

Selecting Particular Columns mysql> select name, birth from pet; +----------+------------+ | name | birth | | Fluffy | 1999-02-04 | | Claws | 1994-03-17 | | Buffy | 1989-05-13 | | Fang | 1999-08-27 | | Bowser | 1998-08-31 | | Chirpy | 1998-09-11 | | Whistler | 1997-12-09 | | Slim | 1996-04-29 | 8 rows in set (0.01 sec)

Sorting Data 결과를 정렬하려면 ORDER BY 절을 사용. 예를 들면, 동물의 생일을 날짜 별로 볼 수 있음. mysql> SELECT name, birth FROM pet ORDER BY birth; +----------+------------+ | name | birth | | Buffy | 1989-05-13 | | Claws | 1994-03-17 | | Slim | 1996-04-29 | | Whistler | 1997-12-09 | | Bowser | 1998-08-31 | | Chirpy | 1998-09-11 | | Fluffy | 1999-02-04 | | Fang | 1999-08-27 | 8 rows in set (0.02 sec)

Sorting Data 역순으로 정렬하려면 DESC절을 사용할 수 있음. (키워드 내림차순) mysql> SELECT name, birth FROM pet ORDER BY birth DESC; +----------+------------+ | name | birth | | Fang | 1999-08-27 | | Fluffy | 1999-02-04 | | Chirpy | 1998-09-11 | | Bowser | 1998-08-31 | | Whistler | 1997-12-09 | | Slim | 1996-04-29 | | Claws | 1994-03-17 | | Buffy | 1989-05-13 | 8 rows in set (0.02 sec)

What is Sqoop? Sqoop is a tool designed to transfer data between Hadoop and relational databases. You can use Sqoop to import data from a relational database management system (RDBMS) such as MySQL or Oracle into the Hadoop Distributed File System (HDFS), transform the data in Hadoop MapReduce, and then export the data back into an RDBMS. sqoop.apache.org

Sqoop Easy, parallel database import/export What you want do? Insert data from RDBMS to HDFS Export data from HDFS back into RDBMS

Sqoop HDFS Sqoop RDBMS 35 ©2011 Cloudera, Inc. All Rights Reserved.

Sqoop – SQL to Hadoop Open source tool to extract data from structured data st ore into Hadoop Architecture NameNode and DataNode each run an internal web server in order to display basic information about the current status of the cluster

Importing Data With Sqoop MySQL에 로그온 $ mysql –-user=root –-password=cloudera 데이터베이스 목록 확인 > show databases; 데이터베이스 선택 > use retail_db; 테이블 목록 확인 > show tables;

Importing Data With Sqoop ‘customers’ 테이블의 스키마 확인 > DESCRIBE customers;

Importing Data With Sqoop ‘customers’ 테이블의 내용 확인 > SELECT * FROM customers LIMIT 5;

Importing Data With Sqoop $ sqoop list-databases –-connect jdbc:mysql://localhost \ –-username root -–password cloudera

Importing Data With Sqoop sqoop 명령어를 이용해 데이터 베이스 ‘retail_db’ 의 테이블 목록 확인 sqoop list-tables -–connect jdbc:mysql://localhost/retail_db -–username root -–password cloudera

Importing Data With Sqoop 테이블 ‘customers’를 HDFS로 가져오기 $ sqoop import \ --connect jdbc:mysql://localhost/retail_db \ --table customers --fields-terminated-by ‘\t’ \ --username root --password cloudera

Importing Data With Sqoop 명령어가 정상적으로 동작했는지 확인 $ hadoop fs -ls customers $ hadoop fs -tail movie/part-m-00000