서버리스 일괄 및 대화형 노트북 세션에 Dataproc JupyterLab 플러그인 사용

이 문서에서는 로컬 머신 또는 Compute Engine VM 인스턴스와 같은 Google 서비스에 액세스 권한이 있는 머신 또는 VM에 Dataproc JupyterLab 플러그인을 설치하고 사용하는 방법을 설명합니다. 또한 Spark 노트북 코드를 개발하고 deploy하는 방법도 설명합니다.

Dataproc JupyterLab 플러그인을 설치하면 다음 작업을 수행할 수 있습니다.

  • Spark용 Dataproc Serverless Interactive 노트북 세션 출시
  • Dataproc Serverless 일괄 작업 제출

Dataproc Serverless 제한사항 및 고려사항

  • Spark 작업은 제출하는 사용자 ID가 아닌 서비스 계정 ID로 실행됩니다.

시작하기 전에

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Enable the Dataproc API.

    Enable the API

  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:

    gcloud init
  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Enable the Dataproc API.

    Enable the API

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. Dataproc 서버리스 대화형 세션을 실행할 리전 VPC 서브넷에 비공개 Google 액세스가 사용 설정되어 있는지 확인합니다. 자세한 내용은 Dataproc Serverless 런타임 템플릿 만들기를 참고하세요.

Dataproc JupyterLab 플러그인 설치

로컬 머신 또는 Compute Engine VM 인스턴스와 같이 Google 서비스에 액세스할 수 있는 머신 또는 VM에 Dataproc JupyterLab 플러그인을 설치하고 사용할 수 있습니다.

플러그인을 설치하려면 다음 단계를 따르세요.

  1. python.org/downloads에서 Python 버전 3.8 이상을 다운로드하여 설치합니다.

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

      python3 --version
  2. 컴퓨터에 JupyterLab 3.6.3+를 설치합니다.

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

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

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

       jupyter server extension enable dataproc_jupyter_plugin
       ```
  4. JupyterLab 시작

    jupyter lab
    1. JupyterLab 런처 페이지가 브라우저에 열립니다. 여기에 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 Serverless 노트북 섹션에서 New runtime template 카드를 클릭합니다.

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

  3. Specify a 디스플레이 이름설명을 지정한 후에 다른 설정을 입력하거나 확정합니다.

    참고:

    • 네트워크 구성: 서브네트워크비공개 Google 액세스가 사용 설정되어 있고 모든 포트에서 서브넷 통신을 허용해야 합니다(Spark용 Dataproc Serverless 네트워크 구성 참조).

      시작하기 전에gcloud init을 실행할 때 구성한 리전의 default 네트워크 서브넷이 비공개 Google 액세스에 사용 설정되어 있지 않으면 다음을 수행하세요.

      • 비공개 Google 액세스 사용 설정 또는
      • 비공개 Google 액세스가 사용 설정된 리전별 서브네트워크가 있는 다른 네트워크를 선택하세요. JupyterLab 설정 > Dataproc 설정 페이지에서 Dataproc Serverless가 사용하는 리전을 변경할 수 있습니다.
    • Metastore: 세션에서 Dataproc Metastore 서비스를 사용하려면 메타스토어 프로젝트 ID, 리전, 서비스를 선택합니다.

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

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

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

    • Spark 속성: 각 속성마다 속성 추가를 클릭하여 서버리스 Spark 세션에 설정합니다. Spark 런타임, 리소스, 자동 확장 속성을 포함하여 지원되거나 지원되지 않는 Spark 속성 목록은 Spark 속성을 참조하세요.

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

  4. 설정 > Dataproc 설정 페이지에서 런타임 템플릿을 열람합니다. 있습니다.

    • 템플릿의 작업 메뉴에서 템플릿을 삭제할 수 있습니다.
  5. 저장을 클릭합니다.

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

gcloud

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

    간단한 YAML

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

    복잡한 YAML

    environmentConfig:
      executionConfig:
        serviceAccount: sa1
        # Choose either networkUri or subnetworkUri
        networkUri: default
        subnetworkUri: subnet
        networkTags:
         - tag1
        kmsKey: key1
        idleTtl: 3600s
        ttl: 14400s
        stagingBucket: staging-bucket
      peripheralsConfig:
        metastoreService: projects/my-project-id/locations/us-central1/services/my-metastore-id
        sparkHistoryServerConfig:
          dataprocCluster: projects/my-project-id/regions/us-central1/clusters/my-cluster-id
    jupyterSession:
      kernel: PYTHON
      displayName: Team A
    labels:
      purpose: testing
    runtimeConfig:
      version: "1.1"
      containerImage: gcr.io/my-project-id/my-image:1.0.1
      properties:
        "p1": "v1"
    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
    

노트북 실행 및 관리

Dataproc JupyterLab 플러그인을 설치한 후 JupyterLab 런처 페이지에서 템플릿 카드를 클릭하여 다음 작업을 할 수 있습니다.

Dataproc Serverless에서 Jupyter 노트북 실행

JupyterLab 런처 페이지의 Dataproc Serverless 노트북 섹션에는 Dataproc Serverless 런타임 템플릿에 매핑되는 노트북 템플릿 카드가 표시됩니다(Dataproc Serverless 런타임 템플릿 만들기 참조).

  1. 카드를 클릭하여 Dataproc Serverless 세션을 만들고 노트북을 실행합니다. 세션 생성이 완료되고 노트북 커널을 사용할 준비가 되면 커널 상태가 Unknown에서 Idle로 변경됩니다.

  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시간입니다.

Compute Engine 기반 Dataproc 클러스터에서 노트북 실행

Compute Engine 기반 Dataproc Jupyter 클러스터를 만든 경우 JupyterLab 런처 페이지에 커널 카드가 사전 설치된 Dataproc 클러스터 노트북 섹션이 포함되어 있습니다.

Compute Engine 기반 Dataproc 클러스터에서 Jupyter 노트북을 실행하려면 다음 단계를 따르세요.

  1. Dataproc 클러스터 노트북 섹션에서 카드를 클릭합니다.

  2. 커널 상태가 Unknown에서 Idle로 변경되면 메모장 코드 작성 및 실행을 시작할 수 있습니다.

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

Cloud Storage에서 입력 및 출력 파일 관리

탐색적 데이터를 분석하고 ML 모델을 빌드할 때는 파일 기반 입력과 출력이 종종 필요합니다. Dataproc Serverless는 Cloud Storage의 이러한 파일에 액세스합니다.

  • Cloud Storage 브라우저에 액세스하려면 JupyterLab 런처 페이지 사이드바에서 Cloud Storage 브라우저 아이콘을 클릭한 다음 폴더를 더블클릭하여 콘텐츠를 확인합니다.

  • Jupyter에서 지원하는 파일 형식을 클릭하여 열고 수정할 수 있습니다. 파일에 대한 변경 사항을 저장하면 Cloud Storage에 기록됩니다.

  • 새 Cloud Storage 폴더를 만들려면 새 폴더 아이콘을 클릭한 다음 폴더 이름을 입력하세요.

  • Cloud Storage 버킷 또는 폴더에 파일을 업로드하려면 업로드 아이콘을 클릭한 다음 업로드할 파일을 선택합니다.

Spark 노트북 코드 개발

Dataproc JupyterLab 플러그인을 설치한 후 JupyterLab 런처 페이지에서 Jupyter 노트북을 실행하여 애플리케이션 코드를 개발할 수 있습니다.

PySpark 및 Python 코드 개발

Dataproc Serverless 및 Compute Engine 기반 Dataproc 클러스터는 PySpark 커널을 지원합니다. Compute Engine 기반 Dataproc은 Python 커널도 지원합니다.

SQL 코드 개발

PySpark 노트북을 열어 SQL 코드를 작성하고 실행하려면 JupyterLab 런처 페이지의 Dataproc Serverless 노트북 또는 Dataproc 클러스터 노트북 섹션에서 PySpark 커널 카드를 클릭합니다.

Spark SQL 매직: Dataproc Serverless 노트북을 실행하는 PySpark 커널에는 Spark SQL 매직이 미리 로드되어 있으므로 spark.sql('SQL STATEMENT').show()를 사용하여 SQL 문을 래핑하는 대신에 셀의 상단에 %%sparksql magic을 입력한 다음 셀의 SQL 문을 입력합니다.

BigQuery SQL: BigQuery Spark 커넥터를 사용하면 노트북 코드가 BigQuery 테이블에서 데이터를 로드하고, Spark에서 분석을 수행한 다음 결과를 BigQuery 테이블에 쓸 수 있습니다.

Dataproc Serverless 2.1 런타임에는 BigQuery Spark 커넥터가 포함되어 있습니다. Dataproc Serverless 2.0 또는 이전 런타임을 사용하여 Dataproc Serverless 노트북을 실행하는 경우 Dataproc Serverless 런타임 템플릿에 다음 Spark 속성을 추가하여 Spark BigQuery 커넥터를 설치할 수 있습니다.

spark.jars: gs://spark-lib/bigquery/spark-bigquery-with-dependencies_2.12-0.25.2.jar

Scala 코드 개발

이미지 버전 2.0+, 2.1+ 이상으로 생성된 Compute Engine 기반 Dataproc 클러스터에는 Spark에 대한 대화형 액세스를 제공하는 Jupyter 노트북 플랫폼용 Scala 커널인 Apache Toree가 포함되어 있습니다.

  • JupyterLab 런처 페이지의 Dataproc 클러스터 노트북 섹션에서 Apache Toree 카드를 클릭하여 Scala 코드 개발을 위한 노트북을 엽니다.

    그림 1. JupyterLab 런처 페이지의 Apache Toree 커널 카드

메타데이터 탐색기

만약Dataproc Metastore(DPMS) 인스턴스가 Dataproc Serverless 런타임 템플릿 또는 Compute Engine 기반 Dataproc 클러스터에 연결된 경우 노트북이 열리면 DPMS 인스턴스 스키마가 JupyterLab 메타데이터 탐색기에 표시됩니다. DPMS는 Google Cloud의 완전 관리형, 수평 확장 가능한 Hive Metastore(HMS) 서비스입니다.

메타데이터 탐색기에서 HMS 메타데이터를 보려면 다음 단계를 따르세요.

JupyterLab 메타데이터 탐색기를 열려면 사이드바에서 아이콘을 클릭합니다.

메타데이터 탐색기에서 데이터베이스, 테이블 또는 열을 검색할 수 있습니다. 데이터베이스, 테이블 또는 열 이름을 클릭하여 연결된 메타데이터를 확인합니다.

코드 배포

Dataproc JupyterLab 플러그인을 설치한 후 JupyterLab을 사용하여 다음 작업을 할 수 있습니다.

  • Dataproc Serverless 인프라에서 노트북 코드 실행

  • 서버리스 Dataproc 인프라 또는 Compute Engine 기반 Dataproc 클러스터에 일괄 작업을 제출합니다.

Dataproc Serverless에서 노트북 코드 실행

  • 노트북 셀에서 코드를 실행하려면 Run을 클릭하거나 Shift-Return 키를 눌러 노트북 셀에서 코드를 실행합니다.

  • 하나 이상의 노트북 셀에서 코드를 실행하려면 Run(실행) 메뉴를 사용합니다.

Dataproc Serverless에 일괄 작업 제출

  • JupyterLab 런처 페이지의 Dataproc 작업 및 세션 섹션에서 서버리스 카드를 클릭합니다.

  • 일괄 처리 탭을 클릭한 다음 일괄 처리 만들기를 클릭하고 일괄 처리 정보 필드를 입력합니다.

  • 제출을 클릭하여 작업을 제출합니다.

Compute Engine 기반 Dataproc 클러스터에 일괄 작업 제출

  • JupyterLab 런처 페이지의 Dataproc 작업 및 세션 섹션에서 클러스터 카드를 클릭합니다.

  • 작업 탭을 클릭한 다음 작업 제출을 클릭합니다.

  • 클러스터를 선택한 후 작업 필드를 입력합니다.

  • 제출을 클릭하여 작업을 제출합니다.

리소스 보기 및 관리

Dataproc JupyterLab 플러그인을 설치한 후 JupyterLab 런처 페이지의 Dataproc 작업 및 세션 섹션에서 Dataproc Serverless와 Compute Engine 기반 Dataproc을 보고 관리할 수 있습니다.

Dataproc 작업 및 세션 섹션을 클릭하여 클러스터서버리스 카드를 표시합니다.

Dataproc Serverless 세션을 보고 관리하려면 다음 안내를 따르세요.

  1. Serverless 카드를 클릭합니다.
  2. 세션 탭을 클릭한 다음 세션 ID를 클릭하여 세션 세부정보 페이지를 연 후 세션 속성을 보고 로그 탐색기에서 Google Cloud 로그를 확인하고 세션을 종료합니다. 참고: 각 Dataproc Serverless 노트북을 실행하기 위해 고유한 Dataproc Serverless 세션이 생성됩니다.

Dataproc Serverless 배치를 보고 관리하려면 다음 안내를 따르세요.

  1. 현재 프로젝트와 리전의 배치 탭을 클릭하여 Dataproc Serverless 배치 목록을 봅니다. 일괄 ID를 클릭하여 일괄 세부정보를 확인합니다.

Compute Engine 기반 Dataproc 클러스터를 보고 관리하려면 다음 안내를 따르세요.

  1. 클러스터 카드를 클릭합니다. 현재 프로젝트와 리전의 활성 Compute Engine 기반 Dataproc 클러스터를 나열하려면 클러스터 탭을 선택합니다. 작업 열의 아이콘을 클릭하여 클러스터를 시작, 중지 또는 다시 시작할 수 있습니다. 클러스터 이름을 클릭하여 클러스터 세부정보를 확인합니다. 작업 열의 아이콘을 클릭하여 작업을 클론, 중지 또는 삭제할 수 있습니다.

Compute Engine 기반 Dataproc 작업을 보고 관리하려면 다음 안내를 따르세요.

  1. 작업 카드를 클릭하여 현재 프로젝트의 작업 목록을 확인하세요. 세부정보를 보려면 작업 ID를 클릭하세요.