bigdata overview
TRANSCRIPT
BIGDATA SYSTEM OVERVIEWwith Hadoop and NoSQL
Big Data?
Google Platforms for BigData
Example : Search Engine
Crawler
Index Engine
Search Engine
The platform needs
Distributed File systemDistributed processing
Key-Value Store
Google Opensources Amazon
File System Google File System Apache Hadoop File System
Amazon Elastic Compute Cloud(EC2)
Key-Value Store
Google Bigtable Apache HBase Amazon DynamoDB
Processing Google MapReduce Apache Hadoop Amazon Elastic MapReduce(EMR)
Analysis Language
Google Swazall Apache Pig & HiveCloudera Impala
Support Hive and Impala
Hadoop?
Hadoop from Google platform
Google File system (2003, S Ghemawat)MapReduce (2004, Jeffrey Dean)
parallelization
fault-tolerance
data distribution
load balancing
MapReduce
Scale-outHigh availability
Parallelism(Local Processing)Single Point Of Failure(SPOF)
NoSQL
Consistency Single request/response operation sequence읽기 동작은 마지막으로 쓰여진 데이터를 리턴
Availability 특정 노드가 장애가 나도 서비스가 가능해야 한다
Partition-tolerance 노드간에 통신 문제가 생겨서 메시지를 주고받지 못하는 상황이라도 동작해야 한다.
ACID VS BASE• 원자성(Atomicity)은 트랜잭션과 관련된 작업들이 모두 수행되었는지 아니면 모두 실행이 안되었는지를 보장하는 능력이다. 자금 이체는 성공할 수도 실패할 수도 있지만 원자성은 중간 단계까지 실행되고 실패하는 일은 없도록 하는 것이다.
• 일관성(Consistency)은 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것을 의미한다. 무결성 제약이 모든 계좌는 잔고가 있어야 한다면 이를 위반하는 트랜잭션은 중단된다.
• 고립성(Isolation)은 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미한다. 이것은 트랜잭션 밖에 있는 어떤 연산도 중간 단계의 데이터를 볼 수 없음을 의미한다. 은행 관리자는 이체 작업을 하는 도중에 쿼리를 실행하더라도 특정 계좌간 이체하는 양 쪽을 볼 수 없다. 공식적으로 고립성은 트랜잭션 실행내역은 연속적이어야 함을 의미한다. 성능관련 이유로 인해 이 특성은 가장 유연성 있는 제약 조건이다.
• 지속성(Durability)은 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미한다. 시스템 문제, DB 일관성 체크 등을 하더라도 유지되어야 함을 의미한다. 전형적으로 모드 트랜잭션은 로그로 남고 시스템 장애 발생 전 상태로 되돌릴 수 있다. 트랜잭션은 로그에 모든 것이 저장된 후에만 commit 상태로 간주될 수 있다.
ACID VS BASE
• Basically Available : 기본적으로 Available하고
• Soft-state : 사용자가 관리(refresh, modify)하지 않으면 Data가 expire 될 수도 있으며
• Eventually consistency : 지금 당장은 아니지만 언젠가는 Data가 일관성을 가진다
RDBMS
데이터 분석
테이블 설계
쿼리 디자인
결과
데이터 중복 최소화
NoSQL
데이터 분석
쿼리 디자인
테이블 설계
결과
데이터 중복, 비정형화
RDBMS
데이터 분석
테이블 설계
쿼리 디자인
결과
데이터 중복 최소화
NoSQL
데이터 분석
쿼리 디자인
테이블 설계
결과
데이터 중복, 비정형화
NoSQL supports only get/put
Put : Insert into TABLE VALUES(KEY,value1,value2,…,valuen)Get : Select * from TABLE where KEY=”key”
SQL? Sort, Join, Group, Range….
Hive, Pig, HBase… SQL-Style Analysis
Hive example
WordCount example
CREATE TABLE wordcount ASSELECT word, count(1) AS count
FROM (SELECT EXPLODE(SPLIT(LCASE(REGEXP_REPLACE(line,'[\\p{Punct},\\p{Cntrl}]','')),' '))
AS word FROM myinput) wordsGROUP BY word
ORDER BY count DESC, word ASC;