5. Services
EMR HDFS s3
Hadoop/Hive/pi
g/...
spark이나 presto로 변환
Spark Job : spark on kubernetes
Server : spark server는 대체할 방법을 찾지못함
Presto prestodb, trino, starburst 등에 kubernetes 배포가 잘 나와있음
Zeppelin spark server가 필요한 경우는 EMR 사용
Glue/DMS glue/DMS는 서비스를 빠르게 만들고 안정적으로 운영하기에는 여전히
좋은 서비스 이지만, 성능/비용/데이터변환에 대한 다양한 요구가 있다고
한다면 ETL image를 만들어서 실행하는것도 좋은 선택
Data Platform services on AWS 에 대한 재고
6. Kubernetes
장점(Why)
- 서비스 안정성/container관리
- nodegroup 설정으로 서버관리 용이
- Fast container deployment(ec2 create, container실행등의 과정)
- Helm이나 Vendor에서 제공하는 yaml 파일을 이용하면 새로운 제품의 설치,
POC, Test이 용이
추가 Resources
- EMR 대신 Kubernetes를 운영필요
- Kubernetes 운영 R&R
12. Architecture of Spark-on-Kubernetes
- spark driver, executor 가 pod
형태로 실행
- EMR대비 장점
- 기존DAG별로 EMR을 사용했
을때와 비교해서 emr 시작시간
절약
- 동시 여러 task를 완전하게 독립
적으로 실행(emr에서 여러개
task가 실행시 서로 영향받는거
고려할필요x)
- airflow등 job scheduler에서
EMR실행할 필요없이 task 단독
으로 실행가능
13. - spark-submit
- master를 kubernetes 로
- spark on k8s operator
- yaml 제출 형태로 spark 실행
- https://github.com/GoogleCloudPlatform/spark-on-k8s-operator/blob/master/docs/user-
guide.md
- Image build
- airflow operator
- 기존 EMR submit operator대체
- https://github.com/kubernetes-client/python
- k8s
- network 비용발생 문제로 subnetAZ는 하나만
- r5.2xlarge 이상(cpu 5core지정을 위한)
Spark
15. Spark default
./bin/spark-submit --master k8s://https://<k8s-apiserver-host>:<k8s-apiserver-port>
--deploy-mode cluster --name spark-pi
--class org.apache.spark.examples.SparkPi
--conf spark.kubernetes.container.image=<spark-image>
local:///path/to/examples.jar
Spark on k8s operator
- apiVersion: "sparkoperator.k8s.io/v1beta1"
kind: SparkApplication
Resource Conf
The cpu limits are set by spark.kubernetes.{driver,executor}.limit.cores.
The cpu is set by spark.{driver,executor}.cores.
The memory request and limit are set by summing the values of spark.{driver,executor}.memory and
spark.{driver,executor}.memoryOverhead.
Spark kubernetes - 실행
16. - ETL image개발
- source/target 관련한 library 가 편리하고 다양함
- 데이터 변환/monitor 관련한 기능추가
- Data Extraction을 위해 Python 을 이용하고, Load는 spark을 이용해서 적재(hive metastore)
- airflow
- kubernetesPodOperator 를 통해 실행
- airflow를 통해 실행/모니터를 다른 Data Processing작업과 통합해서 관리
DMS/Glue
18. - Fargate
- w/ no wait
- resource 제한
- Serverless data processing 성능개선(Redshift spectrum)
- snowflake나 databricks
기대하는 AWS services
19. Kubernetes 운영
- Nodegroup monitor 를 통해 manual scheduling
- prometheus, grafana
- 안정적인 운영 필요시 ASG에 scheduled action 추가
- Nodegroup AMI 주기적인 upgrade
(https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-amis.html)
20. Data engineer role
- Service운영
- Image build/관리
- Kubernetes 관리
- Pod/Deployments
- Nodegroup
- Services
- SG
- AWS ASG
- AWS 관리