실습
<0> 목표
Amazon Redshift를 만들고 사용해보자.
DW (Data Wherehouse)이다.
s3에서 Redshift로 데이터 올리고, SQL 클라이언트에서 Redshift로 쿼리 하자.
Redshift 성능 모니터링 하자
1
구성
데이터 ---------> S3 -------> Amazon Redshift <---------- sql 클라이언트 (쿼리) , 웹서버를 통해
S3 데이터를 레드 쉬프트로 올리기
SQL 클라이언트에서 쿼리로 질의 하기
2
계정과 암호를 특이하게 설정
3
Redshift Role이 필요함 (S3를 사용할수 있는 Role)
4
클러스터 서브넷 그룹을 미리 만들어야 한다.
클러스터 서브넷 그룹은 Private Subnet 으로 지정하자.
Redshift > 구성 > 클러스터 서브넷 그룹
<1> Amazon Redshift 클러스터 생성
<2> Amazon Redshift 연결하기
<3> 데이터 올리기
<4> 쿼리 실행시키기
<5> 테이블 조인하기
<6> 성능 분석
<7> Amazon Redshift 모니터링 하기
<1> Amazon Redshift 클러스터 만들기
1
Amazon Redshift > 클러스터 생성
클러스트 식별자
seo-rs1
DC2
dc2.large
Nodes
2
2
데이터 베이스 이름
dev
데이터베이스 포트(선택 사항)
5439
마스터 사용자 이름
master
마스터 사용자 암호
master123A
// 적어도 하나의 대문자가 있어야 함
3
클러스터 권한 > Redshift-role 선택 > IAM역할 클릭하여 추가한다.
// Role 이 필요하다.
IAM 정책 생성
seo-redshift-policy
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "s3:*",
"Resource": "*",
"Effect": "Allow"
}
]
}
4
role
Redshift - Customizable
seo-redshift-role
seo-redshift-policy 추가
5
기본값사용을 사용하지 않는 것으로 변경한다.
네트워크 및 보안 > 사용 VPC >
6
SG그룹 > default제거 (기본값 제거)
> Redshift 보안 그릅 > TCP 5439 0.0.0.0/0
인바운드 규칙 편집
7
클러스터 생성
생성완료
8
속성 > endpoint 복사
9
그림으로 다시 보기
노드 2개 디폴트
IAM 권한 변경
10
추가 구성에서 네트워크 변경
// VPC를 선택하여 사용하려고하면, 클러스터 서브넷 그룹을 미리 만들어야 한다.
클러스터 서브넷 그룹은 Private Subnet 으로 지정하자.
Redshift > 구성 > 클러스터 서브넷 그룹
기본 VPC대신 Private로 변경
https://aws.amazon.com/ko/premiumsupport/knowledge-center/vpc-redshift-associate/
11
보안
보안그룹 변경 필요
12
일반 정보에서 엔드포인트 복사
seo-rs1.chmfpfndoht9.us-west-2.redshift.amazonaws.com:5439/dev
<2> Amazon Redshift 연결하기
1
클라이언트 에서
2
host는 Redshift 콘솔에서 확인하라.
Endpoint 수정 (아래 참고)
seo-rs1.chmfpfndoht9.us-west-2.redshift.amazonaws.com:5439/dev
// host 주소는 :5439/dev 삭제
seors.xxxxxxxxxxxxx.us-west-2.redshift.amazonaws.com:5439/lab
=>
seors.xxxxxxxxx.us-west-2.redshift.amazonaws.com
username
master
master123A
dev
5439 (포트 변경)
3
접속 성공
SQL Query
<3> S3에서 Amazon Redshift로 데이터 올리기
1
Amazon Redshift 테이블 만들기
SQL Query
클라이언트에서 run query
// 코드
2
S3 data -> Redshift 올리기
// 코드 입력
// INSERT-YOUR-REDSHIFT-ROLE 대신에 redshiftrole 값 입력.
쿼리 실행
<4> 쿼리 실행시키기
1
SELECT COUNT(*) FROM flights;
결과 레코더 나옴.
레코더 수 나옴. 엄청 올라 갔다!
2
데이터 보기
SELECT * FROM flights ORDER BY random() LIMIT 10;
참고
https://docs.aws.amazon.com/ko_kr/redshift/latest/dg/tutorial-loading-data.html
감사합니다.