Spark 기록 서버 시작 - AWS Glue

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Spark 기록 서버 시작

Spark 기록 서버를 사용하여 자체 인프라에서 Spark 로그를 시각화할 수 있습니다. AWS Glue 콘솔에서는 AWS Glue 4.0 이상 버전의 AWS Glue 작업 실행에 대한 동일한 시각화를 레거시 형식이 아닌 표준 형식으로 생성된 로그와 함께 볼 수 있습니다. 자세한 내용은 Apache Spark 웹 UI를 사용하여 작업 모니터링 단원을 참조하십시오.

EC2 인스턴스에서 서버를 호스팅하는 AWS CloudFormation 템플릿을 사용하여 Spark 기록 서버를 시작하거나 Docker를 사용하여 로컬로 시작할 수 있습니다.

AWS CloudFormation을 사용하여 Spark 기록 서버 시작 및 Spark UI 보기

AWS CloudFormation 템플릿을 사용하여 Apache Spark 기록 서버를 시작하고 Spark 웹 UI를 볼 수 있습니다. 이 템플릿은 요구 사항에 맞게 수정해야 하는 샘플입니다.

AWS CloudFormation을 사용하여 Spark History Server를 시작하고 Spark UI를 보려면
  1. 다음 표에서 스택 시작 버튼 중 하나를 선택하십시오. 그러면 AWS CloudFormation 콘솔에서 스택이 시작됩니다.

    리전 시작
    미국 동부(오하이오) Orange button labeled "Launch Stack" with an arrow icon.
    미국 동부(버지니아 북부) Orange button labeled "Launch Stack" with an arrow icon.
    미국 서부(캘리포니아 북부) Orange button labeled "Launch Stack" with an arrow icon.
    미국 서부(오레곤) Orange button labeled "Launch Stack" with an arrow icon.
    아프리카(케이프타운) Orange button labeled "Launch Stack" with an arrow icon.
    아시아 태평양(홍콩) Orange button labeled "Launch Stack" with an arrow icon.
    아시아 태평양(뭄바이) Orange button labeled "Launch Stack" with an arrow icon.
    아시아 태평양(오사카) Orange button labeled "Launch Stack" with an arrow icon.
    아시아 태평양(서울) Orange button labeled "Launch Stack" with an arrow icon.
    아시아 태평양(싱가포르) Orange button labeled "Launch Stack" with an arrow icon.
    아시아 태평양(시드니) Orange button labeled "Launch Stack" with an arrow icon.
    아시아 태평양(도쿄) Orange button labeled "Launch Stack" with an arrow icon.
    캐나다(중부) Orange button labeled "Launch Stack" with an arrow icon.
    유럽(프랑크푸르트) Orange button labeled "Launch Stack" with an arrow icon.
    유럽(아일랜드) Orange button labeled "Launch Stack" with an arrow icon.
    유럽(런던) Orange button labeled "Launch Stack" with an arrow icon.
    유럽(밀라노) Orange button labeled "Launch Stack" with an arrow icon.
    유럽(파리) Orange button labeled "Launch Stack" with an arrow icon.
    유럽(스톡홀름) Orange button labeled "Launch Stack" with an arrow icon.
    중동(바레인) Orange button labeled "Launch Stack" with an arrow icon.
    남아메리카(상파울루) Orange button labeled "Launch Stack" with an arrow icon.
  2. Specify template(템플릿 지정) 페이지에서 다음을 선택합니다.

  3. 스택 세부 정보 지정 페이지에서 스택 이름을 입력합니다. 파라미터(Parameters) 아래에 추가 정보를 입력합니다.

    1. Spark UI 구성

      다음 정보를 제공합니다.

      • [IP 주소 범위(IP address range)] - Spark UI를 보는 데 사용할 수 있는 IP 주소 범위입니다. 특정 IP 주소 범위의 액세스를 제한하려면 사용자 지정 값을 사용해야 합니다.

      • [기록 서버 포트(History server port)] - Spark UI의 포트입니다. 기본 값을 사용할 수 있습니다.

      • [이벤트 로그 디렉터리(Event log directory)] - AWS Glue 작업 또는 개발 엔드포인트에서 Spark 이벤트 로그가 저장되는 위치를 선택합니다. 이벤트 로그 경로 체계에 s3a://를 사용해야 합니다.

      • [Spark 패키지 위치(Spark package location)] - 기본값을 사용할 수 있습니다.

      • [키 스토어 경로(Keystore path)] - HTTPS의 SSL/TLS 키 스토어 경로입니다. 사용자 지정 키 스토어 파일을 사용하려면 여기에서 S3 경로 s3://path_to_your_keystore_file을 지정하면 됩니다. 이 파라미터를 비워두면 자체 서명된 인증서 기반 키 스토어가 생성되어 사용됩니다.

      • 키 스토어 암호(Keystore password) - HTTPS에 대한 SSL/TLS 키 스토어 암호를 입력합니다.

    2. EC2 인스턴스 구성

      다음 정보를 제공합니다.

      • [인스턴스 유형(Instance type)] - Spark 기록 서버를 호스팅하는 Amazon EC2 인스턴스 유형입니다. 이 템플릿은 계정에서 Amazon EC2 인스턴스를 시작하므로 계정에 별도로 Amazon EC2 비용이 청구됩니다.

      • [최신 AMI ID(Latest AMI ID)] - Spark 기록 서버 인스턴스에 대한 Amazon Linux 2의 AMI ID입니다. 기본 값을 사용할 수 있습니다.

      • [VPC ID] - Spark 기록 서버 인스턴스의 Virtual Private Cloud(VPC) ID입니다. 계정에 제공된 모든 VPC를 사용할 수 있습니다. 기본 네트워크 ACL과 함께 기본 VPC를 사용하지 않는 것이 좋습니다. 자세한 내용은 Amazon VPC 사용 설명서기본 VPC 및 서브넷VPC 생성을 참조하세요.

      • [서브넷 ID(Subnet ID)] - Spark 기록 서버 인스턴스의 ID입니다. VPC의 모든 서브넷을 사용할 수 있습니다. 클라이언트에서 서브넷으로 네트워크에 도달할 수 있어야 합니다. 인터넷을 통해 액세스하려면 라우팅 테이블에 인터넷 게이트웨이가 있는 퍼블릭 서브넷을 사용해야 합니다.

    3. Next(다음)를 선택합니다.

  4. 스택 옵션 구성(Configure stack options) 페이지에서 현재 사용자 자격 증명을 사용하여 CloudFormation이 스택의 리소스를 생성, 수정 또는 삭제하는 방식을 확인하려면 다음(Next)을 선택합니다. 권한 섹션에서 현재 사용자 권한 대신 사용할 역할을 지정하고 다음을 선택할 수도 있습니다.

  5. 검토 페이지에서 설정을 확인합니다.

    AWS CloudFormation에서 IAM 리소스를 생성할 수 있음을 승인합니다를 선택하고 스택 생성을 선택합니다.

  6. 스택이 생성되기를 기다립니다.

  7. 출력 탭을 클릭합니다.

    1. 퍼블릭 서브넷을 사용하는 경우 SparkUiPublicUrl의 URL을 복사하십시오.

    2. 프라이빗 서브넷을 사용하는 경우 SparkUiPrivateUrl의 URL을 복사하십시오.

  8. 웹 브라우저를 열고 URL에 붙여 넣습니다. 지정된 포트에서 HTTPS를 사용하여 서버에 액세스할 수 있습니다. 브라우저가 서버 인증을 인식하지 못할 수 있어 서버 보호를 재정의하여 실행해야 합니다.

Docker를 사용하여 Spark 기록 서버 시작 및 Spark UI 보기

로컬 액세스를 선호하는 경우(Apache Spark 기록 서버에 EC2 인스턴스가 없는 경우) Docker를 사용하여 Apache Spark 기록 서버를 시작하고 Spark UI를 로컬로 볼 수도 있습니다. 이 Dockerfile은 요구 사항에 맞게 수정해야 하는 샘플입니다.

사전 조건 

노트북에 도커를 설치하는 방법에 대한 자세한 내용은 Docker Engine community를 참조하십시오.

Docker를 사용하여 로컬로 Spark History Server를 시작하고 Spark UI를 보려면
  1. GitHub에서 파일을 다운로드하십시오.

    AWS Glue 코드 샘플에서 Dockerfile과 pom.xml을 다운로드합니다.

  2. AWS에 액세스하는 데 사용자 자격 증명을 사용할지 또는 페더레이션 사용자 자격 증명을 사용할지 결정합니다.

    • 현재 사용자 자격 증명을 사용하여 AWS에 액세스하려면 docker run 명령의 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY에 사용할 값을 가져옵니다. 자세한 내용은 IAM 사용 설명서의 IAM 사용자의 액세스 키 관리를 참조하세요.

    • SAML 2.0 페더레이션 사용자를 사용하여 AWS에 액세스하려면 AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN의 값을 가져옵니다. 자세한 내용은 임시 보안 자격 증명 요청을 참조하세요.

  3. docker run 명령에서 사용할 이벤트 로그 디렉터리의 위치를 결정합니다.

  4. 이름 glue/sparkui 및 태그 latest를 사용하여 로컬 디렉터리의 파일을 통해 Docker 이미지를 구축합니다.

    $ docker build -t glue/sparkui:latest .
  5. Docker 컨테이너를 생성하고 시작합니다.

    다음 명령에서는 이전 2단계와 3단계에서 얻은 값을 사용합니다.

    1. 사용자 자격 증명을 사용하여 Docker 컨테이너를 생성하려면 다음과 비슷한 명령을 사용합니다.

      docker run -itd -e SPARK_HISTORY_OPTS="$SPARK_HISTORY_OPTS -Dspark.history.fs.logDirectory=s3a://path_to_eventlog -Dspark.hadoop.fs.s3a.access.key=AWS_ACCESS_KEY_ID -Dspark.hadoop.fs.s3a.secret.key=AWS_SECRET_ACCESS_KEY" -p 18080:18080 glue/sparkui:latest "/opt/spark/bin/spark-class org.apache.spark.deploy.history.HistoryServer"
    2. 임시 자격 증명을 사용하여 Docker 컨테이너를 생성하려면 org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider를 공급자로 사용하고 2단계에서 얻은 자격 증명 값을 제공합니다. 자세한 내용은 Hadoop: Amazon Web Services와 통합 설명서의 TemporaryAWSCredentialsProvider로 세션 자격 증명 사용을 참조하세요.

      docker run -itd -e SPARK_HISTORY_OPTS="$SPARK_HISTORY_OPTS -Dspark.history.fs.logDirectory=s3a://path_to_eventlog -Dspark.hadoop.fs.s3a.access.key=AWS_ACCESS_KEY_ID -Dspark.hadoop.fs.s3a.secret.key=AWS_SECRET_ACCESS_KEY -Dspark.hadoop.fs.s3a.session.token=AWS_SESSION_TOKEN -Dspark.hadoop.fs.s3a.aws.credentials.provider=org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider" -p 18080:18080 glue/sparkui:latest "/opt/spark/bin/spark-class org.apache.spark.deploy.history.HistoryServer"
    참고

    이러한 구성 파라미터는 Hadoop-AWS 모듈에서 나옵니다. 사용 사례를 바탕으로 특정 구성을 추가해야 할 수 있습니다. 예를 들어, 격리된 리전에 있는 사용자는 spark.hadoop.fs.s3a.endpoint를 구성해야 합니다.

  6. 브라우저에서 http://localhost:18080을 열어 로컬로 Spark UI를 봅니다.