Spark 애플리케이션의 효율성을 높이려면 성능과 동작을 모니터링하는 것이 중요합니다. 이 게시물에서는 자세한 Spark 지표를 게시하는 방법을 보여줍니다. 아마존 EMR 에 아마존 클라우드 워치. 이를 통해 리소스 활용도를 최적화하는 동시에 병목 현상을 식별할 수 있습니다.
CloudWatch는 강력한 사용자 정의 옵션과 다른 AWS 서비스와의 원활한 통합을 통해 AWS 리소스 및 애플리케이션을 위한 강력하고 확장 가능하며 비용 효율적인 모니터링 솔루션을 제공합니다. 기본적으로 Amazon EMR은 다음을 전송합니다. 기본 측정항목 CloudWatch에 연결하여 클러스터의 활동과 상태를 추적합니다. Spark의 구성 가능한 지표 시스템을 사용하면 HTTP, JMX 및 CSV 파일을 비롯한 다양한 싱크에서 지표를 수집할 수 있지만 Spark가 지표를 CloudWatch에 게시하려면 추가 구성이 필요합니다.
솔루션 개요
이 솔루션에는 메트릭을 사용자 지정 싱크로 보내는 Spark 구성이 포함되어 있습니다. 사용자 지정 싱크는 Metricfilter.json 파일에 정의된 측정항목만 수집합니다. CloudWatch 에이전트를 활용하여 지표를 사용자 지정 Cloudwatch 네임스페이스에 게시합니다. 포함된 부트스트랩 작업 스크립트는 CloudWatch 에이전트와 지표 라이브러리를 설치하고 구성하는 일을 담당합니다. 아마존 엘라스틱 컴퓨트 클라우드 (Amazon EC2) EMR 인스턴스. CloudWatch 대시보드는 애플리케이션 성능에 대한 즉각적인 통찰력을 제공할 수 있습니다.
다음 다이어그램은 솔루션 아키텍처와 워크플로를 보여줍니다.
워크 플로우에는 다음 단계가 포함됩니다.
- 사용자는 Spark EMR 작업을 시작하여 EMR 클러스터에 단계를 생성합니다. Apache Spark를 사용하면 워크로드가 EMR 클러스터의 여러 노드에 분산됩니다.
- 클러스터의 각 노드(EC2 인스턴스)에서 Spark 라이브러리는 지표 데이터를 캡처하여 CloudWatch 에이전트에 푸시합니다. CloudWatch 에이전트는 지표 데이터를 CloudWatch에 푸시하기 전에 집계합니다. 30 초마다.
- 사용자는 CloudWatch 콘솔에서 사용자 지정 네임스페이스에 액세스하는 지표를 볼 수 있습니다.
우리는 AWS 클라우드 포메이션 이 게시물의 템플릿을 일반 가이드로 사용하세요. 템플릿은 Spark 지표를 CloudWatch에 푸시하도록 Amazon EMR에서 CloudWatch 에이전트를 구성하는 방법을 보여줍니다. 필요에 따라 이를 검토하고 사용자 정의하여 Amazon EMR 보안 구성을 포함할 수 있습니다. 모범 사례로서 템플릿에 Amazon EMR 보안 구성을 포함하여 다음을 수행하는 것이 좋습니다. 전송 중인 데이터 암호화.
또한 이 스택에 의해 배포된 일부 리소스는 계속 사용되면 비용이 발생한다는 점에도 유의해야 합니다. 추가적으로, EMR 지표 CloudWatch 비용이 발생하지 않습니다. 그러나 사용자 지정 지표에는 CloudWatch 지표 가격 책정에 따라 요금이 부과됩니다. 자세한 내용은 다음을 참조하세요. Amazon CloudWatch 가격.
다음 섹션에서는 다음 단계를 수행합니다.
- 메트릭 라이브러리, 설치 스크립트 및 필터 정의를 생성하고 업로드합니다. 아마존 단순 스토리지 서비스 (Amazon S3) 버킷.
- CloudFormation 템플릿을 사용하여 다음 리소스를 생성합니다.
- CloudWatch 콘솔에서 Spark 지표를 모니터링합니다.
사전 조건
이 게시물은 다음이 있다고 가정합니다.
- An AWS 계정.
- 부트스트랩 스크립트, 라이브러리 및 지표 필터 정의를 저장하기 위한 S3 버킷입니다.
- 다음에서 생성된 VPC 아마존 가상 프라이빗 클라우드 (Amazon VPC), EMR 클러스터가 시작됩니다.
- AWS 서비스 및 리소스에 대한 Amazon EMR 권한에 대한 기본 IAM 서비스 역할입니다. 다음에서 aws emr create-default-roles 명령을 사용하여 이러한 역할을 생성할 수 있습니다. AWS 명령 줄 인터페이스 (AWS CLI).
- 선택 사항인 EC2 키 페어(ECXNUMX 키 페어가 아닌 SSH를 통해 클러스터에 연결하려는 경우) 세션 관리자, 능력 AWS 시스템 관리자.
필수 측정항목 정의
CloudWatch에 불필요한 데이터를 보내는 것을 방지하기 위해 당사 솔루션은 지표 필터를 구현합니다. 검토 스파크 문서 네임스페이스 및 관련 측정항목에 대해 알아봅니다. 특정 애플리케이션 및 성능 목표와 관련된 측정항목을 결정합니다. 워크로드, 데이터 처리 요구 사항 및 최적화 목표에 따라 다양한 애플리케이션에는 모니터링하기 위해 다양한 측정항목이 필요할 수 있습니다. 모니터링하려는 지표 이름은 관련 네임스페이스와 함께 Metricfilter.json 파일에 정의되어야 합니다.
데이터 I/O, 가비지 수집, 메모리 및 CPU 압력, Spark 작업, 단계 및 작업 지표와 관련된 지표 캡처를 포함하는 예제 Metricfilter.json 정의를 만들었습니다.
일부 Spark 릴리스 버전에서는 특정 지표를 사용할 수 없습니다(예: appStatus는 Spark 3.0에 도입됨).
필요한 파일을 생성하고 S3 버킷에 업로드합니다.
자세한 내용은 다음 링크를 참조하세요 개체 업로드 및 서버에 CloudWatch 에이전트 설치 및 실행.
부트스트랩 스크립트를 생성하고 업로드하려면 다음 단계를 완료하십시오.
- Amazon S3 콘솔에서 S3 버킷을 선택합니다.
- 에 사물 탭에서 가이드라가.
- 왼쪽 메뉴에서 파일을 추가합니다, 다음을 선택하십시오. 메트릭필터.json, installer.sh및 examplejob.sh 파일.
- 추가적으로,
emr-custom-cw-sink-0.0.1.jar
사용할 Amazon EMR 릴리스 버전에 해당하는 지표 라이브러리 파일: - 왼쪽 메뉴에서 가이드라가을 클릭하고 파일의 S3 URI를 기록해 둡니다.
CloudFormation 템플릿으로 리소스 프로비저닝
왼쪽 메뉴에서 발사 스택 계정에서 CloudFormation 스택을 시작하고 템플릿을 배포하려면:
이 템플릿은 IAM 역할, IAM 인스턴스 프로필, EMR 클러스터 및 CloudWatch 대시보드를 생성합니다. 클러스터는 기본을 시작합니다. 스파크 예제 애플리케이션. 이 템플릿에서 스택을 생성하면 사용한 AWS 리소스에 대한 요금이 청구됩니다.
CloudFormation 마법사는 다음 매개변수를 수정하거나 제공하도록 요청합니다.
- 인스턴스 유형 - 인스턴스 유형 모든 인스턴스 그룹에 대해. 기본값은 m5.2xlarge입니다.
- 인스턴스수코어 – 코어 인스턴스 그룹의 인스턴스 수. 기본값은 4입니다.
- EMR 릴리스 레이블 - Amazon EMR 릴리스 레이블 당신이 사용하고 싶습니다. 기본값은 emr-6.9.0입니다.
- 부트스트랩스크립트 경로 – 이전에 복사한 installer.sh 설치 부트스트랩 스크립트의 S3 경로입니다.
- 메트릭 필터 경로 – 이전에 복사한 Metricfilter.json 정의의 S3 경로입니다.
- 측정항목라이브러리경로 – 이전에 복사한 CloudWatch emr-custom-cw-sink-3.jar 라이브러리의 S0.0.1 경로입니다.
- CloudWatch네임스페이스 – 사용할 사용자 지정 CloudWatch 네임스페이스의 이름입니다.
- SparkDemoApplicationPath – 이전에 복사한 examplejob.sh 스크립트의 S3 경로입니다.
- 서브넷 – 클러스터가 시작되는 EC2 서브넷. 이 매개변수를 제공해야 합니다.
- EC2키쌍이름 – Session Manager 대신 클러스터 노드에 연결하기 위한 선택적 EC2 키 쌍.
측정항목 보기
CloudFormation 스택이 성공적으로 배포되면 예제 작업이 자동으로 시작되고 완료하는 데 약 15분이 걸립니다. CloudWatch 콘솔에서 다음을 선택합니다. 대시 보드 탐색 창에서. 그런 다음 SparkMonitoring 접두사로 목록을 필터링합니다.
예제 대시보드에는 클러스터에 대한 정보와 Spark 작업, 단계 및 태스크의 개요가 포함되어 있습니다. 측정항목은 다음으로 시작하는 사용자 지정 네임스페이스에서도 사용할 수 있습니다. EMRCustomSparkCloudWatchSink
.
메모리, CPU, I/O 및 추가 작업 배포 지표도 포함됩니다.
마지막으로 실행자별로 자세한 Java 가비지 수집 측정항목을 사용할 수 있습니다.
정리
향후 계정에 요금이 청구되지 않도록 하려면 이 연습에서 생성한 리소스를 삭제하세요. EMR 클러스터는 클러스터가 활성화되어 있는 동안 요금이 부과되므로 완료되면 중지하십시오. 다음 단계를 완료하세요.
- CloudFormation 콘솔의 탐색 창에서 다음을 선택합니다. 스택.
- 시작한 스택을 선택합니다(
EMR-CloudWatch-Demo
)를 선택한 다음 .. - S3 버킷 비우기 당신은 만들었습니다.
- S3 버킷 삭제 당신은 만들었습니다.
결론
이제 이 연습의 단계를 완료했으므로 CloudWatch 에이전트가 클러스터 호스트에서 실행되고 Spark 지표를 CloudWatch에 푸시하도록 구성되었습니다. 이 기능을 사용하면 Amazon EMR에서 실행되는 Spark 작업의 상태와 성능을 효과적으로 모니터링하여 중요한 문제를 실시간으로 감지하고 근본 원인을 신속하게 식별할 수 있습니다.
IAM 인스턴스 프로필 역할, CloudWatch 대시보드 및 EMR 클러스터를 생성하는 이 예제 템플릿과 같은 CloudFormation 템플릿을 통해 이 솔루션을 패키징하고 배포할 수 있습니다. 라이브러리의 소스 코드는 다음에서 사용할 수 있습니다. GitHub의 사용자 정의를 위해.
이를 더 자세히 알아보려면 CloudWatch 경보에서 이러한 지표를 사용하는 것이 좋습니다. 다른 알람과 함께 수집할 수 있습니다. 복합 경보 또는 보내기와 같은 알람 작업 구성 아마존 단순 알림 서비스 (Amazon SNS) 알림을 통해 다음과 같은 이벤트 기반 프로세스를 트리거합니다. AWS 람다 기능.
저자에 관하여
르 클루 루베 AWS의 수석 엔지니어입니다. 그는 대규모 기업 고객과 협력하여 가장 복잡한 기술 문제 중 일부를 해결합니다. 그는 고객의 삶에 영향을 미치고 개선하기 위해 혁신을 통해 광범위한 솔루션을 추진합니다.
- SEO 기반 콘텐츠 및 PR 배포. 오늘 증폭하십시오.
- PlatoData.Network 수직 생성 Ai. 자신에게 권한을 부여하십시오. 여기에서 액세스하십시오.
- PlatoAiStream. 웹3 인텔리전스. 지식 증폭. 여기에서 액세스하십시오.
- 플라톤ESG. 자동차 / EV, 탄소, 클린테크, 에너지, 환경, 태양광, 폐기물 관리. 여기에서 액세스하십시오.
- PlatoHealth. 생명 공학 및 임상 시험 인텔리전스. 여기에서 액세스하십시오.
- 차트프라임. ChartPrime으로 트레이딩 게임을 향상시키십시오. 여기에서 액세스하십시오.
- BlockOffsets. 환경 오프셋 소유권 현대화. 여기에서 액세스하십시오.
- 출처: https://aws.amazon.com/blogs/big-data/monitor-apache-spark-applications-on-amazon-emr-with-amazon-cloudwatch/
- :이다
- :아니
- :어디
- 1
- 100
- 107
- 15%
- 20
- 30
- 9
- a
- 능력
- 액세스
- 계정
- 정통한
- 가로질러
- 동작
- 행위
- 활동적인
- 활동
- 추가
- 또한
- 에이전트
- 경보
- All
- 수
- 따라
- 또한
- 대안
- 아마존
- Amazon EC2
- 아마존 EMR
- Amazon Web Services
- an
- 및
- 아파치
- 아파치 스파크
- 어플리케이션
- 어플리케이션
- 대략
- 건축
- 아키텍처
- 있군요
- AS
- 관련
- 가정하다
- At
- 저자
- 자동적으로
- 가능
- 피하기
- 인식
- AWS
- 기반으로
- 기본
- BE
- 전에
- BEST
- 부트 스트랩
- 넓은
- 비자 면제 프로그램에 해당하는 국가의 시민권을 가지고 있지만
- by
- CAN
- 능력
- 캡처
- 캡처
- 원인
- 어떤
- 요금
- 왼쪽 메뉴에서
- 클러스터
- 암호
- 수집
- 수집
- 수집하다
- 완전한
- 진행완료
- 복잡한
- 계산
- 구성
- 구성
- 연결하기
- 연결
- 고려
- 콘솔에서
- 핵심
- 대응
- 비용 효율적인
- 비용
- 수
- CPU
- 만들
- 만든
- 생성
- 만들기
- 임계
- 관습
- 고객
- 사용자 정의
- 사용자 정의
- 계기반
- 데이터
- 데이터 처리
- 태만
- 한정된
- 정의
- 보여
- 보여줍니다
- 의존
- 배포
- 배포
- 배치하다
- 상세한
- 결정
- 다른
- 분산
- 분포
- 한
- 말라
- 드라이브
- 마다
- 이전
- 효과적으로
- 효율성
- 가능
- 기사
- Enterprise
- 기업 고객
- 필수
- 에테르 (ETH)
- 예
- 특색
- 입양 부모로서의 귀하의 적합성을 결정하기 위해 미국 이민국에
- 파일
- 필터링
- 수행원
- 럭셔리
- 에
- 기능
- 추가
- 미래
- 일반
- 얻을
- 주기
- Go
- 목표
- 그룹
- 여러 떼
- 안내
- 있다
- he
- 건강
- 호스트
- 방법
- How To
- 그러나
- HTML
- HTTP
- HTTPS
- IAM
- 확인
- 식별
- if
- 설명하다
- 일러스트
- 영향
- 구현하다
- 개선
- in
- 포함
- 포함
- 포함
- 포함
- 정보
- 혁신
- 통찰력
- 설치
- 설치
- 예
- 즉시
- 완성
- 으로
- 소개
- 문제
- IT
- 그
- 자바
- 일
- 작업
- JSON
- 키
- 가장 큰
- 시작
- 시작
- 시작
- 도서관
- 생활
- 처럼
- 라인
- 명부
- 긴
- 매니저
- XNUMX월..
- 메모리
- 메트릭
- 통계
- 분
- 수정
- 모니터
- 모니터링
- 배우기
- 가장
- 절대로 필요한 것
- name
- 이름
- 카테고리
- 필요
- 다음 것
- 노드
- 노드
- 주의
- 공고
- 알림
- 번호
- 목표
- of
- on
- 만
- 최적화
- 최적화
- 옵션
- or
- 기타
- 우리의
- 개요
- 꾸러미
- 쌍
- 빵
- 매개 변수
- 매개 변수
- 통로
- 용
- 성능
- 권한
- 계획
- 플라톤
- 플라톤 데이터 인텔리전스
- 플라토데이터
- 초상화
- 게시하다
- 강한
- 연습
- 압박
- 가격
- 교장
- 사설
- 문제
- 프로세스
- 처리
- 프로필
- 제공
- 제공
- 게시
- 푸시
- 밀어
- 미는
- 빨리
- 차라리
- 현실
- 실시간
- 권하다
- 관련
- 공개
- 관련된
- 남아
- 필요
- 필수
- 요구조건 니즈
- 의지
- 자원 활용
- 제품 자료
- 책임
- 리뷰
- 강력한
- 직위별
- 역할
- 뿌리
- 달리는
- 확장성
- 원활한
- 섹션
- 섹션
- 보안
- 참조
- 보내다
- 전송
- 전송
- 서비스
- 서비스
- 세션
- 영상을
- 단순, 간단, 편리
- So
- 해결책
- 솔루션
- 풀다
- 일부
- 출처
- 소스 코드
- 불꽃
- 구체적인
- 스택
- 단계
- 단계
- 스타트
- 시작 중
- 시작
- 단계
- 단계
- 중지
- 저장
- 서브넷
- 성공적으로
- 이러한
- 개요
- 체계
- 시스템은
- 받아
- 소요
- 태스크
- 작업
- 테크니컬
- 이 템플릿
- 보다
- 그
- XNUMXD덴탈의
- 소스
- 그들의
- 그들
- 그때
- Bowman의
- 그들
- 이
- 을 통하여
- 시간
- 에
- 선로
- 트리거
- 아래에
- 사용
- 익숙한
- 사용
- 이용하다
- 종류
- 버전
- 관측
- 온라인
- 연습
- 필요
- 였다
- we
- 웹
- 웹 서비스
- 언제
- 어느
- 동안
- 의지
- 과
- 워크플로우
- 일
- X
- 얌
- 당신
- 너의
- 제퍼 넷