20140806 aws meister blackbelt - amazon redshift (korean)
TRANSCRIPT
Amazon Redshift
[AWS Meister - Black Belt] 웨비나 시리즈 발표자료 번역: 정윤진 솔루션스 아키텍트
이 자료의 내용은 웨비나가 진행된 시기에 맞춰져 있어 현재의 내용과는 다를 수 있습니다. 내용에 대한 문의사항이 있으신 경우 [email protected]으로 연락 주시기 바랍니다.
Amazon Redshift
• 데이터 저장 특징에 따른 구분
Amazon DynamoDB
Amazon RDS
Amazon ElastiCache
Amazon Redshift
SQL
NoSQL • 빠른 응답 속도
• 메모리 저장소
• 3개 거점에 데이터 분산 복제 저장
• SSD를 사용
• 트랜젝션 처리 • 범용 기술
• 집계 및 분석 처리 • 대량의 데이터
Amazon Redshift 아키텍처
• MPP(대량의 병렬 처리) – CPU、Disk・Network I/O 병렬 처리
– 논리적 자원 관리「노드 슬라이스」
• 데이터 저장 방법 – Row 가 아닌 Column 순차 저장
– 압축
• 데이터 통신 – 컴퓨트 노드간 통신
– 각 컴퓨팅 노드에서 리더 노드와 통신
– 다른 AWS서비스와 통신
아키텍처:컬럼(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
신규 노드 유형 – DW2
• 성능, 비용 효율적인 SSD 기반 스토리지 옵션 추가
DW1 - Dense Storage
vCPU ECU Memory(GB) Storage I/O Price / hour
dw1.xlarge 2 4.4 15 2TB HDD 0.30GB/s $1.250
dw1.8xlarge 16 35 120 16TB HDD 2.40GB/s $10.000
DW2 - Dense Compute
dw2.large 2 7 15 0.16TB SSD 0.20GB/s $0.330
dw2.8xlarge 32 104 244 2.56TB SSD 3.70GB/s $6.400
Free tier 범위확장과 3년 RI 가격 인하
• 2개월간 dw2.large 인스턴스를 730 시간 무료 사용 가능(클러스터 구성 가능)
• BI、Data Integration파트너가 제공하는 무료 평가판 존재 – http://aws.amazon.com/redshift/partners
• 아시아/태평양에서 3년 RI가 25% 이상 가격 인하
분산 방식 – ALL
• EVEN、DISTKEY외에 3번째 분산 방식
• 각 컴퓨팅 노드에 대상 테이블의 모든 레코드가 복제
• 마스터 테이블 등 레코드 수가 적은 테이블 방향
• 주로 조인의 고속화에 높은 효율
* 자세한 내용은 이후 섹션에서 설명
결과 세트의 크기(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
크기 변경= 커서 수 변경
결과 세트의 크기(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
압축 유형 - LZO
• 컬럼에 대해 새로운 압축 유형 (LZO) 를 지원
• 문자열에 대해 효과적인 압축으로 자동 선택 – 압축 인코딩이 지정되지 않은 컬럼에 처음 COPY 수행 시
• S3에서 LZOP 형식의 압축 파일에서 COPY
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}
]
}
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 경로
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';
Cross-Region 스냅샷
• 기존 클러스터의 스냅샷을 다른 region 의 클러스터 생성에 사용 가능
• 보존 기간 지정 가능 (최대 35일)
• 지역간 데이터 전송 비용 발생
테이블 디자인:분산 방식
• EVEN – 각 레코드가 슬라이스에 라운드 로빈 방식으로 분산, 균등하게 데이터가 저장됨
• DISTKEY – 명시적으로 지정한 컬럼을 기준으로 각 레코드의 슬라이스 배치가 결정됨
– 컬럼 카디널리티에 따라 슬라이스간 상당한 편차가 발생 할 수 있다
• ALL – 모든 레코드가 각 컴퓨팅 노드에 동일하게 복제
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
각 슬라이스에 고르게 분산 키의 중요도에 따라
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을 사용하여 작성
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
Collocation(3):ALL
part
lineitem
part
lineitem
l_partkey l_partkey
p_partkey p_partkey
업데이트:모든 노드에 복제 쿼리:조인은 각 컴퓨트 노드에서 처리
설계의 포인트 – 분산 방식
• 작은 테이블은 ALL (마스터 테이블)
• 조인을 자주하지 않고 비정규화 된 테이블은 EVEN으로 분산
• 여러 테이블에서 조인의 대상이 되는 경우 DISTKEY 로 분산
Workload Management
• 장시간 수행되는 쿼리는 단시간 실행되는 쿼리의 수행을 지연시켜 병목을 야기 할 수 있음
• 여러개의 큐를 사용하여 병렬로 쿼리를 수행 할 수 있음
• 쿼리를 지정된 큐로 라우팅 가능
WLM 사용의 효과
• 큐 단위로 쿼리의 병렬 수행을 보장 – 메모리의 할당 지정 가능
• 특정 사용자 또는 그룹에 의한 클러스터 점유 방지 – 최대 쿼리 실행 시간도 지정 가능
• 쿼리의 병렬처리 수의 증가가 항상 성능 향상으로 이어지지는 않음
MUJI Passport
• 온/오프라인 구분 없이 팬들과 소통 – 다수의 미디어에서 데이터의 수집, 분석이 필요
– 소설 미디어 및 실제 매장 인터넷 등
• 지속적인 매장 방문객 증가 -> 매출향상
• 할인의 최소화 -> 대상 마케팅
SKYLARK Group POS 데이터 실시간 분석
• 수십억건 규모의 POS데이터를 지도, 날씨,
쿠폰 등의 주변 정보와 조합하여 실시간으로 분석
• すかいらーく 그룹은 약 3,000 개소의 매장을 확장 연간 약 4억명이 이용
• POS 데이터 수집, 자동화 된 쿼리의 응답 속도를 수십배 향상
• 기존 2일씩 걸리던 분석 업무를 실시간으로 제공
• 가설 검증 사이클을 최단시간에 처리
NTT DOCOMO의 DWH 통합 프로젝트
http://www.slideshare.net/minoruetoh/nttr4public
결론
• 스타트업 부터 엔터프라이즈까지 폭넓게 사용
• 무료 사용에서 시작하여 클러스터 구축까지 가능
• 노드 수량의 증가와 확장에 의존하지 않는 튜닝 – 테이블 디자인
– Workload Management
참고 자료
• 문서 – 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