LG 이노텍 - Amazon Redshift Serverless를 활용한 데이터 분석 플랫폼 혁신 과정 - 발표자: 유재상 선임, LG이노...
20140806 AWS Meister BlackBelt - Amazon Redshift (Korean)
1. Amazon Redshift
[AWS Meister - Black Belt] 웨비나 시리즈 발표자료
번역: 정윤진 솔루션스 아키텍트
이 자료의 내용은 웨비나가 진행된 시기에 맞춰져 있어 현재의 내용과는 다를 수
있습니다. 내용에 대한 문의사항이 있으신 경우 info-kr@amazon.com으로 연락
주시기 바랍니다.
4. Amazon Redshift
• 데이터 저장 특징에 따른 구분
Amazon DynamoDB
Amazon RDS
Amazon ElastiCache
Amazon Redshift
SQL
NoSQL• 빠른 응답
속도
• 메모리 저장소
• 3개 거점에
데이터 분산 복제
저장
• SSD를 사용
• 트랜젝션 처리
• 범용 기술
• 집계 및 분석 처리
• 대량의 데이터
5. Amazon Redshift 아키텍처
• MPP(대량의 병렬 처리)
– CPU、Disk・Network I/O 병렬 처리
– 논리적 자원 관리「노드 슬라이스」
• 데이터 저장 방법
– Row 가 아닌 Column 순차 저장
– 압축
• 데이터 통신
– 컴퓨트 노드간 통신
– 각 컴퓨팅 노드에서 리더 노드와 통신
– 다른 AWS서비스와 통신
7. 아키텍처:병렬 쿼리 처리
SELECT *
FROM lineitem;
CPU CPU CPU CPU CPU CPU
SELECT *
FROM part;
최대 동시 쿼리 실행: 50
8. 아키텍처:노드 슬라이스
노드 슬라이스 =
메모리와 디스크를 CPU
코어와 동일한 숫자로
분할한 논리 단위
CPU CPU CPU CPU CPU CPU
9. 아키텍처:컬럼(Column) 기반 저장
• 행(row)(RDBMS) • 열(Redshift)
orderid name price
1 Book 100
2 Pen 50
…
n Eraser 70
orderid name price
1 Book 100
2 Pen 50
…
n Eraser 70
10. 데이터 저장의 밸런싱
CPU CPU CPU CPU CPU CPU
노드간 데이터의 편차는
쿼리 실행 시간에
영향을 미침
11. 데이터 전송
노드에 필요한 데이터가
없는 경우 데이터 전송이
발생
- 단일노드 전송
- 브로드 캐스팅
리더 노드에 각 컴퓨트
노드 결과를 집계
14. Free tier 범위확장과 3년 RI 가격 인하
• 2개월간 dw2.large 인스턴스를 730 시간 무료
사용 가능(클러스터 구성 가능)
• BI、Data Integration파트너가 제공하는 무료
평가판 존재
– http://aws.amazon.com/redshift/partners
• 아시아/태평양에서 3년 RI가 25% 이상 가격
인하
15. 분산 방식 – ALL
• EVEN、DISTKEY외에 3번째 분산 방식
• 각 컴퓨팅 노드에 대상 테이블의 모든 레코드가
복제
• 마스터 테이블 등 레코드 수가 적은 테이블 방향
• 주로 조인의 고속화에 높은 효율
* 자세한 내용은 이후 섹션에서 설명
16. 결과 세트의 크기(1)
• 커서마다 결과 세트를 저장
1
2 3 ・・・ n 결과 집합
커서 SELECT * FROM …
17. 결과 세트의 크기(2)
• 결과 세트의 최대 크기 변경 가능
max_cursor_result_set_size:MB단위
A B
C D
dw1.8xlarge
450GB * 4
= 1800GB
A
dw1.8xlarge
225GB * 8
= 1800GB
C
B
D
E
G
F
H
크기 변경=
커서 수 변경
18. 결과 세트의 크기(3)
• 대량의 결과 집합 커서는 권장되지 않음
– 대량의 데이터를 리더 노드에서 일단 집약, 출력(I/O)
• UNLOAD명령을 사용하여 S3에 결과 저장
• Fetch size 매개 변수를 사용하여 커서에서 검색
할 레코드 수를 제어
• 노드 유형마다 결과 세트의 디폴트 값이 다름
http://docs.aws.amazon.com/redshift/latest/mgmt/working-with-
parameter-groups.html#max-cursor-result-set-size-param
19. 압축 유형 - LZO
• 컬럼에 대해 새로운 압축 유형 (LZO) 를 지원
• 문자열에 대해 효과적인 압축으로 자동 선택
– 압축 인코딩이 지정되지 않은 컬럼에 처음 COPY 수행 시
• S3에서 LZOP 형식의 압축 파일에서 COPY
20. COPY 명령의 확장(1)
• MANIFEST 를 특정 데이터 파일의 copy 에
지정
{
"entries": [
{"url":"s3://mybucket-alpha/2013-10-04-custdata", "mandatory":true},
{"url":"s3://mybucket-alpha/2013-10-05-custdata", "mandatory":true},
{"url":"s3://mybucket-beta/2013-10-04-custdata", "mandatory":true},
{"url":"s3://mybucket-beta/2013-10-05-custdata", "mandatory":true}
]
}
21. COPY명령의 확장(2)
• JSON 파일 COPY
– 데이터 구조 자동인식 또는 JSONPath 에 의한 정의
• Amazon EMR에 대한 대응
copy sales from 'emr:// j-1H7OUO3B52HI5/myoutput/part*' credentials
'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-
key>';
클러스터ID HDFS 경로
22. Cross-Region COPY
• 다른 region 의 DyanmoDB 및 S3 로 부터
COPY 가능
copy customer from 's3://mybucket/customer/customer.tbl.' credentials
‘aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-
key>’ gzip delimiter '|' region 'us-east-1';
23. Cross-Region 스냅샷
• 기존 클러스터의
스냅샷을 다른 region 의
클러스터 생성에 사용
가능
• 보존 기간 지정 가능
(최대 35일)
• 지역간 데이터 전송 비용
발생
25. 테이블 디자인:분산 방식
• EVEN
– 각 레코드가 슬라이스에 라운드 로빈 방식으로 분산, 균등하게
데이터가 저장됨
• DISTKEY
– 명시적으로 지정한 컬럼을 기준으로 각 레코드의 슬라이스 배치가
결정됨
– 컬럼 카디널리티에 따라 슬라이스간 상당한 편차가 발생 할 수 있다
• ALL
– 모든 레코드가 각 컴퓨팅 노드에 동일하게 복제
26. EVEN vs. DISTKEY
• EVEN • DISTKEY=p_partkey
select trim(name) tablename, slice,
sum(rows)
from stv_tbl_perm where name='part'
group by name, slice
order by slice;
tablename | slice | sum
-----------+-------+---------
part | 0 | 1600000
part | 1 | 1600000
…
part | 126 | 1600000
part | 127 | 1600000
tablename | slice | sum
-----------+-------+---------
part | 0 | 1596925
part | 1 | 1597634
…
part | 126 | 1610452
part | 127 | 1596154
각 슬라이스에 고르게 분산 키의 중요도에 따라
27. Collocation(1)
• 각 컴퓨트 노드에 공통으로 필요한 데이터의
배치
– 조인의 대상이 되는 레코드를 동일한 노드로 취합
• 처리 방법
1. 조인에 자주 사용되는 열을 DISTKEY로 만들거나 또는
2. 분산 방식 ALL에서 테이블을 생성(마스터 테이블)select sum(l_extendedprice* (1 - l_discount)) as revenue
from lineitem, part
Where (p_partkey = l_partkey …
1. 각 테이블에서 자주 조인되는 키를 DISTKEY로 적용
또는
2. 분산방식 ALL을 사용하여 작성
28. Collocation(2):DISTKEY
6200995 | almond pale linen
| Manufacturer#3| Brand#32
part
lineitem
5024338535 | 6200995 | 0.01
|0.08 | A | F
|1992-01-02 | 1992-02-14
2201039 | almond pale linen
| Manufacturer#1| Brand#11
part
lineitem
121932093 | 2201039 | 0.05
|0.43 | D | E
|1994-07-11 | 1994-08-23
38. SKYLARK Group POS 데이터 실시간 분석
• 수십억건 규모의 POS데이터를 지도, 날씨,
쿠폰 등의 주변 정보와 조합하여 실시간으로 분석
• すかいらーく 그룹은 약 3,000 개소의 매장을 확장
연간 약 4억명이 이용
• POS 데이터 수집, 자동화 된 쿼리의 응답 속도를 수십배 향상
• 기존 2일씩 걸리던 분석 업무를 실시간으로 제공
• 가설 검증 사이클을 최단시간에 처리
39. NTT DOCOMO의 DWH 통합 프로젝트
http://www.slideshare.net/minoruetoh/nttr4public
40. 결론
• 스타트업 부터 엔터프라이즈까지 폭넓게 사용
• 무료 사용에서 시작하여 클러스터 구축까지
가능
• 노드 수량의 증가와 확장에 의존하지 않는 튜닝
– 테이블 디자인
– Workload Management
41. 참고 자료
• 문서
– https://aws.amazon.com/documentation/redshift/
• 포럼
– https://forums.aws.amazon.com/forum.jspa?forumID=15
5&start=0
• 새로운 기능
– https://forums.aws.amazon.com/thread.jspa?threadID=1
32076&tstart=25