Hadoop 워크로드에 계층적 네임스페이스가 사용 설정된 버킷 사용

이 페이지에서는 Hadoop 워크로드에 계층적 네임스페이스가 사용 설정된 버킷을 사용하는 방법을 설명합니다.

개요

계층적 네임스페이스가 있는 Cloud Storage 버킷을 사용하는 경우 Hadoop, Spark, Hive와 같은 워크로드에 폴더 이름 바꾸기 작업을 사용하도록 Cloud Storage 커넥터를 구성할 수 있습니다.

계층적 네임스페이스가 없는 버킷에서는 Hadoop, Spark, Hive의 이름 변경 작업에 여러 개의 객체 복사 및 삭제 작업이 포함되어 성능과 일관성에 영향을 미칩니다. Cloud Storage 커넥터를 사용하여 폴더 이름을 변경하면 객체가 많은 폴더를 처리할 때 성능을 최적화하고 일관성을 보장할 수 있습니다.

시작하기 전에

계층적 네임스페이스 버킷의 기능을 사용하려면 다음 Cloud Storage 커넥터 버전을 사용하세요.

  • 2.2.23 이상(버전 2.x.x를 사용하는 경우)
  • 3.0.1 이상(버전 3.x.x를 사용하는 경우)

이전 커넥터 버전(3.0.0 및 2.2.23 이전)에는 제한사항이 있습니다. 제한사항에 관한 자세한 내용은 Cloud Storage 커넥터 버전 3.0.0 또는 2.2.23보다 이전 버전과의 호환성을 참조하세요.

클러스터에서 Cloud Storage 커넥터 사용 설정

이 섹션에서는 Dataproc 클러스터 및 자체 관리 Hadoop 클러스터에서 Cloud Storage 커넥터를 사용 설정하는 방법을 설명합니다.

Dataproc

Google Cloud CLI를 사용하여 Dataproc 클러스터를 만들고 Cloud Storage 커넥터가 폴더 작업을 실행하도록 사용 설정할 수 있습니다.

  1. 다음 명령어를 사용하여 Dataproc 클러스터를 만듭니다.

      gcloud dataproc clusters create CLUSTER_NAME
      --properties=core:fs.gs.hierarchical.namespace.folders.enable=true,
      core:fs.gs.http.read-timeout=30000
      

    각 항목의 의미는 다음과 같습니다.

    • CLUSTER_NAME은 클러스터의 이름입니다. 예를 들면 my-cluster입니다.
    • fs.gs.hierarchical.namespace.folders.enable은 버킷에서 계층적 네임스페이스를 사용 설정하는 데 사용됩니다.
    • fs.gs.http.read-timeout은 설정된 연결에서 데이터를 읽는 데 허용되는 최대 시간(밀리초)입니다. 이 설정은 선택사항입니다.

자체 관리형 Hadoop

자체 관리형 Hadoop 클러스터에서 Cloud Storage 커넥터를 사용 설정하여 폴더 작업을 실행할 수 있습니다.

  1. core-site.xml 구성 파일에 다음을 추가합니다.

        <property>
          <name>fs.gs.hierarchical.namespace.folders.enable</name>
          <value>true</value>
        </property>
        <property>
          <name>fs.gs.http.read-timeout</name>
          <value>30000</value>
        </property>
      

    각 항목의 의미는 다음과 같습니다.

    • fs.gs.hierarchical.namespace.folders.enable은 버킷에서 계층적 네임스페이스를 사용 설정하는 데 사용됩니다.
    • fs.gs.http.read-timeout은 설정된 연결에서 데이터를 읽는 데 허용되는 최대 시간(밀리초)입니다. 이 설정은 선택사항입니다.

Cloud Storage 커넥터 버전 3.0.0 또는 2.2.23 이전 버전과의 호환성

Cloud Storage 커넥터 버전 3.0.0 또는 2.2.23 이전 버전을 사용하거나 계층형 네임스페이스의 폴더 작업을 사용 중지하면 다음과 같은 제한사항이 발생할 수 있습니다.

  • 비효율적인 폴더 이름 변경: Hadoop에서 폴더 이름 변경 작업은 객체 수준 복사 및 삭제 작업을 사용하여 수행되며, 이는 전용 rename folder 작업보다 느리고 비효율적입니다.

  • 빈 폴더 누적: 폴더 리소스가 자동으로 삭제되지 않아 버킷에 빈 폴더가 누적됩니다. 빈 폴더가 쌓이면 다음과 같은 영향이 발생할 수 있습니다.

    • 명시적으로 삭제하지 않으면 스토리지 비용이 증가합니다.
    • 목록 작업 속도가 느려지고 목록 작업 시간 초과 위험이 증가합니다.

  • 호환성 문제: 이전 커넥터 버전과 최신 커넥터 버전을 혼합하여 사용하거나 폴더 작업을 사용 설정 및 중지하면 폴더 이름을 바꿀 때 호환성 문제가 발생할 수 있습니다. 커넥터 버전을 조합하여 사용하는 다음 시나리오를 고려해 보세요.

    1. 2.2.23 이전 버전의 Cloud Storage 커넥터를 사용하여 다음 태스크를 실행합니다.

      1. foo/ 폴더 아래에 객체를 씁니다.
      2. 폴더 이름을 foo/에서 bar/로 바꿉니다. 이름 바꾸기 작업은 foo/ 아래의 객체를 복사하고 삭제하지만 빈 foo/ 폴더는 삭제하지 않습니다.
    2. 폴더 작업 설정이 사용 설정된 Cloud Storage 커넥터 버전 2.2.23을 사용하여 폴더 bar/foo/로 바꿉니다.

    폴더 작업이 사용 설정된 커넥터 버전 2.2.23은 기존 foo/ 폴더를 감지하여 이름 바꾸기 작업이 실패합니다. 이전 커넥터 버전에서는 폴더 작업이 사용 중지되어 foo/ 폴더가 삭제되지 않았습니다.

다음 단계

직접 사용해 보기

Google Cloud를 처음 사용하는 경우 계정을 만들어 실제 시나리오에서 Cloud Storage의 성능을 평가할 수 있습니다. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.

Cloud Storage 무료로 사용해 보기