Spark용 Dataproc Serverless Interactive 세션 만들기

Spark용 Dataproc Serverless Interactive 세션을 사용하여 Jupyter 노트북에서 코드를 작성하고 실행하는 방법을 알아봅니다.

미리보기 출시 제한사항

  • Spark 작업은 제출하는 사용자 ID가 아닌 서비스 계정 ID로 실행됩니다.
  • 결제 측정항목이 Stackdriver에 로깅되지 않습니다(미리보기 버전에서는 Spark용 Dataproc Serverless Interactive가 무료로 제공됨).
  • GPU는 아직 지원되지 않습니다.
  • 세션은 런타임 템플릿의 max session time 속성 설정과 관계없이 24시간 후에 종료됩니다. 이 제한사항은 정식 버전에서 삭제될 예정입니다.

시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  3. Dataproc API 사용 설정

    API 사용 설정

  4. Google Cloud CLI를 설치합니다.
  5. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init
  6. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  7. Dataproc API 사용 설정

    API 사용 설정

  8. Google Cloud CLI를 설치합니다.
  9. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init

Spark용 Dataproc Serverless Interactive 세션 만들기

Spark용 Dataproc Serverless Interactive 세션에서 Jupyter 노트북을 엽니다. Dataproc Serverless Interactive 미리보기 출시 중에는 두 가지 방법으로 세션을 만들 수 있습니다.

  1. Dataproc JupyterLab 플러그인을 사용하여 사용자가 템플릿 설정을 기반으로 세션을 시작하는 데 사용할 수 있는 템플릿을 만듭니다.

  2. Vertex AI Workbench를 사용하여 Google 관리 세션을 만듭니다.

JupyterLab 플러그인

다음 섹션에서는 Dataproc JupyterLab 플러그인을 사용하여 Spark용 Dataproc Serverless Interactive 세션을 만드는 방법을 보여줍니다.

머신 설정

로컬 머신 또는 Compute Engine VM 인스턴스와 같은 Google 서비스에 액세스할 수 있는 머신에서 이 빠른 시작을 설정하고 실행할 수 있습니다.

  1. 머신에 Python 3.8+이 설치되어 있어야 합니다. python.or/downloads에서 Python을 다운로드하고 설치할 수 있습니다.

    1. Python 3.8 이상이 설치되었는지 확인합니다.

      python3 --version
      
  2. 머신에 [JupyterLab 3.6.3+]을 설치합니다.

    pip3 install --upgrade jupyterlab
    
    1. JupyterLab 3.6.3 이상이 설치되었는지 확인합니다.

      pip3 show jupyterlab
      
  3. Dataproc JupyterLab 플러그인을 설치합니다.

    pip3 install dataproc-jupyter-plugin
    
    1. JupyterLab 버전이 4.0.0 이전이면 플러그인 확장 프로그램을 사용 설정합니다.

      jupyter server extension enable dataproc_jupyter_plugin
      
  4. JupyterLab 시작

    jupyter lab
    
    1. Jupyter 런처 페이지가 브라우저에서 열립니다. 여기에 Dataproc 작업 및 세션 섹션이 포함되어 있습니다. 프로젝트에서 실행되는 Jupyter 선택적 구성요소를 사용하는 Dataproc Serverless 노트북 또는 Dataproc 클러스터에 액세스할 수 있는 경우 Dataproc Serverless 노트북Dataproc 클러스터 노트북 섹션도 포함될 수 있습니다.

    2. 기본적으로 Spark용 Dataproc Serverless Interactive 세션은 시작하기 전에에서 gcloud init를 실행할 때 설정한 프로젝트 및 리전에서 실행됩니다. JupyterLab 설정 > Dataproc 설정 페이지에서 세션의 프로젝트 및 리전 설정을 변경할 수 있습니다.

Dataproc Serverless 런타임 템플릿 만들기

Dataproc Serverless 런타임 템플릿(session 템플릿이라고도 함)에는 세션에서 Spark 코드를 실행하기 위한 구성 설정이 포함됩니다. Jupyterlab 또는 gcloud CLI를 사용하여 런타임 템플릿을 만들고 관리할 수 있습니다.

JupyterLab

  1. JupyterLab 런처 페이지의 Dataproc 클러스터 노트북 섹션에서 New runtime template 카드를 클릭합니다.

  2. 런타임 템플릿 양식을 작성합니다.

  3. 표시 이름설명을 지정한 다음 다른 설정을 입력하거나 확인합니다.

    참고:

    • 네트워크 구성: 서브네트워크비공개 Google 액세스가 사용 설정되어 있고 모든 포트에서 서브넷 통신을 허용해야 합니다(Spark용 Dataproc Serverless 네트워크 구성 참조). 시작하기 전에에서 gcloud init를 실행할 때 구성한 리전의 default 네트워크 서브넷이 비공개 Google 액세스에 사용 설정되어 있지 않으면 비공개 Google 액세스에 사용 설정하거나 비공개 Google 액세스가 사용 설정된 리전 서브네트워크가 있는 다른 네트워크를 선택해야 합니다. JupyterLab 설정 > Dataproc 설정 페이지에서 Dataproc Serverless가 사용하는 리전을 변경할 수 있습니다.

    • Metastore: 이 섹션의 필드를 사용하여 세션에 사용할 수 있는 Dataproc Metastore 서비스를 선택할 수 있습니다.

    • 최대 유휴 시간: 세션이 자동으로 종료되기 전의 최대 노트북 유휴 시간입니다. 허용 범위는 10분~336시간(14일)입니다.

    • 최대 세션 시간: 세션이 자동으로 종료되기 전 세션의 최대 수명입니다. 허용 범위는 10분~336시간(14일)입니다.

    • PHS: 사용 가능한 영구 Spark 기록 서버를 선택하여 세션 중 및 세션 후에 세션 로그에 액세스할 수 있습니다.

    • Spark 속성: 각 속성마다 속성 추가를 클릭하여 서버리스 Spark 세션에 설정합니다. 지원되는 Spark 속성과 지원되지 않는 Spark 속성에 대한 설명은 Spark용 Dataproc Serverless 네트워크 구성을 참조하세요.

    • 라벨: 각 라벨마다 라벨 추가를 클릭하여 서버리스 Spark 세션에 설정합니다.

  4. Dataproc 설정 페이지에 런타임 템플릿이 나열됩니다. 나열된 각 템플릿의 작업 메뉴에서 목록의 템플릿을 삭제할 수 있습니다.

  5. 저장을 클릭합니다.

  6. 런처 페이지를 열고 새로고침하여 JupyterLab 런처에서 저장된 노트북 템플릿 카드를 봅니다.

gcloud

  1. 런타임 템플릿 구성으로 YAML 파일을 만듭니다.

    예:

    environmentConfig:
      executionConfig:
        networkUri: default
    jupyterSession:
      kernel: PYTHON
      displayName: Team A
    labels:
      purpose: testing
    description: Team A Development Environment
    

    시작하기 전에에서 gcloud init를 실행할 때 구성한 리전의 default 네트워크 서브넷이 비공개 Google 액세스에 사용 설정되어 있지 않으면 비공개 Google 액세스에 사용 설정하거나 비공개 Google 액세스가 사용 설정된 리전 서브네트워크가 있는 다른 네트워크를 선택해야 합니다. JupyterLab 설정 > Dataproc 설정 페이지에서 Dataproc Serverless가 사용하는 리전을 변경할 수 있습니다.

  2. 로컬 또는 Cloud Shell에서 다음 gcloud beta dataproc session-templates import 명령어를 실행하여 YAML 파일로 세션(런타임) 템플릿을 만듭니다.

    gcloud beta dataproc session-templates import TEMPLATE_ID \
        --source=YAML_FILE \
        --project=PROJECT_ID \
        --location=REGION
    

메모장 열기

JupyterLab 런처 페이지의 Dataproc Serverless 노트북 섹션에는 서버리스 런타임 템플릿으로 지정된 런타임 커널에 매핑되는 노트북 템플릿 카드가 표시됩니다.

  1. 런타임 커널 카드를 클릭하여 세션을 만들고 노트북을 엽니다. 세션 생성이 완료되고 커널을 사용할 준비가 되면 커널 상태가 Unknown에서 Idle로 변경되고 노트북이 열립니다.

    세션 상태를 보려면 JupyterLab 런처 페이지의 Dataproc 작업 및 세션 섹션에서 서버리스 카드를 클릭한 후 세션 탭을 클릭합니다. 세션이 완전히 프로비저닝되고 코드를 실행할 준비가 되면 세션 상태가 Creating에서 Active로 변경됩니다.

  2. 노트북에 코드를 작성하고 테스트합니다.

    1. PySpark 노트북 셀에 다음 PySpark Pi estimation 코드를 복사하여 붙여넣은 후 Shift+Return을 눌러 코드를 실행합니다.

      import random
          
      def inside(p):
          x, y = random.random(), random.random()
          return x*x + y*y < 1
          
      count = sc.parallelize(range(0, 10000)) .filter(inside).count()
      print("Pi is roughly %f" % (4.0 * count / 10000))
      

      노트북 결과:

  3. 노트북을 만들고 사용한 후 커널 탭에서 커널 종료를 클릭하여 노트북 세션을 종료할 수 있습니다.

    • 세션을 종료하지 않으면 Dataproc에서 세션 유휴 타이머가 만료될 때 세션을 종료합니다. 런타임 템플릿 구성에서 세션 유휴 시간을 구성할 수 있습니다. 기본 세션 유휴 시간은 1시간입니다.

Vertex AI

이 섹션에서는 Vertex AI Workbench를 사용하여 관리형 세션을 만든 후 세션에서 PySpark 노트북을 열고 사용하는 방법을 보여줍니다.

  1. Google Cloud 콘솔에서 Vertex AI Workbench 페이지로 이동합니다. 새 노트북을 클릭하여 새 관리형 노트북을 엽니다.
  2. 관리형 노트북 만들기 페이지의 필드를 작성합니다.
    1. 노트북 이름: 노트북 이름을 입력합니다.
    2. 리전: 목록에서 리전을 선택합니다. 나열된 리전에서 Vertex AI 관리형 노트북을 사용할 수 있습니다.
    3. 권한: Single user only를 선택합니다.
    4. 사용자 이메일: 이메일 주소를 입력합니다.
    5. 만들기를 클릭하여 노트북을 만들고 Vertex AI Workbench 페이지로 돌아갑니다.
  3. 노트북이 Vertex AI Workbench 페이지에 나열됩니다. 이 링크가 사용 설정된 후 노트북 행에서 JupyterLab 열기를 클릭합니다.
  4. 표시되는 관리형 노트북 인증 대화상자에서 인증을 클릭하여 Vertex AI Workbench가 데이터에 액세스하고 관리형 노트북을 인증할 수 있도록 허용한 후 내 계정을 선택하고 JupyterLab을 열도록 허용합니다.
  5. 노트북의 런처 탭에서 서버리스 Spark를 선택하여 세션을 만듭니다.
  6. 서버리스 Spark 세션 만들기 페이지를 작성합니다.
    1. 세션 이름: 세션 이름을 입력합니다. 세션당 하나의 Jupyter 노트북을 지원합니다.
    2. 언어: PySpark를 선택합니다.
    3. 실행 구성: Compute Engine 기본 서비스 계정을 사용하려면 서비스 계정 항목을 비워 둡니다.
    4. 네트워크 구성:
      1. 이 프로젝트의 네트워크를 클릭합니다. 세션을 실행하는 VPC 서브네트워크가 Spark용 Dataproc Serverless 네트워크 구성에 나온 요구사항을 충족해야 합니다.
      2. 목록에서 프로젝트의 네트워크 및 서브네트워크를 선택합니다. 이 목록에는 비공개 Google 액세스에 사용 설정된 선택한 네트워크의 서브네트워크가 표시됩니다.
    5. 제출:을 클릭하여 세션을 시작합니다. 활동 로그에 세션 초기화 진행 상황이 표시됩니다.
      Google Cloud 콘솔의 Dataproc 세션 페이지에서 세션 상태를 모니터링할 수도 있습니다.
  7. 세션 초기화가 완료되면 Jupyter.ipynb 노트북 탭이 JupyterLab에서 열립니다. PySpark 노트북 셀에 다음 PySpark Pi estimation 코드를 복사하여 붙여넣은 후 Shift+Return을 눌러 코드를 실행합니다.
    import random
        
    def inside(p):
        x, y = random.random(), random.random()
        return x*x + y*y < 1
        
    count = sc.parallelize(range(0, 10000)) .filter(inside).count()
    print("Pi is roughly %f" % (4.0 * count / 10000))
    
  8. Untitled.ipynb 노트북 탭을 닫습니다. Dataproc Serverless가 JupyterLab에서 노트북을 닫은 후 세션을 감지하고 종료하려고 시도합니다.