AWS EMR을 사용하면서 비용을 최적화하기 위해 필요한 다양한 관점의 방안을 검토하여 정리한 자료.
비용 최적화 대상은 zeppelin/jupyter notebook과 apache spark를 활용하는 서비스를 대상으로 하였으며, 해당 작업이 aws emr에서 어떻게 동작하는지 내부 구조을 파악하여 확인함.
- AWS EMR이란?
- AWS EMR의 과금 방식은?
- 어떻게 비용을 최적화 할 것인가?
- 최적의 EMR 클러스터 구성 방안
- 가성비 높은 Instance 선정 방안
- Apache Spark 성능 개선 방안
가장 중요한 것은 실행할 job의 자원사용량/성능을 모니터링하고, 이에 맞게 자원을 최적화하는 것이 필요함.
EMR 플랫폼 기반의 Spark 워크로드 실행 최적화 방안 - 정세웅, AWS 솔루션즈 아키텍트:: AWS Summit Online Ko...Amazon Web Services Korea
발표영상 다시보기: https://youtu.be/hPvBst9TPlI
S3 기반의 데이터레이크에서 대량의 데이터 변환과 처리에 사용될 수 있는 가장 대표적인 솔루션이 Apache Spark 입니다. EMR 플랫폼 환경에서 쉽게 적용 가능한 Apache Spark의 성능 향상 팁을 소개합니다. 또한 데이터의 레코드 레벨 업데이트, 리소스 확장, 권한 관리 및 모니터링과 같은 다양한 데이터 워크로드 관리 최적화 방안을 함께 살펴봅니다.
AWS Glue는 고객이 분석을 위해 손쉽게 데이터를 준비하고 로드할 수 있게 지원하는 완전관리형 ETL(추출, 변환 및 로드) 서비스입니다. AWS 관리 콘솔에서 클릭 몇 번으로 ETL 작업을 생성하고 실행할 수 있습니다. 빅데이터 분석 시 다양한 데이터 소스에 대한 전처리 작업을 할 때, 별도의 데이터 처리용 서버나 인프라를 관리할 필요가 없습니다. 본 세션에서는 지난 5월 서울 리전에 출시한 Glue 서비스에 대한 자세한 소개와 함께 다양한 활용 팁을 데모와 함께 소개해 드립니다.
Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )SANG WON PARK
몇년 전부터 Data Architecture의 변화가 빠르게 진행되고 있고,
그 중 Cloud DW는 기존 Data Lake(Hadoop 기반)의 한계(성능, 비용, 운영 등)에 대한 대안으로 주목받으며,
많은 기업들이 이미 도입했거나, 도입을 검토하고 있다.
본 자료는 이러한 Cloud DW에 대해서 개념적으로 이해하고,
시장에 존재하는 다양한 Cloud DW 중에서 기업의 환경에 맞는 제품이 어떤 것인지 성능/비용 관점으로 비교했다.
- 왜기업들은 CloudDW에주목하는가?
- 시장에는어떤 제품들이 있는가?
- 우리Biz환경에서는 어떤 제품을 도입해야 하는가?
- CloudDW솔루션의 성능은?
- 기존DataLake(EMR)대비 성능은?
- 유사CloudDW(snowflake vs redshift) 대비성능은?
앞으로도 Data를 둘러싼 시장은 Cloud DW를 기반으로 ELT, Mata Mesh, Reverse ETL등 새로운 생테계가 급속하게 발전할 것이고,
이를 위한 데이터 엔지니어/데이터 아키텍트 관점의 기술적 검토와 고민이 필요할 것 같다.
https://blog.naver.com/freepsw/222654809552
Cloud DW technology trends and considerations for enterprises to apply snowflakeSANG WON PARK
올해 처음 오프라인으로 진행된 "한국 데이터 엔니지어 모임"에서 발표한 cloud dw와 snowflake라는 주제로 발표한 내용을 정리하여 공유함. (2022.07)
[ 발표 주제 ]
Cloud DW 기술 트렌드와 Snowflake 적용
- Modern Data Stack에서 Cloud DW의 역할
- 기존 Data Lake + DW와 무엇이 다른가?
- Data Engineer 관점에서 어떻게 사용하면 좋을까? (기능/성능/비용 측면의 장점/단점)
[ 주요 내용 ]
- 최근 많은 Data Engineer가 기존 기술 스택(Hadoop, Spark, DW 등)의 기술적/운영적 한계를 극복하기 위한 고민중.
- 특히 Cloud의 장점과 운영 및 성능을 고려한 Cloud DW(AWS Redshift, GCP BigQuery, DataBricks, Snowflake)를 고려
- 이 중 Snowflake를 실제 프로젝트에 적용한 경험과 기술적인 특징/장점/단점을 공유하고자 함.
작년부터 정부의 데이터 정책 변화와 Cloud 기반의 기술 변화 가속화로 기업의 데이터 환경에도 많은 변화가 발생하고 있고, 기업들은 이에 적응하기 위한 다양한 시도를 하고 있다.
그 중심에 cloud dw (또는 Lake house)가 위치하고 있으며, 이를 기반으로 통합 데이터 플랫폼으로의 아키텍처로 변화하고 있다. 하지만, 아직까지 기존 DW 제품과 주요 CSP(AWS, GCP, Azure)의 제품군을 다양하게 시도하고 있으나, 기대와 다르게 생각보나 낮은 성능 또는 비싼 사용료, 운영의 복잡성으로 인한 많은 시행착오를 거치고 있다.
이 상황에서 작년에 처음 검토한 snowflake의 다양한 기능들이 기업들의 고민과 문제를 상당부분 손쉽게 해결할 수 있다는 것을 확인할 수 있었고, 이를 이용하여 실제 많은 기업들에게 적용하기 위한 POC를 수행하거나, 실제 적용하는 프로젝트를 수행하게 되었다.
본 발표 내용은 이러한 경험을 기반으로 기업(그리고 실제 업무를 수행할 Data Engineer) 관점에서 snowflake가 어떻게 문제를 해결할 수 있는지 cloud dw를 도입/활용/확장 하는 단계별로 문제와 해결 방안을 중심으로 설명하였다.
https://blog.naver.com/freepsw?Redirect=Update&logNo=222815591918
기업들은 데이터로부터 insight를 얻기 위해서 부단한 노력을 하고 있습니다. 이를 위해 조직의 데이터를 한 곳에 모아서 보관하는 Data Lake의 구축은 데이터 분석을 위한 중심으로 자리잡고 있습니다. 본 세션에서는 AWS에서 S3를 활용하여 민첩하고 비용효율적인 Data Lake를 구축하는 방법을 소개합니다. 또한 이를 기반으로 AWS의 다양한 데이터 분석 서비스와 연동하는 법을 살펴봅니다.
대상 :
빅 데이터 및 데이터 분석 담당자, AWS 기반 데이터 분석에 관심 있는 모든 분
발표자 :
문종민 솔루션즈 아키텍트, AWS
EMR 플랫폼 기반의 Spark 워크로드 실행 최적화 방안 - 정세웅, AWS 솔루션즈 아키텍트:: AWS Summit Online Ko...Amazon Web Services Korea
발표영상 다시보기: https://youtu.be/hPvBst9TPlI
S3 기반의 데이터레이크에서 대량의 데이터 변환과 처리에 사용될 수 있는 가장 대표적인 솔루션이 Apache Spark 입니다. EMR 플랫폼 환경에서 쉽게 적용 가능한 Apache Spark의 성능 향상 팁을 소개합니다. 또한 데이터의 레코드 레벨 업데이트, 리소스 확장, 권한 관리 및 모니터링과 같은 다양한 데이터 워크로드 관리 최적화 방안을 함께 살펴봅니다.
AWS Glue는 고객이 분석을 위해 손쉽게 데이터를 준비하고 로드할 수 있게 지원하는 완전관리형 ETL(추출, 변환 및 로드) 서비스입니다. AWS 관리 콘솔에서 클릭 몇 번으로 ETL 작업을 생성하고 실행할 수 있습니다. 빅데이터 분석 시 다양한 데이터 소스에 대한 전처리 작업을 할 때, 별도의 데이터 처리용 서버나 인프라를 관리할 필요가 없습니다. 본 세션에서는 지난 5월 서울 리전에 출시한 Glue 서비스에 대한 자세한 소개와 함께 다양한 활용 팁을 데모와 함께 소개해 드립니다.
Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )SANG WON PARK
몇년 전부터 Data Architecture의 변화가 빠르게 진행되고 있고,
그 중 Cloud DW는 기존 Data Lake(Hadoop 기반)의 한계(성능, 비용, 운영 등)에 대한 대안으로 주목받으며,
많은 기업들이 이미 도입했거나, 도입을 검토하고 있다.
본 자료는 이러한 Cloud DW에 대해서 개념적으로 이해하고,
시장에 존재하는 다양한 Cloud DW 중에서 기업의 환경에 맞는 제품이 어떤 것인지 성능/비용 관점으로 비교했다.
- 왜기업들은 CloudDW에주목하는가?
- 시장에는어떤 제품들이 있는가?
- 우리Biz환경에서는 어떤 제품을 도입해야 하는가?
- CloudDW솔루션의 성능은?
- 기존DataLake(EMR)대비 성능은?
- 유사CloudDW(snowflake vs redshift) 대비성능은?
앞으로도 Data를 둘러싼 시장은 Cloud DW를 기반으로 ELT, Mata Mesh, Reverse ETL등 새로운 생테계가 급속하게 발전할 것이고,
이를 위한 데이터 엔지니어/데이터 아키텍트 관점의 기술적 검토와 고민이 필요할 것 같다.
https://blog.naver.com/freepsw/222654809552
Cloud DW technology trends and considerations for enterprises to apply snowflakeSANG WON PARK
올해 처음 오프라인으로 진행된 "한국 데이터 엔니지어 모임"에서 발표한 cloud dw와 snowflake라는 주제로 발표한 내용을 정리하여 공유함. (2022.07)
[ 발표 주제 ]
Cloud DW 기술 트렌드와 Snowflake 적용
- Modern Data Stack에서 Cloud DW의 역할
- 기존 Data Lake + DW와 무엇이 다른가?
- Data Engineer 관점에서 어떻게 사용하면 좋을까? (기능/성능/비용 측면의 장점/단점)
[ 주요 내용 ]
- 최근 많은 Data Engineer가 기존 기술 스택(Hadoop, Spark, DW 등)의 기술적/운영적 한계를 극복하기 위한 고민중.
- 특히 Cloud의 장점과 운영 및 성능을 고려한 Cloud DW(AWS Redshift, GCP BigQuery, DataBricks, Snowflake)를 고려
- 이 중 Snowflake를 실제 프로젝트에 적용한 경험과 기술적인 특징/장점/단점을 공유하고자 함.
작년부터 정부의 데이터 정책 변화와 Cloud 기반의 기술 변화 가속화로 기업의 데이터 환경에도 많은 변화가 발생하고 있고, 기업들은 이에 적응하기 위한 다양한 시도를 하고 있다.
그 중심에 cloud dw (또는 Lake house)가 위치하고 있으며, 이를 기반으로 통합 데이터 플랫폼으로의 아키텍처로 변화하고 있다. 하지만, 아직까지 기존 DW 제품과 주요 CSP(AWS, GCP, Azure)의 제품군을 다양하게 시도하고 있으나, 기대와 다르게 생각보나 낮은 성능 또는 비싼 사용료, 운영의 복잡성으로 인한 많은 시행착오를 거치고 있다.
이 상황에서 작년에 처음 검토한 snowflake의 다양한 기능들이 기업들의 고민과 문제를 상당부분 손쉽게 해결할 수 있다는 것을 확인할 수 있었고, 이를 이용하여 실제 많은 기업들에게 적용하기 위한 POC를 수행하거나, 실제 적용하는 프로젝트를 수행하게 되었다.
본 발표 내용은 이러한 경험을 기반으로 기업(그리고 실제 업무를 수행할 Data Engineer) 관점에서 snowflake가 어떻게 문제를 해결할 수 있는지 cloud dw를 도입/활용/확장 하는 단계별로 문제와 해결 방안을 중심으로 설명하였다.
https://blog.naver.com/freepsw?Redirect=Update&logNo=222815591918
기업들은 데이터로부터 insight를 얻기 위해서 부단한 노력을 하고 있습니다. 이를 위해 조직의 데이터를 한 곳에 모아서 보관하는 Data Lake의 구축은 데이터 분석을 위한 중심으로 자리잡고 있습니다. 본 세션에서는 AWS에서 S3를 활용하여 민첩하고 비용효율적인 Data Lake를 구축하는 방법을 소개합니다. 또한 이를 기반으로 AWS의 다양한 데이터 분석 서비스와 연동하는 법을 살펴봅니다.
대상 :
빅 데이터 및 데이터 분석 담당자, AWS 기반 데이터 분석에 관심 있는 모든 분
발표자 :
문종민 솔루션즈 아키텍트, AWS
OpenSearch는 배포형 오픈 소스 검색과 분석 제품군으로 실시간 애플리케이션 모니터링, 로그 분석 및 웹 사이트 검색과 같이 다양한 사용 사례에 사용됩니다. OpenSearch는 데이터 탐색을 쉽게 도와주는 통합 시각화 도구 OpenSearch와 함께 뛰어난 확장성을 지닌 시스템을 제공하여 대량 데이터 볼륨에 빠르게 액세스 및 응답합니다. 이 세션에서는 실제 동작 구조에 대한 설명을 바탕으로 최적화를 하기 위한 방법과 운영상에 발생할 수 있는 이슈에 대해서 알아봅니다.
데이터 분석가를 위한 신규 분석 서비스 - 김기영, AWS 분석 솔루션즈 아키텍트 / 변규현, 당근마켓 소프트웨어 엔지니어 :: AWS r...Amazon Web Services Korea
AWS re:Invent에서는 다양한 고객들의 요구에 맞추어 새로운 분석 및 서버리스 서비스가 대거 출시되었습니다. 본 강연에서는 새롭게 출시된 핵심 분석 기능들과 함께, 누구나 손쉽게 사용할 수 있는 AWS의 분석 서버리스와 On-demand 기능들에 대한 심층적인 정보를 확인하실 수 있습니다.
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...Amazon Web Services Korea
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study
이 세션에서는 데브시스터즈의 Case Study를 통하여 Data Lake를 만들고 사용하는데 있어 요구 되는 사항들에 대해 공유합니다. 여러 목적에 맞는 데이터를 전달하기 위해 AWS 를 활용하여 Data Lake 를 구축하게된 계기와 실제 구축 작업을 하면서 경험하게 된 것들에 대해 말씀드리고자 합니다. 기존 인프라 구조 대비 효율성 및 비용적 측면을 소개해드리고, 빅데이터를 이용한 부서별 데이터 세분화를 진행할 때 어떠한 Architecture가 사용되었는지 소개드리고자 합니다.
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019Amazon Web Services Korea
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용
김태현 솔루션즈 아키텍트, AWS
AWS에서는 Big Data 분석 및 처리를 위해 분석 목적에 맞는 다양한 Big Data Framework 서비스를 지원합니다. 이 세션에서는 시간이 지날수록 증가하는 데이터의 분석 및 처리를 위해 사용되는 AWS Glue와 Amazon EMR 같은 AWS Big Data Framework의 내부구조를 살펴보고 머신러닝을 포함한 다양한 분석 및 ETL을 위해 효율적으로 사용할 수 있는 방법들을 소개합니다.
Amazon SageMaker는 머신러닝 프로젝트를 위한 통합 플랫폼입니다. SageMaker의 기능 중 Amazon SageMaker Studio는 머신러닝 통합 개발환경을 제공하여, 데이터를 준비에서부터 모델을 빌드, 교육 및 배포하는 데 필요한 모든 단계를 수행할 수 있습니다. Amazon EMR은 Apache Spark, Apache Hive 및 Presto와 같은 오픈 소스 분석 프레임워크를 사용하여 대규모 분산 데이터 처리 작업, 대화형 SQL 쿼리 및 ML 애플리케이션을 실행하기 위한 빅 데이터 플랫폼입니다. 이 세션에서는 데이터 과학자와 ML 엔지니어가 ML 워크플로우에서 분산 빅 데이터 프레임워크를 쉽게 사용할 수 있도록 상호 서비스 간의 통합에 대하여 데모를 통해 알아봅니다.
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Yongho Ha
요즘 Hadoop 보다 더 뜨고 있는 Spark.
그 Spark의 핵심을 이해하기 위해서는 핵심 자료구조인 Resilient Distributed Datasets (RDD)를 이해하는 것이 필요합니다.
RDD가 어떻게 동작하는지, 원 논문을 리뷰하며 살펴보도록 합시다.
http://www.cs.berkeley.edu/~matei/papers/2012/sigmod_shark_demo.pdf
대용량 데이터레이크 마이그레이션 사례 공유 [카카오게임즈 - 레벨 200] - 조은희, 팀장, 카카오게임즈 ::: Games on AWS ...Amazon Web Services Korea
기존 온프레미스 환경에서는 비즈니스 성장에 따른 유연한 확장에 어려움 있어 AWS를 이용하여 더욱 탄력적인 환경을 구축하는 프로젝트를 수행하였습니다. 이 세션을 통해 카카오게임즈가 AWS와 함께 수행한 데이터레이크 마이그레이션의 여정과, 그 과정에서 Amazon S3, EMR, Athena, Redshift 등의 다양한 기술 요소들을 활용한 경험과 팁을 전달해 드립니다.
오토스케일링(Auto-scaling)은 AWS 클라우드를 통해 고확장성 서비스와 아키텍처를 구성하는 데 필요한 가장 중요한 요소 중 하나입니다. 이 강연에서는 효과적인 클라우드 인프라 구축을 위해 오토 스케일링을 활용하는 다양한 방법에 대해 자세히 소개해 드립니다.
오토 스케일링 그룹의 구성과 확장 계획에 따른 설정 방법, 오토 스케일링 라이프 사이클과 CloudWatch 및 알림을 이용한 관리 방법, 각종 오토스케일링 모범사례 등을 알아보실 수 있습니다.
아름답고 유연한 데이터 파이프라인 구축을 위한 Amazon Managed Workflow for Apache Airflow - 유다니엘 A...Amazon Web Services Korea
Apache Airflow는 복잡한 데이터 처리 파이프라인의 전체적인 프로세스를 자동화하기 위한 워크플로우 관리 플랫폼이며 오픈 소스 커뮤니티에서 활발하게 기여하고 있는 top-level 프로젝트 입니다. AWS는 최근에 Amazon Managed Workflow for Apache Airflow (MWAA) 서비스를 정식 출시하였고, 본 강연에서는 Apache Airflow 및 MWAA를 소개하고 어떻게 AWS 서비스와 연동하여 데이터 처리 워크플로우를 구축할 수 있는지 데모를 통해 알려 드립니다.
OpenSearch는 배포형 오픈 소스 검색과 분석 제품군으로 실시간 애플리케이션 모니터링, 로그 분석 및 웹 사이트 검색과 같이 다양한 사용 사례에 사용됩니다. OpenSearch는 데이터 탐색을 쉽게 도와주는 통합 시각화 도구 OpenSearch와 함께 뛰어난 확장성을 지닌 시스템을 제공하여 대량 데이터 볼륨에 빠르게 액세스 및 응답합니다. 이 세션에서는 실제 동작 구조에 대한 설명을 바탕으로 최적화를 하기 위한 방법과 운영상에 발생할 수 있는 이슈에 대해서 알아봅니다.
데이터 분석가를 위한 신규 분석 서비스 - 김기영, AWS 분석 솔루션즈 아키텍트 / 변규현, 당근마켓 소프트웨어 엔지니어 :: AWS r...Amazon Web Services Korea
AWS re:Invent에서는 다양한 고객들의 요구에 맞추어 새로운 분석 및 서버리스 서비스가 대거 출시되었습니다. 본 강연에서는 새롭게 출시된 핵심 분석 기능들과 함께, 누구나 손쉽게 사용할 수 있는 AWS의 분석 서버리스와 On-demand 기능들에 대한 심층적인 정보를 확인하실 수 있습니다.
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...Amazon Web Services Korea
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study
이 세션에서는 데브시스터즈의 Case Study를 통하여 Data Lake를 만들고 사용하는데 있어 요구 되는 사항들에 대해 공유합니다. 여러 목적에 맞는 데이터를 전달하기 위해 AWS 를 활용하여 Data Lake 를 구축하게된 계기와 실제 구축 작업을 하면서 경험하게 된 것들에 대해 말씀드리고자 합니다. 기존 인프라 구조 대비 효율성 및 비용적 측면을 소개해드리고, 빅데이터를 이용한 부서별 데이터 세분화를 진행할 때 어떠한 Architecture가 사용되었는지 소개드리고자 합니다.
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019Amazon Web Services Korea
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용
김태현 솔루션즈 아키텍트, AWS
AWS에서는 Big Data 분석 및 처리를 위해 분석 목적에 맞는 다양한 Big Data Framework 서비스를 지원합니다. 이 세션에서는 시간이 지날수록 증가하는 데이터의 분석 및 처리를 위해 사용되는 AWS Glue와 Amazon EMR 같은 AWS Big Data Framework의 내부구조를 살펴보고 머신러닝을 포함한 다양한 분석 및 ETL을 위해 효율적으로 사용할 수 있는 방법들을 소개합니다.
Amazon SageMaker는 머신러닝 프로젝트를 위한 통합 플랫폼입니다. SageMaker의 기능 중 Amazon SageMaker Studio는 머신러닝 통합 개발환경을 제공하여, 데이터를 준비에서부터 모델을 빌드, 교육 및 배포하는 데 필요한 모든 단계를 수행할 수 있습니다. Amazon EMR은 Apache Spark, Apache Hive 및 Presto와 같은 오픈 소스 분석 프레임워크를 사용하여 대규모 분산 데이터 처리 작업, 대화형 SQL 쿼리 및 ML 애플리케이션을 실행하기 위한 빅 데이터 플랫폼입니다. 이 세션에서는 데이터 과학자와 ML 엔지니어가 ML 워크플로우에서 분산 빅 데이터 프레임워크를 쉽게 사용할 수 있도록 상호 서비스 간의 통합에 대하여 데모를 통해 알아봅니다.
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Yongho Ha
요즘 Hadoop 보다 더 뜨고 있는 Spark.
그 Spark의 핵심을 이해하기 위해서는 핵심 자료구조인 Resilient Distributed Datasets (RDD)를 이해하는 것이 필요합니다.
RDD가 어떻게 동작하는지, 원 논문을 리뷰하며 살펴보도록 합시다.
http://www.cs.berkeley.edu/~matei/papers/2012/sigmod_shark_demo.pdf
대용량 데이터레이크 마이그레이션 사례 공유 [카카오게임즈 - 레벨 200] - 조은희, 팀장, 카카오게임즈 ::: Games on AWS ...Amazon Web Services Korea
기존 온프레미스 환경에서는 비즈니스 성장에 따른 유연한 확장에 어려움 있어 AWS를 이용하여 더욱 탄력적인 환경을 구축하는 프로젝트를 수행하였습니다. 이 세션을 통해 카카오게임즈가 AWS와 함께 수행한 데이터레이크 마이그레이션의 여정과, 그 과정에서 Amazon S3, EMR, Athena, Redshift 등의 다양한 기술 요소들을 활용한 경험과 팁을 전달해 드립니다.
오토스케일링(Auto-scaling)은 AWS 클라우드를 통해 고확장성 서비스와 아키텍처를 구성하는 데 필요한 가장 중요한 요소 중 하나입니다. 이 강연에서는 효과적인 클라우드 인프라 구축을 위해 오토 스케일링을 활용하는 다양한 방법에 대해 자세히 소개해 드립니다.
오토 스케일링 그룹의 구성과 확장 계획에 따른 설정 방법, 오토 스케일링 라이프 사이클과 CloudWatch 및 알림을 이용한 관리 방법, 각종 오토스케일링 모범사례 등을 알아보실 수 있습니다.
아름답고 유연한 데이터 파이프라인 구축을 위한 Amazon Managed Workflow for Apache Airflow - 유다니엘 A...Amazon Web Services Korea
Apache Airflow는 복잡한 데이터 처리 파이프라인의 전체적인 프로세스를 자동화하기 위한 워크플로우 관리 플랫폼이며 오픈 소스 커뮤니티에서 활발하게 기여하고 있는 top-level 프로젝트 입니다. AWS는 최근에 Amazon Managed Workflow for Apache Airflow (MWAA) 서비스를 정식 출시하였고, 본 강연에서는 Apache Airflow 및 MWAA를 소개하고 어떻게 AWS 서비스와 연동하여 데이터 처리 워크플로우를 구축할 수 있는지 데모를 통해 알려 드립니다.
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)Hyojun Jeon
NDC18에서 발표하였습니다. 현재 보고 계신 슬라이드는 2부 입니다.(총 2부)
- 1부 링크: https://goo.gl/3v4DAa
- 2부 링크: https://goo.gl/wpoZpY
(SlideShare에 슬라이드 300장 제한으로 2부로 나누어 올렸습니다. 불편하시더라도 양해 부탁드립니다.)
Apache kafka performance(throughput) - without data loss and guaranteeing dat...SANG WON PARK
Apache Kafak의 성능이 특정환경(데이터 유실일 발생하지 않고, 데이터 전송순서를 반드시 보장)에서 어느정도 제공하는지 확인하기 위한 테스트 결과 공유
데이터 전송순서를 보장하기 위해서는 Apache Kafka cluster로 partition을 분산할 수 없게되므로, 성능향상을 위한 장점을 사용하지 못하게 된다.
이번 테스트에서는 Apache Kafka의 단위 성능, 즉 partition 1개에 대한 성능만을 측정하게 된다.
향후, partition을 증가할 경우 본 테스트의 1개 partition 단위 성능을 기준으로 예측이 가능할 것 같다.
Spark machine learning & deep learninghoondong kim
Spark Machine Learning and Deep Learning Deep Dive.
Scenarios that use Spark hybrid with other data analytics tools (MS R on Spark, Tensorflow(keras) with Spark, Scikit-learn with Spark, etc)
데이터를 둘러싼 정책과, 기업과 기술의 진화는 빠르게 변화하고 있으며, 모든 지향점은 기업들이 다양한 데이터를 활용하여 경쟁력을 확보하고 이를 통해 AI기반의 혁신을 하고자 하는데 있다.
이 과정에서 수 많은 기업의 업무 전무가, 데이터 사이언티스트 등이 다양한 기업의 혁신을 지원할 수 있는 AI 모델을 검증하는 과정을 거치게 됩니다.
하지만, 이렇게 수 많은 AI 모델이 실제 비즈니스에 적용되기 위해서는 인프라, 및 서비스 관점의 기술이 반드시 필요하게 됩니다.
MLOps는 기업에 필요한 혁신적인 아이디어(AI Model)을 적시에 비즈니스 환경에 적용할 수 있도록 지원하는 기술 및 트렌드 입니다.
주요 내용은
- 데이터를 둘러싼 환경의 변화
- 기업의 AI Model 적용시 마주하는 현실
- MLOps가 해결 가능한 문제들
- MLOps의 영역별 주요 기술들
- MLOps 도입 시 기업의 AI 환경은 어떻게 변할까?
- AI 모델을 비즈니스 환경에 적용(배포)한다는 것은?
2021년 12월 코리아 데이터 비즈니스 트렌드(데이터산업진흥원 주최)에서 발표한 내용을 공유 가능한 부분만 정리함.
발표 영상 참고 : https://www.youtube.com/watch?v=lL-QtEzJ3WY
The Data tech for AI based innovation(기업의 AI기반 혁신을 지원하는 데이터 기술)SANG WON PARK
2020년 데이터산업진흥원에서 발표한 자료를 일부 편집하여 공유함.
2020년 당시에 Data Platform에서 AI lifecycle를 효율적으로 지원하는 platform을 적극적으로 검토 및 설계하는 작업을 진행하였고, 이 때 검토 및 활용했던 기술들을 기업 관점에서 필요한 내용을 기준으로 정리하였다.
기업들은 전통적인 방식으로의 혁신에 한계를 체감하고 있으며, 최근 AI기반으로 성공적인 혁신(비즈니스 강화, 새로운 비즈니스로 전환 등)에 성공한 기업들을 빠르게 벤치마크 하고 있다.
이렇게 AI 기반으로 기업을 혁신하는 것은 고도화된 AI 모델의 도입으로 해결되지 않으며, 수많은 기술들의 최적화된 조합 및 활용이 필요하다.
이 자료에서는 그 중 AI모델에 핵심적인 데이터를 적시에, 고품질의 형태로, 빠르고 안정적으로 제공할 수 기술 트렌드를 소개한다.
전체 내용은
- AI기반 혁신이란?
- 혁신을 위해서는 어떤 점이 어려운가?
- 고품질 데이터 확보 기술
- 빠르게 AI 모델을 학습하는 기술
- 적시에 다양한 AI 모델을 비즈니스에 적용하는 기술
2020년 기준으로 작성된 자료라, 일부 기술 트렌드가 반영되지 않을 수 있으나 아직까지 많은 기업들이 고민하고 해결하고자 하는 영역이라 참고할 수 있을 것 같다.
이 내용을 기준으로 발표한 영상 링크 : https://www.youtube.com/watch?v=OVm4-uk59ZA
Understanding of Apache kafka metrics for monitoring SANG WON PARK
2019 kafka conference seould에서 발표한 "Apache Kafka 모니터링을 위한 Metrics 이해" 슬라이드 자료
기존 2018년 자료에서 모니터링 관점에서 중요한 metrcis를 중심으로 정리하였고, 2019년 기준으로 추가/변경된 metrics를 반영하였다.
주용 내용은
- 업무에 최적화된 apache kafka 모니터링을 하려면?
- 어떤 정보를 모니터링 해야 할까?
- 적시성 관점의 모니터링 지표 (TotalTimeMs에 대한 세부 구조 이해)
- 안정성 관점의 모니터링 지표 (데이터 유실이 없이 중단없는 서비스)
- 언제 apache kafka 클러스터를 확장해야 할까? (어떤 지표를 봐야 할까?)
위 모든 지표는 producer/broker/consumer 3가지 측면에서 검토하였다.
컨퍼런스 영상 링크 : https://www.youtube.com/watch?v=p2RGsTOCHAg
Apache kafka performance(latency)_benchmark_v0.3SANG WON PARK
Apache Kafka를 이용하여 이미지 데이터를 얼마나 빠르게(with low latency) 전달 가능한지 성능 테스트.
최종 목적은 AI(ML/DL) 모델의 입력으로 대량의 실시간 영상/이미지 데이터를 전달하는 메세지 큐로 사용하기 위하여, Drone/제조공정 등의 장비에서 전송된 이미지를 얼마나 빨리 AI Model로 전달 할 수 있는지 확인하기 위함.
그래서 Kafka에서 이미지를 전송하는 간단한 테스트를 진행하였고,
이 과정에서 latency를 얼마나 줄여주는지를 확인해 보았다.(HTTP 프로토콜/Socket과 비교하여)
[현재 까지 결론]
- Apache Kafka는 대량의 요청 처리를 위한 throughtput에 최적화 된 솔루션임.
- 현재는 producer의 몇가지 옵션만 조정하여 테스트한 결과이므로,
- 잠정적인 결과이지만, kafka의 latency를 향상을 위해서는 많은 시도가 필요할 것 같음.
- 즉, 단일 요청의 latency는 확실히 느리지만,
- 대량의 처리를 기준으로 평균 latency를 비교하면 평균적인 latency는 많이 낮아짐.
Test Code : https://github.com/freepsw/kafka-latency-test
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARK
Apache Kafak의 빅데이터 아키텍처에서 역할이 점차 커지고, 중요한 비중을 차지하게 되면서, 성능에 대한 고민도 늘어나고 있다.
다양한 프로젝트를 진행하면서 Apache Kafka를 모니터링 하기 위해 필요한 Metrics들을 이해하고, 이를 최적화 하기 위한 Configruation 설정을 정리해 보았다.
[Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안]
Apache Kafka 성능 모니터링에 필요한 metrics에 대해 이해하고, 4가지 관점(처리량, 지연, Durability, 가용성)에서 성능을 최적화 하는 방안을 정리함. Kafka를 구성하는 3개 모듈(Producer, Broker, Consumer)별로 성능 최적화를 위한 …
[Apache Kafka 모니터링을 위한 Metrics 이해]
Apache Kafka의 상태를 모니터링 하기 위해서는 4개(System(OS), Producer, Broker, Consumer)에서 발생하는 metrics들을 살펴봐야 한다.
이번 글에서는 JVM에서 제공하는 JMX metrics를 중심으로 producer/broker/consumer의 지표를 정리하였다.
모든 지표를 정리하진 않았고, 내 관점에서 유의미한 지표들을 중심으로 이해한 내용임
[Apache Kafka 성능 Configuration 최적화]
성능목표를 4개로 구분(Throughtput, Latency, Durability, Avalibility)하고, 각 목표에 따라 어떤 Kafka configuration의 조정을 어떻게 해야하는지 정리하였다.
튜닝한 파라미터를 적용한 후, 성능테스트를 수행하면서 추출된 Metrics를 모니터링하여 현재 업무에 최적화 되도록 최적화를 수행하는 것이 필요하다.
xgboost를 이해하기 위해서 찾아보다가 내가 궁금한 내용을 따로 정리하였으나, 역시 구체적인 수식은 아직 모르겠다.
요즘 Kaggle에서 유명한 Xgboost가 뭘까?
Ensemble중 하나인 Boosting기법?
Ensemble 유형인 Bagging과 Boosting 차이는?
왜 Ensemble이 low bias, high variance 모델인가?
Bias 와 Variance 관계는?
Boosting 기법은 어떤게 있나?
Xgboost에서 사용하는 CART 알고리즘은?
Machine Learning Foundations (a case study approach) 강의 정리SANG WON PARK
실제 비즈니스에서 많이 활용되는 사례를 중심으로 어떻게 기존 데이터를 이용하여 알고리즘을 선택하고, 학습하여, 예측모델을 구축 하는지 jupyter notebook을 이용하여 실제 코드를 이용하여 실습할 수 있다.
강의 초반에 강조하는 것 처럼, 머신러닝 알고리즘은 나중에 자세히 설명하는 과정이 따로 있고, 이번 강의는 실제 어떻게 활용하는지에 완전히 초점이 맞추어져 있어서, 알고리즘은 아주 간략한 수준으로 설명해 준다. (좀 더 구체적인 내용은 심화과정이 따로 있음)
http://blog.naver.com/freepsw/221113685916 참고
https://github.com/freepsw/coursera/tree/master/ML_Foundations/A_Case_Study 코드 샘플
Coursera Machine Learning (by Andrew Ng)_강의정리SANG WON PARK
단순히 공식으로 설명하지 않고, 실제 코드 및 샘플데이터를 이용하여 수식의 결과가 어떻게 적용되는지 자세하게 설명하고 있다.
처음 week1 ~ week4 까지는 김성훈 교수님의 "모두를 위한 딥러닝"에서 한번 이해했던 내용이라 좀 쉽게 진행했고, 나머지는 기초가 부족한 상황이라 다른 자료를 꽤 많이 참고하면서 학습해야 했다.
여러 도서나 강의를 이용하여 머신러닝을 학습하려고 했었는데, 이 강의만큼 나에게 맞는것은 없었던거 같다. 특히 Octave code를 이용한 실습자료는 나중에도 언제든 활용가능할 것 같다.
Week1
Linear Regression with One Variable
Linear Algebra - review
Week2
Linear Regression with Multiple Variables
Octave[incomplete]
Week3
Logistic Regression
Regularization
Week4
Neural Networks - Representation
Week5
Neural Networks - Learning
Week6
Advice for applying machine learning techniques
Machine Learning System Design
Week7
Support Vector Machines
Week8
Unsupervised Learning(Clustering)
Dimensionality Reduction
Week9
Anomaly Detection
Recommender Systems
Week10
Large Scale Machine Learning
Week11
Application Example - Photo OCR
Coursera Machine Learning by Andrew NG 강의를 들으면서, 궁금했던 내용을 중심으로 정리.
내가 궁금했던건, 데이터를 분류하는 Decision boundary를 만들때...
- 왜 가중치(W)와 decision boundary가 직교해야 하는지?
- margin은 어떻게 계산하는지?
- margin은 어떻게 최대화 할 수 있는지?
- 실제로 margin을 최대화 하는 과정의 수식은 어떤지?
- 비선형 decision boundary를 찾기 위해서 어떻게 kernel을 이용하는지?...
http://blog.naver.com/freepsw/221032379891
코드로 이해하는 Back_propagation(cs231n)SANG WON PARK
여러 샘플들을 참고하다 보니, tensorflow를 사용하지 않는 경우에는 직접 gradient를 계산하여 back propagation을 하도록 구현한 코드가 많다. 내가 직접 구현할 필요는 없더라도, 좀 더 명확하게 이해할 필요는 있을 것 같아서 cn231n note에서 제공하는 코드와 설명을 정리.
http://blog.naver.com/freepsw/220928184473
http://cs231n.github.io/neural-networks-case-study/ 참고
데이터를 작게 생성하여, 직접 코드와 생성된 데이터를 확인하면서 좀 더 직관적으로 이해하는 과정으로 정리하다보니, 코드보다 설명이 더 많다... 아직도 명확하지는 않지만 나름대로 정리는 되었다.
모두를 위한 Deep Reinforcement Learning 강의를 요약정리
http://hunkim.github.io/ml/
실습에 사용된 코드
https://github.com/freepsw/tensorflow_examples/tree/master/20.RL_by_SungKim
1. AWS EMR 비용을 최적화 하려면?
(Apache Spark, Zeppelin/Jupyter notebook 서비스 대상)
2021.09
freepsw
2. 2
AWS EMR ( Elastic MapReduce) ?
빅데이터 프레임워크(hadoop, spark, hive 등)의 실행 및 운영을 쉽게 해 주는 관리형 서비스(사용량 기반)
Web UI에서 간단한 설정으로 Big Data Framework를
빠르게 구성 가능
EMR에서 지원하는
Big Data Framework
3. 3
기존 오픈소스 Apache Hadoop과 무엇이 다른가?
https://www.slideshare.net/AmazonWebServices/best-practices-for-managing-hadoop-framework-based-workloads-on-amazon-emr-aws-online-tech-talks
Apache Hadoop 구성 AWS EMR 구성
• 운영자가 직접 물리 서버(On-prem) 또는 클라우드 서버(EC2 등)
에 Apache Hadoop 환경을 구성
• 저장/관리할 데이터가 증가되면 서버를 증설해야 하는 구조.
• 즉, Computing과 Storage node가 결합됨
• 사용자가 쉽고 빠르게 Hadoop Cluster 구성 가능하며, Storage
와 Computing을 분리하여 구성 가능
사용량 기반으로 쉽게 Hadoop Cluster를 운영할 수 있으며, 필요한 리소스(Computing)만 추가하여 구성 가능
클러스터의 유연한 확장 가능
5. 5
그런데 실제 사용해 보면?
모든 선택은 사용자 직접
Cluster 사이즈 (Master, Core, Task)
EC2 Instance Type (100개 이상)
원하는 오픈소스 버전
성능이 너무 낮으면?
Cluster 개수 축소
EC2 Instance Type 변경 (낮은 사양)
EC2 계약 방식 변경 등…
비용이 너무 높으면?
Cluster 개수 증가
EC2 Instance Type 변경 (높은 사양)
상황에 따라서 기대보다 더 많은 비용이 청구!
대부분 성능향상을 위해
높은 비용의 서버를 많이 할당함
비용증가 성능 저하
6. AWS EMR의 과금 방식은?
전체 비용은 EMR 사용료 + EC2 Instance(Master, Core, Task)의 초당 사용료로 구성됨 (Region별로 다름)
EMR 사용료 산정 방식
• 가장 많은 비용은 클러스터를 구성하는 EC2 인스턴스가 차지
• EMR 비용은 클러스터 구성/관리 등의 운영 비용
사용 시간
AWS EMR 사용료 예시
• Region별, Instance 별로 EMR 요금이 부과됨. (약 20% 부과)
• 즉, Instance가 고 사양이며 노드 수가 많아지면 비용 증가
• EMR을 실제로 구성하는 것은 Master, Core, Task Node들이며,
• 이 Node(server)는 EC2 Instance로 실행
• 예를 들어 (Seoul Region, On-demand Instance인 경우)
• Master node 1대 : m5.xlarge (0.236$/h) + EMR(0.048$/h)
• Core node 3대 : r5.8xlarge(2.432$/h) + EMR(0.27$/h)
• 10시간 사용
• 전체 비용
• ( (0.236 + 0.048) + (2.432 + 0.27)*3대 ) * 10시간 = 83.9$
7. 7
비용을 최적화 할 AWS EMR 서비스는?
Data 분석가들이 가장 많이 사용하는 notebook환경(Jupyter, Zeppelin)과 분산처리 엔진인 Apache Spark
데이터 분석가는 AWS EMR을 어떻게 활용할까?
• 분석가는 Notebook UI에서 거의 모든 분석을 수행하며,
• 대용량 처리가 필요한 경우에만 Apache spark 작업을 실행
1. Notebook을 활용하여 python으로 데이터 분석
데이터 분석가
2. 대용량 데이터 분석은 spark cluster 활용
• Apache spark의 Cluster 성능에 따라 작업 시간에 영향
AWS EMR의 내부 동작 구조는?
• AWS EMR에서는 물리적으로 Master와 Core/Task 노드로 분리
되어 동작하며, 각 노드 별로 필요한 자원을 할당해야 한다.
Master node
- Notecook의 python 코드가 실행되는 서버
- Python(pandas 등)으로 처리할 데이터가 많다
면 cpu/mem 많이 확보
- Spark driver가 동작함 (client mode인 경우)
Core/Task node
- Pyspark 코드가 실행되는 서버
- 데이터가 분산되어 다수의 서버에서 실행
- 분산처리 성능을 향상하려면 Core/Task 노
드의 cpu/mem을 증가
- 노드의 수량도 조절 필요
데이터 분석가
Master
Node
Core/Task
Node
8. 8
최소의 서버 대수로
(Instance 비용 절감)
저가의 서버를 이용하여
(Instance 비용 절감)
빠르게 작업을 완료
(사용시간 단축)
모든 서버의 자원(cpu, memory 등)을
100% 활용할 수 있으려면?
적절한 EMR Cluster 사이즈는 어떻게?
어떤 EC2 Instance 유형을 선택해야 할까?
최적의 EC2 Instance는?
Apache Spark의 성능을 향상하려면?
어떻게 비용을 최적화 할 것인가?
최소의 서버 규모로, 저가의 서버를 이용하여, 빠르게 원하는 작업을 완료
10. 10
최적의 EMR Cluster를 구성하기 위한 고민들 …
최소의 Cluster size로 가능한 낮은 비용의 EC2 Instance를 이용하여 짧은 시간에 작업을 완료
EMR Cluster 구성은?
EC2 Instance 계약 방식은?
서비스 실패를 최소화하려면?
(Spot Instance 사용시)
• Node 유형별 적합한 서버 자원을 할당
• Master Node : Cluster 관리 용도 및 분석용 notebook(jupyter, zeppelin) 실행 용도
• Core/Task Node : Apache Spark에서 분산 처리에 필요한 용도
• EMR Cluster의 사이즈를 몇개로 구성해야 할까?
• 단기 작업 실행 용도 : 높은 성능으로 빠르게 처리 (다수의 고성능 노드 할당)
• 장기 클러스터 운영 용도 : 평균적인 성능으로 다수의 작업을 안정적으로 처리 (Scale out을 고려한 할당)
• 어떤 계약 방식을 사용할 것인가?
• 일부 장애를 감안한 Spot Instance : 가장 싼 가격이지만, 서버가 불시에 중지 될 수 있음(작업 실패 가능성)
• 미리 싼 가격으로 구매하는 Reserved Instance : 오랜 기간 동안 싼 가격(On-demand 대비 60%)에 사용
• 기본은 On-Demand : 필요시 바로 구매, 가장 비싼 가격
• 분석 업무의 목적에 따라 계약 방식 선택 필요
• 다만, Spot Instance를 사용하는 경우 서버 중지로 인한 대안 고려 (작업 재처리로 인한 비용 과도 발생)
• Spot Instance 사용시, Master node instance 회수로 인한 작업 실패를 방지할 것인가?
• Master Node가 회수되거나, Core Node(Driver 실행 중인)가 회수되는 경우 모든 작업이 실패
• 이로 인한 재 작업 시간/비용 소요
• 오래 실행되는 작업은 Master, Core Node를 On-Demand로 활용 검토
11. 11
AWS EMR Cluster에서 각 Node들은 어떤 역할을 할까?
EMR Cluster에서 각 Node의 역할
• 각 Node 별로 클러스터 관리 및 spark 실행에 필요한 프로세스를 관리
https://www.slideshare.net/JulienSIMON5/amazon-elastic-map-reduce-the-concepts https://medium.com/nerd-for-tech/aws-elastic-map-reduce-intro-55206fd47c85
EMR cluster 관리를 위한 Yarn과 Spark 실행에 필요한 프로세스 실행에 필요한 프로세스로 구성됨
Node 별 상세 설명
• Master Node
• EMR Cluster 전체 자원 관리 (Resource Manager)
• HDFS의 Name Node로 Core Node의 Data Node 관리
• Apache Spark의 Driver 실행 (Zeppelin/Jupyter의 경우)
• 노드 종료 시 EMR 전체 서비스 중지 (작업 실패)
• Core Node
• 현재 Node의 리소스 관리(Node Manger)
• EMR Cluster의 Application을 관리 (Application Master)
• HDFS의 Data Node로 데이터를 저장/관리하는 역할
• Apache Spark의 Driver 실행 (Application Master에서 관리)
• Apache Spark Executor 실행
• 노드 종료 시 Spark Driver 종료로 작업 실패 가능(HDFS에
check point로 복구 가능)
• Task Node
• 현재 Node의 리소스 관리(Node Manger)
• Apache Spark Executor 실행
• 노드 종료 시 Driver에서 다른 Node로 작업 재분배
Resource
Manager
Name Node
Node Manager
Spark Driver
Executor
YARN
HDFS/Spark
Application
Master
Spark
Executor
Data Node
Node Manager
Web UI
Spark Driver Livy server
• Core Node는 자체적으로 HDFS Data Node를 실행하여 분산 파일을
저장/조회 가능함.
• Task Node는 병렬 처리를 위한 용도로만 사용 (데이터 저장 없음)
12. 12
Master Node는 어떻게 선택해야 하나?
• 순수 python(pandas 등)을 이용하는 작업은 master node 자원을 사용
(Zeppelin, Hue, Jupyter 등)
• Memory 및 Disk I/O가 높은 인스턴스 유형 선택 (R5 Type)
• 나머지 core/task 노드의 자원 스펙은 최소화하여 비용 절감 (m5 Type)
용도별로 적합한 Master Node 자원을 선택
단일 Python 분석을 위한
Master Node Type
대용량 분석 작업용
Master Node Type
• 분산 데이터 처리 및 학습을 하는 경우 Master Node 자원 최소화
• 만약, Notebook환경(zeppelin, jupyter)에서 spark code 실행 시,
• Client mode인 경우에는 spark driver가 master node에서 실행 됨.
• 이때는 spark driver의 역할에 따라서 자원을 충분히 할당
• EMR Cluster 사이즈가
• 50개 이하는 m5.xlarge 권장
• 50개 이상은 부하에 따라 m5.xlarge 이상을 선택
R5 계열 Type 권장
작업량에 따라 메모리 선택
(R5d or R5n)
M5 계열 Type 권장
(m5.xlarge)
1. 최적의 EMR 클러스터 구성
13. 13
최적의 Core/Task Node 사이즈는 어떻게 결정할까?
Apache spark의 작업은 배포 모드에 따라 EMR 클러스터 노드의 자원을 다르게 사용함.
EMR에서 Spark Job의 실행 절차 (client mode)
• Master node에서 spark driver가 실행됨
EMR에서 Spark Job의 실행 절차 (cluster mode)
1. 최적의 EMR 클러스터 구성
https://aws.amazon.com/ko/blogs/korea/submitting-user-applications-with-spark-submit/
• Notebook에서 pyspark 코드 실행 시 동작 구조는 아래와 같다
https://docs.cloudera.com/HDPDocuments/HDP3/HDP-3.1.4/running-spark-applications/content/using_livy_with_interactive_notebooks.html
Master Node Core/Task Node
Master Node Core Node Task Node
• Resource Manager가 지정한 Node(Core or Task)에서 실행됨
• Notebook에서 pyspark 코드 실행 시 동작 구조는 아래와 같다
Master Node Core Node Core/Task Node
Master Node Core Node Task Node
14. 14
최적의 Core/Task Node 사이즈는 어떻게 결정할까?
처리할 데이터 사이즈와 원하는 작업 완료 시간에 따라서 조정
어떻게 Core/Task Node 사이즈를 결정할까? Core와 Task Node를 둘 다 사용해야 할까?
• Core Node (필수 1개 이상)
• HDFS를 실행하여 spark에서 데이터 관리 가능 (데이터 복구 등)
• Application Master는 Core Node에서만 실행
• Spark driver는 Application Master에서만 실행됨.
• Task Node (옵션 0개 이상)
• 병렬 처리(computing) 용도로만 활용
• Core/Task Node 비용은?
• Instance Type이 동일하면, 동일한 비용을 과금.
• 보통은 Core Node만 할당하여 작업을 실행
• 낮은 비용으로 성능 향상을 위해서
• Task Node를 Spot Instance로 많이 활용
• Task Node는 중지 되어도 전체 spark job에 영향 없음
• 다만, Job의 전체 메모리가 부족해 지지 않도록 개수 고려
1. 최적의 EMR 클러스터 구성
https://enterprise-docs.anaconda.com/en/latest/admin/advanced/config-livy-server.html
https://livy.incubator.apache.org/get-started/
• 자원 모니터링을 통한 사용량 측정
• 실제 실행하지 않고 필요한 자원을 예측하는 것은 쉽지 않음.
• 동작하는 pyspark 코드를 실행하여 자원을 얼마나 사용하는지 모
니터링 후, 필요한 자원을 재할당
• 어떻게 서버의 자원을 모니터링 할까?
• AWS EMR에서 기본으로 제공하는 Ganglia Web UI 활용
• 각 서버(Master, Core, Task)의 자원 사용량을 그래프로 확인
• 어떤 정보를 확인할까?
• Master Node
• 자원이 충분히 활용되는가? (더 싼 서버로 대체?)
• Core/Task Node
• 최대/평균 Memory 사용량 (서버 대수 조정, 스펙 조정)
• 최대/평균 CPU 사용량 (서버 대수 조정, 스펙 조정)
15. 15
AWS EMR 자원을 모니터링 하려면?
Cluster node 자원 모니터링 (Ganglia) Spark 성능 최적화 방안
Cluster Node의 자원 사용량과 Apache spark의 처리 상태 모니터링
• 전체 EMR Cluster에서 사용하는 각 CPU/Memory/NW 사용률
• 각 Node별 CPU/Memory/NW 사용률
• 처리 중인 Apache Spark job의 현재 처리 상태 확인
• Stage의 개수 및 각 Stage의 처리 속도
• Task의 개수 변화 (너무 많거나 적은지)
• 사용중인 Memory 현황 등
• Apache spark의 job이 모든 자원을 충분히 사용하는지 확인
• 어떤 자원이 부족한지 확인하여 자원 재할당
1. 최적의 EMR 클러스터 구성
16. 16
EMR Cluster 자원 모니터링 예시 (1/2)
동일한 모델로 약 500개 모델 학습 (평균 30~40G 데이터 처리), 최대 83시간 소요 (1개 모델 당 10분)
Cluster 구성 (총 18대) : Master 1대(r4.8xlarge) , Core 2대 (r4.8xlarge), Task 15 (r4.8xlarge)
Job 현황 분석 (CPU, Memory) Job 현황 분석 (Master Node, Spark 설정)
• 메모리 사용량 (전체 4.3 TB)
• 최대 3TB 사용 (전체의 70%만 활용)
• CPU 사용량 (544 core) : 최대 60% 사용
• Master node 사용량 : 자원 사용률 낮음
Master
node
• Network 사용량 : 평균 1~1.5G 네트워크 전송 (데이터 셔플링 많음)
1. 최적의 EMR 클러스터 구성
Spot 노드 회수로
자원 축소 발생
17. 17
EMR Cluster 자원 모니터링 예시 (2/2)
자원 사용률 향상 및 비용절감을 위한 방안
자원 사용률 최대화 방안 (성능 향상) Node의 비용 최소화 방안
• Spark 병렬 작업 설정 변경
• Executor core/memory/size 설정 변경
• 주어진 자원(cpu/memory)를 최대한 활용
• 권장한 가이드에 따라 변경 후 최적화 필요
• Spark 성능 개선 옵션 변경
• Broadcast join 적극 활용 (데이터 size에 따라 결정)
• 500번의 loop에서 재사용하는 데이터 cache 적용
• Instance Type 변경 검토
• Shuffle이 많이 발생하는 구조라면,
• Disk I/O, Network Bandwidth가 높은 R5d, R5n 검토
• 실험을 통해 성능 개선 결과 확인 필요
• Master node 인스턴스 변경
• 범용 스펙인 m5.xlarge 노드
• Cluster 고가용성 확보
• Master Node HA 구성 또는 On-Demand 구성
• Task Node 사이즈 축소
• 약 70%의 CPU/Memory만 사용함.
• 이를 감안하여 15 * 70% = 11대 노드로 조정
1. 최적의 EMR 클러스터 구성
18. 18
Core/Task Node size & EC Instance 계약 방식
용도별로 적합한 Master Node 자원을 제공
Spot Instance 활용 방안
• 작업의 중요도가 낮으며, 작업이 실패한 경우 재처리 가능한 업무에 활용
• 임시로 할당 받은 서버로, 언제든 회수될 수 있음.
• 고려할 사항으로
• Master node가 회수되는 경우
• 전체 EMR Cluster 중지로 작업 실패
• Core node가 회수되는 경우
• spark driver가 실행되는 Application Master 삭제
• Core Node가 1개인 경우 작업 실패
• 대부분 Task Node에 Spot Instance를 사용
• Core Node에 활용하는 경우 Core Node를 2개 이상으로 설정
Spot 시간당 요금
Reverved (1년)
시간당 요금
EC2 Instance 계약 방식 별 요금 비교
• Apache Spark에서 많이 활용하는 R5계열(Memory-Intensive) 서버 비교
• On-Demand 대비 비용 절감 효과는 Spot Instance가 가장 높음 (약 80%)
80% 절감
38% 절감
• 위 비용은 Seoul Region 기준으로 산정
19. 19
Spot Instance 사용시 ,에러로 인한 재처리 작업 최소화 (1/2)
긴 시간 동안 실행중인 작업이 Master/Core Node의 종료로 인해 실패하는 경우가 많음
• Master Node 회수
• EMR Cluster 전체 종료
• Spark Job 실패
• Core Node 회수
• 1대인 경우 : Spark Driver 종료로 Job 실패
• 2대인 경우 : 다른 Core Node에서 Spark Driver 실행 (Job 유지)
• Task Node 회수
• Driver가 실행되지 않으므로,
• 다른 Task Node에서 작업을 분산하여 처리함. (Job 유지)
1. 최적의 EMR 클러스터 구성
Spark Job 실패 유형
( Spot Instance 사용시 서버가 회수 되는 경우 )
20. 20
Spot Instance 사용시 ,에러로 인한 재처리 작업 최소화 (2/2)
Spot Instance로 구성하는 경우 자원 회수로 인한 재작업 비용 최소화
m5.xlarge 3대 + Core(r5.8xlarge) * 10대
(0.236$*3대 + 0.527$*10대) * 10 시간
EMR cluster HA(High Availability) 구성
• Master Node HA 구성
• 3대의 Master Node로 구성하여 장애 시 정상 동작
• 기존 1대 대비 3배의 비용 추가 되지만,
• Cluster 에러로 인한 재처리 비용 대비 효율적
• HA 구성 시 비용 비교
• 10시간 소요되는 작업이 Cluster 에러로 실패하는 경우 비용 (spot 요금)
On-Demand Instance 활용
• On-Demand Instance 적용하여 장애를 방지
• Master Node, Core Node 대상
• 전체 서비스에 영향을 주는 Node의 에러를 사전에 방지
• Spot 비용 대비 비용이 증가하나, 재처리로 인한 비용보다 절감
• Master Node(m5.xlarge)
• 0.062$(spot) >> 0.192$(on-demand) (0.17$ / hour 증가)
• Core Node(r5.8xlarge)
• 0.527$(spot) >> 2.432$(on-demand) (1.9$ / hour 증가)
m5.xlarge 1대 + Core(r5.8xlarge) * 10대
(0.0629 $ + 0.527$*10대) * 10 시간
53$
+
Error 비용
59$
• 기존 대비 HA 구성에 따른 비용 증가 약 6$ 추가(10시간 기준)
• HA 구성은 On-demand Type만 선택가능
• Master Node HA 구성 시
1. 비용 효율적인 EMR 클러스터 구성
연간 최대 2,800만원 절감 가능
(중요 EMR Cluster에 HA 적용하여 재 작업 제거 시)
22. 22
Node 유형 별 Instance type 적용
단일 Python 작업 또는 분산 작업의 유형(NW 성능, Memory 성능)에 따른 선택 필요
대용량 병렬 처리/분석용 Instance Type
• 현재 가장 많이 사용하는 Instance Type은
• Memory 최적화 Type인 R6, R5, R4 계열
• 최신 Instance의 비용 대비 성능이 가장 좋음
• R6 (40% 향상)> R5 (40%향상) > R4
• R5 계열
• R5a 계열 권장
• R5와 동일한 성능이며, AMD CPU 사용 (동일 비용)
• R5d 계열 권장 (Nvme SSD 지원)
• Apache Spark에서 grouping/join 작업이 많은 경우,
• 임시 파일을 Disk에 저장 (이때 성능 개선 효과)
• R6g 계열
• 가장 최신 세대의 Instance.
• ARM기반 프로세서로 CPU 처리 성능 향상
• 동일 비용으로 높은 처리 가능
다양한 용도별 Instance Type
2. 최적의 Instance Type
• 단일 Python 작업(Juypter Notebook)은 대부분 단일 CPU만 사용함.
• Master Node에서만 실행됨.
• 분석 작업의 유형에 따라서 CPU/Memory 최적화 인스턴스 선택
• 대량의 데이터를 전처리 하는 용도 (Disk I/O 속도 중요)
• R5d 계열 권장 (Nvme SSD 제공)
• 외부(S3)의 대용량 데이터 처리 및 데이터 shuffling이 많은 작업
• R5dn 계열 권장 (Nvme SSD + 최대 25G의 높은 NW 대역폭 제공)
• 머신 러닝 모델 학습 용도 (8G 이하 데이터)
• Multi-Core processing으로 모델 학습 시 (sklearn, keras 등)
• C5, C6 계열 권장
• 멀티 CPU를 통한 병렬 학습에 효과적
24. 24
Apache Spark 성능 최적화
분산 자원 할당 최적화 (Executor) Spark 성능 최적화 방안
3. 성능 최적화를 통한 사용 비용 절감
분산 처리 성능을 최적화하여, EMR Cluster 사용시간 및 비용 절감
• Executor 당 Core 수 : 5 이하 (범용적인 용도)
• 너무 적으면, executor 수 증가로 NW 및 데이터 셔플링
• 너무 많으면, executor 수 감소로 GC 부하 및 쓰레드 부하
• Executor 당 메모리 사이즈 : 4G ~ 64G
• 너무 큰 경우, GC로 인한 부하 증가
• 너무 적은 경우 분산 작업에 필요한 메모리 공간 부족
EMR Cluster
Core Node
(R5.4xlarge 10 대)
• 노드 당 CPU Core : 16 core, OS용 1 core 제외 = 15 core
• 10대 : 150 core
• 노드 당 Memory : 128 G, OS 및 기타 10% 제외 = 115G
• 10대 : 1150 G
• Executor 당 core : 5 core
• 1개 노드에 실행 가능한 Executor : 15 core / 5 core = 3 executor
• Executor 당 할당 가능한 메모리 : 115G / 3 executor : 38 G
최적 자원 할당 방법 (예시)
• Spark 병렬 처리 수준 : 전체 Core 개수 이상
• 너무 적으면, CPU가 유휴 상태로 방치됨. (자원 미사용)
• 너무 많으면, Task 스케줄링 비용 증가/과도한 자원 사용
• spark.default.parallelism
• Cache 활용 (성능향상)
• 한번 읽어온 데이터를 여러 번 읽을 경우 메모리에 저장
• .cache()
• Shuffle Partition 개수 조정 : 전체 Core 개수 이하
• 집계 SQL(Join, group by) 실행 시 할당되는 파티션 수
• spark.sql.shuffle.partitions
• BroadcastJoin 활용 (20M 이하는 적극 활용)
• 데이터의 shuffling이 없으며, 처리 성능 향상
25. 25
어떻게 Apache Spark의 성능을 측정할까? (1/3)
Spark History Server의 분석 흐름 Executor 처리 성능 확인 (예시)
3. 성능 최적화를 통한 사용 비용 절감
Spark History Server을 이용한 모니터링 및 성능 확인
• Spark History Server에서 ”Executors” Tab을 선택
• “Input”에서 데이터 이동이 많이 발생하는 것을 볼 수 있다.
• Stage간 데이터 이동이 많음 (groupby, join으로 인한 shuffling)
• 또한 특정 Executor 2개에서 각 680개의 Task가 실행되고 있다.
• 즉, 작업이 정상적으로 분산되어 처리되지 않음.
Job 확인
Stage 확인
• 실행한 spark code가 실제 어떤 방식으로 동작하는가?
• Cache가 적용된 영역은 어디인가?
https://sparkbyexamples.com/spark/spark-web-ui-understanding/
• Stage 내부의 Task가 어떻게 실행되었는가?
• Task 실행시 어떤 구간에서 많은 시간이 소요되었나?
상세 Stage 흐름
파악
• 개별 stage의 실행 순서 및 캐시 적용 확인
• Task/Partition 단위로 그래프로 시각화
Executor 처리
성능 확인
• Executor의 자원(cpu,mem)이 많이 사용되고 있는가?
• 특정 Executor에 Task가 너무 많이 할당되지 않았나?
• Executor간 데이터 이동이 많지 않은가? (Shuffle)
원본 데이터는 80M인데,
Spark job 실행을 위한 데이터 이동이 많음
• 분석가가 실행한 Spark job은 아래와 같은 단위로 성능 확인 가능
26. 26
어떻게 Apache Spark의 성능을 측정할까? (2/3)
각 Stage 별 Task 실행 시간 확인 (예시) Task 분석 결과 예시
3. 성능 최적화를 통한 사용 비용 절감
Spark Job의 각 Stage 별로 작업이 분산되어 실행되었는지 확인
• 좌측 Stage에서 실행된 총 Task 수 : 15개
• Task 실행 시간
• 전반적으로 하나의 Task가 오랜 시간 동안 실행됨.
• 이로 인해, 작업이 동시에 실행되지 못함. (병렬처리 효과 작음)
• Scheduler Delay 는 작음
• 좌측의 Stage에서 partition을 증가시키면?
• 데이터 분산 및 병렬 처리가 증가하고,
• 아래와 같이 작은 여러 개의 작업이 동시에 실행됨.
https://sparkbyexamples.com/spark/spark-web-ui-understanding/
• 선택한 Stage의 Task들이 어떤 Executor에서 실행되었고,
• 각 Task의 구간별 소요시간을 확인 가능(Scheduler Delay 등)
15개 Task 실행 완료
위의 라인 1개가 Task 개
Executor 1
Executor 2
Executor3
이전 Task 완료 전 까지
다른 Task 대기중
자원할당을 위한
Scheduler delay 증가
27. 어떻게 Apache Spark의 성능을 측정할까? (3/3)
각 Stage 간 데이터 이동 크기 확인 (예시)
3. 성능 최적화를 통한 사용 비용 절감
Stage간 데이터 이동이 과도하지 않은지 확인
https://sparkbyexamples.com/spark/spark-web-ui-understanding/
• “Stage” Tab에서 확인
• Stage간의 데이터 이동(input)이 빈번하고, 사이즈가 크다면 이를 최소
화 할 수 있도록 데이터를 사전에 전처리(Filter 등) 하는 것이 좋다.
Stage간 데이터 이동이 많으면,
성능이 저하될 수 있음.
28. 28
정리해 보면,
업무 목적에 따라서 필요한 항목들을 조합하여 선택
최적의 EMR Cluster를
구성하려면?
비용 대비 높은 성능의 서버를
선택하려면?
성능을 높여서
빠르게 작업을 완료하려면?
• 적절한 Cluster Size 선정
• Ganglia 등으로 서버 자원 모니터링
• 모든 서버 자원이 최대한 활용되도록
클러스터 구성
• EC2 계약 방식 선택
• 작업의 중요도에 따라 선택
• On-Demand, Reserved, Spot
• 에러로 인한 재처리 작업 최소화
• 작업이 취소되지 않도록 가용성 확보
(Spot Instance 사용시)
• 최적의 Instance Type 선택
• 처리 성능 향상으로 자원 사용료 절감
• Node type 별 Instance type
• Master : Cluster 관리 용도
• Core/Task : 실제 작업 처리 용도
• 대용량 병렬 처리/분석 용도 (Apache spark)
• Memory Optimized Instance
• Storage I/O, Network I/O 성능 고려
• 데이터 shuffling 발생 시
• Apache Spark 성능 옵션 최적화
• Executor 자원 할당 최적화
• 모니터링을 통한 Job 최적화
• 분산 작업의 병목없이 처리
• 데이터의 불필요한 이동(shuffle) 최소화
29. 최적화에 정답은 없으며,
업무 목적에 맞게 클러스터를 구성하고,
이를 모니터링(측정)하고,
측정결과를 반영한 성능/비용 최적화가 필요
29