Amazon EMR의 Spark 웹 UI에서 Apache Spark 기록 이벤트 또는 로그를 볼 수 없는 이유는 무엇입니까?

3분 분량
0

Amazon EMR의 Spark 웹 UI에서 Apache Spark 기록 이벤트 또는 로그를 볼 수 없습니다.

간략한 설명

다음을 사용하여 Amazon EMR에서 Spark History Server를 볼 수 있습니다.

  • 영구 애플리케이션 사용자 인터페이스에 대한 클러스터 외부 액세스(EMR 5.25.0부터 시작)
  • 클러스터 내 애플리케이션 사용자 인터페이스(SSH 연결을 통해 웹 프록시 설정 후)

해결 방법

클러스터 외부의 영구 Spark History Server 또는 UI를 사용하여 Spark 기록 이벤트를 볼 수 없습니다

영구 Spark History Server 이벤트는 다음을 포함하는 EMR 클러스터에서는 액세스할 수 없습니다.

  • 여러 프라이머리 노드.
  • AWS Lake Formation과 통합된 EMR 클러스터.
  • HDFS에서 Amazon Simple Storage Service(Amazon S3)와 같은 다른 파일 시스템으로 변경된 기본 디렉터리.

자세한 내용은 영구 애플리케이션 사용자 인터페이스 보기 - 고려 사항 및 제한을 참조하세요.

참고: 영구 Spark History Server는 부하 테스트나 병렬로 실행되는 수천 개의 Spark 애플리케이션을 보는 데 적합하지 않습니다. 많은 수의 애플리케이션을 보거나 부하 테스트를 수행하려면 클러스터 내 Spark History Server를 사용하세요.

클러스터 내 Spark History Server 또는 UI를 사용하여 Spark 기록 이벤트를 볼 수 없습니다

6.3* 및 5.30 이전의 Amazon EMR 릴리스에서 Spark 이벤트를 S3 버킷에 저장하면 클러스터 내 Spark History Server 이벤트에 액세스할 수 없습니다. 이러한 Amazon EMR 버전의 Spark History Server에는 S3 버킷에 액세스하는 데 필요한 emrfs-hadoop-assembly JAR 파일이 없습니다. 이 JAR 파일이 없으면 Spark History Server 이벤트에 액세스하려고 할 때 다음과 같은 오류가 발생합니다.

INFO FsHistoryProvider: History server ui acls disabled; users with admin permissions: ; groups with admin permissions
Exception in thread "main" java.lang.reflect.InvocationTargetException
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.amazon.ws.emr.hadoop.fs.EmrFileSystem not found

이 오류를 방지하려면 다음 클러스터 구성을 사용합니다. 이 구성은 필수 emrfs-hadoop-assembly JAR 파일을 Spark History Server의 classpath에 추가합니다.

[
  {
    "classification": "spark-defaults",
    "configurations": [],
    "properties": {
      "spark.eventLog.dir": "s3://<yourbucket>/",
      "spark.history.fs.logDirectory": "s3://<yourbucket>/"
    }
  },
  {
    "classification": "spark-env",
    "configurations": [
      {
        "classification": "export",
        "properties": {
          "SPARK_DAEMON_CLASSPATH": "$(ls /usr/share/aws/emr/emrfs/lib/emrfs-hadoop-assembly-*)"
        }
      }
    ],
    "properties": {}
  }
]

EMR 6.x 릴리스(6.3까지)에서 emrfs-hadoop-assembly 없이 클러스터를 시작하는 동안 Spark 이벤트 로그 디렉터리를 S3로 설정하면 클러스터가 종료됩니다. 클러스터가 실행된 후에 변경하면 구성 변경 사항이 되돌려질 수 있습니다.

참고: 6.3 및 5.30 이후의 Amazon EMR 릴리스에서는 필수 JAR 파일이 기본적으로 /usr/lib/spark/jars/ 폴더에 추가되므로 이 해결 방법이 필요하지 않습니다.

Spark 이벤트가 S3에 기록될 때 Spark History Server는 불완전한 애플리케이션 목록에 있는 애플리케이션을 표시하지 않는다는 점에 유의하세요. 또한 Spark 컨텍스트가 잘못 종료되면 이벤트 로그가 S3에 제대로 업로드되지 않습니다.

프라이빗 서브넷에 있는 클러스터의 Spark 기록 이벤트를 볼 수 없습니다

클러스터에 프라이빗 서브넷을 사용하는 경우 프라이빗 서브넷에 대한 Amazon Virtual Private Cloud(Amazon VPC) 엔드포인트 정책이 올바른지 확인하세요. VPC 엔드포인트 정책에는 S3의 리소스 목록에 arn:aws:s3:::prod.MyRegion.appinfo.src/*가 포함되어야 합니다. 자세한 내용은 프라이빗 서브넷에 대한 최소 Amazon S3 정책을 참조하세요.

Spark UI에서 전송 중 암호화를 켜면 "NET:ERR_CERT_COMMON_NAME_INVALID" 오류가 발생합니다

이 오류는 브라우저 인증서 유효성 검사 문제로 인해 발생합니다. Mozilla Firefox를 사용하는 경우 위험을 감수하고 인증서를 계속 사용할 수 있는 옵션이 표시됩니다. Google Chrome에서 인증서 검증을 건너뛰도록 Chrome의 경고 페이지에 thisisunsafe를 입력합니다.


AWS 공식
AWS 공식업데이트됨 일 년 전