Immersion In Data

AWS

AWS기반 데이터 분석 파이프라인 구축[2]

sungjunminn 2022. 9. 30. 17:31

전제조건

  •  AWS 계정에서 AdminstratorAccess에 대한 액세스 권한이 있어야 한다.
  • us-east-1 리전에서 실행되어야 한다. 
  • 가이드의 링크에 따라 새 탭에서 여는 것이 가장 좋다. 
  • 최신 브라우저에서 실습을 진행한다. 

 

실습과정

  • Raw 데이터 추출, 변환, 적재

 

Amazon Kinesis Data Firehose : 스트리밍 데이터를 안정적으로 캡처하고, 변환하여 데이터 레이크에 전달하는 추출, 변환, 로드 서비스 (스트리밍 데이터 : 고객, 애플리케이션, 시스템에서 실시간으로 생성되는 데이터)

Amazon S3 : 클라우드 객체 스토리지 서비스

 

1. S3 버킷 생성

데이터를 적재하기 위한 저장소를 만들어 주기 위해 S3 버킷을 생성한다. 

 

 

data폴더 안에 raw라는 폴더 추가 생성

 

 

 

버킷 : sj-analytics-workshop-bucket

폴더1 : data

폴더2 : reference_data

 

2. 데이터 적재

reference_data 폴더에 track_list data 다운로드 후 업로드

 

3. kinesis firehose 생성

 

 

 

 

설정

  • 스트림 이름 : analytics-workshop-stream
  • 소스 : Direct PUT - 실시간 데이터가 아니라 직접 소스를 올리기 때문에 Direct PUT으로 설정
  • 목적지 : s3/sj-analytics-workshop-bucket
  • 접두사(prefix) : data/raw
  • S3 버퍼 조건 : 1MB, 60초(저장의 간격)

 

4. 더미 데이터 생성

더미 데이터를 생성하기 위해 Kinesis Data Generator 서비스 사용

  • 템플릿 지정
  • 스택 세부정보 지정
  • 스택 옵션 구성
  • 검토

단계로 이루어져 있으며 스택 세부정보 지정 단계에서 아이디와 비밀번호만 지정해준 뒤 검토 단계까지 진행한다. 

검토 단계를 진행 했다면 Amazon kinesis data generator 홈페이지로 연결되고, 이전에 지정한 아이디와 비밀번호로 로그인한다. 

  • 이전 단계의 사용자 이름 및 비밀번호로 로그인
  • 지역 : us-east-1
  • 스트림/전송 스트림 : analytics-workshop-stream
  • 초당 기록 : 2000
  • 레코드 템플릿(템플릿 1) : 큰 텍스트 영역에 다음 json 템플릿을 삽입

 

 

스택이 잘 생성되었다. 

 

 

Kinesis-Data-Generator-Cognito-User 스택을 선택하고 출력탭으로 이동한다. 

KinesisDataGeneratorUrl의 링크를 클릭하면,

 

 

다음과 같은 Kinesis Data Generator 툴이 열리게 된다. 

스택을 생성할 때, 입력했던 아이디와 비밀번호를 입력하고 들어간다. 

 

 

  • Region : us-east-1
  • Stream/delivery stream : analytics-workshop-stream
  • Records per second : 2000
  • Record template (Template 1) : 큰 텍스트 영역에 다음 json 템플릿을 삽입

 

{
  "uuid": "{{random.uuid}}",
  "device_ts": "{{date.utc("YYYY-MM-DD HH:mm:ss.SSS")}}",
  "device_id": {{random.number(50)}},
  "device_temp": {{random.weightedArrayElement(
    {"weights":[0.30, 0.30, 0.20, 0.20],"data":[32, 34, 28, 40]}
  )}},
  "track_id": {{random.number(30)}},  
  "activity_type": {{random.weightedArrayElement(
        {
            "weights": [0.1, 0.2, 0.2, 0.3, 0.2],
            "data": ["\"Running\"", "\"Working\"", "\"Walking\"", "\"Traveling\"", "\"Sitting\""]
        }
    )}}
}

 

Send data - 클릭

메시지 창에서 ~10,000개의 메시지를 보내면 - Stop sending data to Kinesis 클릭

 

5. 데이터가 S3에 도착했는지 확인

버킷에 들어가 보면 데이터가 들어가 있는 것을 확인할 수 있다.