우수 사례

서버리스 인스턴스를 프로비저닝 및 관리하고 Spark 애플리케이션을 실행할 때 다음과 같은 권장 가이드라인 세트를 사용하십시오.

자세한 설명과 참조 링크를 포함한 서버리스 인스턴스 사용 시 모범 사례
우수 사례 설명 참조 링크
개발 및 프로덕션 환경에 대해 별도의 IBM Analytics Engine 서비스 인스턴스를 사용하십시오. 이는 일반적인 우수 사례입니다. 다른 환경에 대해 별도의 IBM Analytics Engine 인스턴스를 작성하여 프로덕션 인스턴스에 적용하기 전에 구성 및 코드 변경사항을 테스트할 수 있습니다. 해당사항 없음
최신 Spark 버전으로 업그레이드하세요 오픈 소스 Spark 버전이 릴리스되면 내부 테스트에 필요한 시간 간격 후에 IBM Analytics Engine 에서 사용 가능하게 됩니다. 릴리스 정보 섹션에서 새 Spark 버전의 공지사항을 살펴보고 인스턴스의 런타임을 업그레이드하여 애플리케이션을 최신 Spark 런타임으로 이동하십시오. 이전 런타임은 더 이상 사용되지 않으며 새 버전이 릴리스되면 결국 제거됩니다. 프로덕션 인스턴스를 변경하기 전에 새 런타임에서 애플리케이션을 테스트해야 합니다.
역할 기반 액세스 부여 요구사항에 따라 IBM Analytics Engine 인스턴스의 모든 사용자에게 역할 기반 액세스 권한을 부여해야 합니다. 예를 들어, 자동화 팀에만 애플리케이션을 제출할 수 있는 권한이 있어야 합니다. 시크릿에 대한 액세스 권한이 있고 DevOps 팀은 모든 애플리케이션 및 해당 상태의 목록만 볼 수 있어야 하기 때문입니다.
올바른 IBM Cloud Object Storage 구성 선택
  • 재해 복구(DR) 복원력: 여러 지역의 여러 도시에 걸쳐 데이터를 백업하는 IBM Cloud Object Storage 교차 지역 복원력 옵션을 사용해야 합니다. 반대로, 지역 복원 옵션은 단일 데이터 센터에서 데이터를 백업합니다.
  • 암호화: IBM Cloud Object Storage 은 기본 내장 암호화와 함께 제공됩니다. BYOK Key Protect 서비스에 대해 작업하도록 Object Storage 를 구성할 수도 있습니다.
  • 서비스 인증 정보: 기본적으로 IBM Cloud Object Storage 은 IAM 스타일 인증 정보를 사용합니다. AWS스타일 신임 정보에 대해 작업하려면 서비스 신임 정보에 설명된 대로 "HMAC 신임 정보 포함" 옵션을 사용해야 합니다.
  • IBM Cloud Object Storage에 대한 직접 엔드포인트: IBM Cloud Object Storage 인스턴스에 연결하기 위해 항상 직접 엔드포인트를 사용하십시오. 이는 IBM Cloud Object Storage 홈 인스턴스 및 애플리케이션에서 사용되는 엔드포인트 (사용자 코드 또는 인스턴스 레벨 또는 애플리케이션 레벨의 구성에서 매개변수로 전달하는 항목) 에 적용됩니다. 직접 엔드포인트는 공용 엔드포인트보다 더 나은 성능을 제공하며, 발신 또는 수신 대역폭에 대한 요금이 부과되지 않습니다.
외부 Hive 메타스토어에 개인용 엔드포인트 사용 Spark SQL을 사용 중이고 IBM Cloud Databases for PostgreSQL 을 Hive 메타스토어로 사용하는 것과 같은 외부 메타스토어를 사용하려는 경우, 더 나은 성능 및 비용 절감을 위해 데이터베이스 연결을 위한 개인용 엔드포인트를 사용해야 합니다.
자원 과다 할당으로 애플리케이션 실행 각 Analytics Engine Serverless 인스턴스와 연관된 할당량이 있습니다. 애플리케이션이 인스턴스에서 제출되면 인스턴스 할당량에서 자원이 할당됩니다. 애플리케이션이 사용 가능한 할당량을 초과하는 자원을 요청하는 경우 애플리케이션이 시작되지 않거나 요청된 자원보다 적은 자원으로 실행되며, 이로 인해 애플리케이션이 예상보다 느리게 실행되거나 애플리케이션이 실패하는 경우도 있습니다. 항상 인스턴스에서 현재 자원 이용을 모니터하여 애플리케이션이 주어진 한계 내에서 편안하게 실행 중인지 확인해야 합니다. 필요한 경우 지원 티켓을 통해 한계를 조정할 수 있습니다.
자원의 정적 할당 대 자동 스케일링 애플리케이션을 제출할 때 실행 프로그램의 수를 지정하거나 (정적 할당) 자동 스케일링 옵션 (동적 할당) 을 사용할 수 있습니다. 정적 할당 또는 자동 스케일링을 사용할지 여부를 결정하기 전에 올바른 구성을 찾기 위해 정적 및 자동 스케일링 둘 다를 사용하는 서로 다른 데이터 세트를 변경하여 몇 가지 벤치마킹 테스트를 실행할 수 있습니다. 일반 고려사항:
-애플리케이션에 필요한 자원 (코어 및 메모리) 의 수를 알고 있고 애플리케이션 실행의 여러 단계에서 다르지 않은 경우 성능 향상을 위해 정적 자원을 할당하는 것이 좋습니다.
-최적화된 자원 이용률을 위해 이동하려는 경우 애플리케이션의 실제 수요에 따라 실행 프로그램이 할당되는 실행 프로그램의 자동 스케일링을 선택할 수 있습니다. 애플리케이션에서 자동 스케일링을 사용할 때 약간의 연관된 지연이 있을 수 있습니다.
전달 로깅 사용 및 미세 조정 -문제점 해결, 진행상태 표시, 애플리케이션의 출력 인쇄 또는 표시에 도움이 되도록 서비스 인스턴스에 대한 정방향 로깅을 사용으로 설정하십시오. 로그 전달은 IBM Log Analysis 인스턴스에서 전달되거나 유지되는 로그의 수량을 기반으로 비용을 발생시킵니다. 유스 케이스 및 필요에 따라 최적의 설정을 결정해야 합니다.
-기본 API를 사용하여 로그 전달을 사용으로 설정하면 드라이버 로그만 사용으로 설정됩니다. 실행 프로그램 로그도 필요한 경우, 예를 들어 실행 프로그램에만 표시되는 오류가 있는 경우 실행 프로그램 로깅을 사용하도록 로깅을 사용자 정의해야 합니다. 실행 프로그램 로그는 매우 커질 수 있으므로 로깅 인스턴스로 전달되는 로그의 양을 최적화하는 옵션과 문제점 해결을 위해 로그에서 얻는 정보의 균형을 맞추십시오.
-올바른 구성 및 검색 기술을 선택할 때 IBM Log Analysis 의 우수 사례를 따르십시오. 예를 들어, 비용을 절감하기 위해 IBM Cloud Object Storage 에 대한 로그 아카이브를 사용하여 7일검색을 위해 IBM Log Analysis 인스턴스 플랜을 구성할 수 있습니다. 또한 IBM Log Analysis 문서에서 키워드, 특정 시점 등을 기반으로 관심있는 로그를 검색하는 방법에 대한 기술을 참조하십시오.
서비스 인스턴스 사용자 정의 -사전 설치되지 않은 Python 또는 conda 패키지를 가져오거나 Spark 애플리케이션에 사용할 수 있는 일부 파일 (인증서 또는 구성 파일) 을 가져오도록 서비스 인스턴스를 사용자 정의해야 할 수 있습니다. 사용자의 요구에 따라 라이브러리 세트를 사용하여 인스턴스를 사용자 정의하고 애플리케이션을 제출할 때 이러한 라이브러리 세트를 사용하십시오.
-라이브러리 세트의 크기는 애플리케이션 시작 시간 및 실행 프로그램 시작 시간 (애플리케이션을 자동 스케일링할 때) 과 관련이 있습니다. 또한 라이브러리 세트의 크기에 대한 상한이 있습니다 (즉, 2GB). 따라서 다른 애플리케이션에 다른 라이브러리 세트가 필요한 경우에는 애플리케이션이 제출될 때 개별적으로 지정할 수 있도록 별도의 라이브러리 세트를 사용하는 것이 좋습니다.
-애플리케이션 세부사항 매개변수로 가져올 수 없는 파일을 가져오는 경우에만 사용자 정의를 사용하십시오. Spark 애플리케이션 제출을 위한 매개변수 를 참조하십시오. 사용자의 유스 케이스에 맞는 경우 files, jars, packagespyFiles 옵션과 같은 표준 spark-submit 동등한 매개변수 옵션을 사용해야 합니다. 이러한 범주에 맞지 않는 파일 (예: 자체 서명 인증서, JAAS 구성 파일 또는 .so 파일) 이 필요한 경우에만 "파일 다운로드를 위한 사용자 정의" 옵션을 사용해야 합니다.
애플리케이션 목록을 검색할 때 필터 적용 UI에서 또는 API 또는 CLI를 사용하여 애플리케이션 목록을 검색해야 하는 경우 적절한 필터를 적용하고 필요한 세트를 검색하는 것이 좋습니다.
기능을 지원하기 위해 다른 서비스 또는 도구 사용 IBM Log Analysis 및 IBM Cloud Object Storage 인스턴스 사용과 별도로, 유스 케이스에 따라 다른 지원 도구 및 서비스를 사용할 수 있습니다. 예를 들어, Apache Airflow (사용자가 관리함) 를 사용하여 애플리케이션을 조정, 스케줄링 및 자동화할 수 있습니다. 또한 IBM Secrets Manager 를 사용하여 애플리케이션에 필요한 시크릿을 저장하고 자동화 스크립트를 사용하여 애플리케이션을 제출하기 전에 Secrets Manager 에서 시크릿을 읽을 수 있습니다. 또한 애플리케이션 내에서 직접 Secrets Manager 의 필수 시크릿을 읽는 데 필요한 토큰을 전달하여 애플리케이션 인수를 사용하여 작성할 수도 있습니다.
백업 및 재해 복구를 위해 대체 지역의 인스턴스 사용 현재 IBM Analytics Engine 서버리스 인스턴스는 댈러스 (us-south) 및 프랑크푸르트 (eu-de) 의 두 지역에서 작성할 수 있습니다. 데이터가 있는 동일한 지역에서 인스턴스를 작성하는 것이 좋지만, 기본 인스턴스가 사용 불가능하게 되거나 사용할 수 없게 되는 경우에는 기본 인스턴스와 동일한 구성 세트를 사용하여 대체 지역에서 백업 인스턴스를 작성하는 것이 항상 유용합니다. 자동화를 통해 필요한 경우 두 지역 간에 애플리케이션 제출을 전환할 수 있어야 합니다. 해당사항 없음
애플리케이션 파일, 데이터 파일 및 홈 인스턴스에 대해 별도의 버킷 및 서비스 인증 정보 사용 서로 다른 리소스 간에 액세스를 구별하려면 "관심사항 분리" 원칙을 사용하십시오.
-데이터 또는 애플리케이션 파일을 홈 인스턴스 버킷에 저장하지 마십시오.
-데이터 및 애플리케이션 파일에 별도의 버킷을 사용하십시오.
-애플리케이션 파일 및 데이터를 포함하는 버킷에 대한 제한된 액세스 권한이 있는 별도의 액세스 신임 정보 (IAM키 기반) 를 사용하십시오.
애플리케이션은 72시간내에 실행되어야 합니다. 애플리케이션 또는 커널이 실행할 수 있는 시간 수에는 제한이 있습니다. 보안 및 준수 패치를 위해 72시간이상 실행되는 모든 런타임이 중지됩니다. 대형 애플리케이션이 있는 경우 애플리케이션을 72시간내에 실행되는 더 작은 청크로 나누십시오. Spark 스트리밍 애플리케이션을 실행 중인 경우 체크포인트를 구성하고 애플리케이션이 중지된 경우 애플리케이션을 다시 시작할 수 있도록 모니터링이 설정되어 있는지 확인하십시오.
필요한 경우에만 Spark 히스토리 시작 및 중지 더 이상 사용할 필요가 없으면 항상 Spark 히스토리 서버를 중지하십시오. Spark 히스토리 서버는 상태가 시작되는 동안 계속해서 CPU및 메모리 자원을 이용합니다.