일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- write Through
- SQS
- CloudFormation
- DaemonSet
- Kubernetes
- 유나인버거조인트
- EKS
- APIGateway
- CloudWatch
- Round Robin
- 정보처리기능사
- istio
- access_log
- 3AZ
- DNS
- CodeBuild
- server
- ASG
- S3
- Lambda
- CodeCommit
- Kinesis
- stateful
- 해킹송
- 쿠버네티스
- AWS
- cloudwatch-agent
- CodePipeline
- write back
- cbt
- Today
- Total
cloud bee
S3와 EMR을 활용하여 데이터 변환작업 구성 본문
EMR과 S3를 활용하여 amazon web service console 환경에서 해당 아키텍처를 구축해 보도록 할 것이다.
아키텍처 이미지
블로그 과정에서 필요로 하는 서비스 목록
✅ Amazon EMR
✅ Amazon S3
✅ IAM ( Identity and Access Management )
블로그 실습 조건
✅ amazon console account
✅ region: ap-northeast-2( 서울 리전 )
Amazon Web Service Steps
Step1. Create default vpc
Step2. Create Key Pair & Security Group
Step3. Create S3 Bucket
Step4. Create a Role in Identity and Access Management
Step5. Create EMR Cluster
Step6. Advanced Settings
Step1. Create default vpc
VPC console Link!: https://console.aws.amazon.com/vpc
우선 기본 VPC를 생성해 주도록 한다.
VPC > VPC > 기본 VPC 생성
라우팅 테이블에 모든 서브넷을 연결한다.
Step2. Create Key pair & Security Group
다음 절차에 따라서 키페어를 하나 생성해 주도록 한다.
EC2 > 키 페어 > 키 페어 생성
이번 실습 같은 경우 퍼블릭으로 진행하기 때문에 보안그룹은 모든 트래픽을 허용해 주도록 한다.
https://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/emr-man-sec-groups.html
EC2 > 보안 그룹 > 보안 그룹 생성에 들어가 준다.
아래 사진과 같이 보안그룹을 하나 생성해 준다.
Step3. Create S3 Bucket
https://console.aws.amazon.com/s3에 접속하여 S3를 하나 생성해 주도록 한다.
Amazon S3 > 버킷 > 버킷 만들기에서 다음을 생성해 준다.
이후 해당 버킷에 input, data, output이라는 폴더를 하나씩 생성해 주어야 한다.
input 폴더에는 다음을 업로드한다.
data 폴더에는 다음을 업로드한다.
Step4. Create a Role in Identity and Access Management
https://console.aws.amazon.com/iam에 접속하여 EMR 관련 역할을 하나 생성해 주도록 한다.
IAM > 역할 > 역할 생성에 접속한다.
신뢰할 수 있는 엔터티에서 AWS서비스를 선택하고, EMR을 선택한다.
해당 EMR 역할 이름은 EMR_role로 설정한다.
혹시 모르니 다음과 같은 정책도 연결해 준다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::yourbucket",
"arn:aws:s3:::yourbucket/*"
]
}
]
}
Step5. Create EMR Cluster
이제 emr cluster를 생성해 주도록 한다.
https://console.aws.amazon.com/emr에 접속하여 emr 클러스터를 하나 생성해 주도록 한다.
name: emr-cluster
Application: PySpark
운영 체제: Amazon Linux 릴리스
프라이머리, 코어 등 전부 인스턴스 타입을 비용 절감을 위해 c4.large로 지정해 준다.
Step6. Advanced Settings
ssh를 통해 emr cluster에 접속해 준다.
vim 편집기를 열어 spark-etl.py를 작성한다.
import sys
from datetime import datetime
from pyspark.sql import SparkSession
from pyspark.sql.functions import *
if __name__ == "__main__":
print(len(sys.argv))
if (len(sys.argv) != 3):
print("Usage: spark-etl [input-folder] [output-folder]")
sys.exit(0)
spark = SparkSession\
.builder\
.appName("SparkETL")\
.getOrCreate()
nyTaxi = spark.read.option("inferSchema", "true").option("header", "true").csv(sys.argv[1])
updatedNYTaxi = nyTaxi.withColumn("current_date", lit(datetime.now()))
updatedNYTaxi.printSchema()
print(updatedNYTaxi.show())
print("Total number of records: " + str(updatedNYTaxi.count()))
updatedNYTaxi.write.parquet(sys.argv[2])
이후 parquet 형식으로 데이터를 작성해 주도록 한다.
spark-submit spark-etl.py s3://<YOUR-BUCKET>/input/ s3://<YOUR-BUCKET>/output
몇 분 정도 기다리고, output 폴더를 확인하면 parquet 형식으로 변환된 것을 확인할 수 있다.
'AWS > data' 카테고리의 다른 글
sqs + cloudwatch로 안전하게 인스턴스 관리하기 (0) | 2023.01.09 |
---|---|
AWS cloudwatch-agent로 로깅하기 (0) | 2023.01.08 |
csv data athena 쿼리 (0) | 2023.01.07 |
kinesis data analyfice flink 실습 (0) | 2022.10.24 |