온프레미스에서 Dataproc으로 Hadoop 작업 마이그레이션

이 가이드에서는 Dataproc을 사용하여 Apache Hadoop 작업을 Google Cloud로 이전하는 방법을 설명합니다.

이 가이드는 온프레미스 Hadoop에서 이전하는 방법을 설명하는 3부로 된 가이드 중 세 번째입니다.

Google Cloud에서 Hadoop 작업 실행

Dataproc을 사용하여 Google Cloud에서 대부분의 Hadoop 작업을 실행할 수 있습니다. 다음 목록은 기본 절차를 요약한 것입니다.

  1. Cloud Storage에 저장된 영구 데이터를 가리키도록 작업을 업데이트합니다.

  2. 작업을 실행할 Dataproc 클러스터를 만듭니다. 이런 종류의 일시적, 일회용 클러스터를 임시 클러스터라고 합니다.

  3. 임시 클러스터에 작업을 제출합니다.

  4. 원하는 경우 Cloud Logging 또는 Cloud Storage를 사용하여 작업 로그를 모니터링합니다. 로그는 클러스터를 만들 때 지정한 스테이징 버킷을 사용하여 기본적으로 Cloud Storage에 캡처됩니다.

  5. Cloud Storage에서 작업 출력을 확인합니다.

  6. 작업이 완료되면 클러스터를 삭제합니다.

지원되는 작업

Dataproc은 Hadoop을 실행하므로 많은 종류의 작업이 자동으로 지원됩니다. Dataproc을 사용하여 클러스터를 만들면 기본적으로 다음과 같은 기술이 구성됩니다.

  • Hadoop
  • Spark
  • Hive
  • Pig

Dataproc은 서로 다른 버전의 오픈소스 소프트웨어가 사전 설치된 여러 버전의 머신 이미지를 제공합니다. 이미지에 사전 구성된 소프트웨어로 많은 작업을 실행할 수 있습니다. 일부 작업의 경우 다른 패키지를 설치해야 할 수도 있습니다. Dataproc은 클러스터의 노드에서 실행 중인 소프트웨어를 맞춤설정할 수 있는 초기화 작업이라는 메커니즘을 제공합니다. 초기화 작업을 사용하여 모든 노드가 생성될 때마다 실행되는 스크립트를 작성할 수 있습니다.

데이터 위치(URI) 업데이트

Dataproc 클러스터 노드에 사전 설치된 Cloud Storage 커넥터를 사용하면 작업에서 Cloud Storage를 Hadoop 호환 파일 시스템(HCFS)으로 사용할 수 있습니다. 커넥터를 활용할 수 있도록 Cloud Storage에 데이터를 저장합니다. 그러면 작업을 변경해야 하는 경우 hdfs://gs://로 바꾸어 URI를 업데이트하기만 하면 됩니다.

이전을 진행하면서 데이터를 재구성하는 경우, 새 데이터 구성에 맞춰 작업을 쉽게 업데이트할 수 있도록 모든 소스 및 대상 경로를 기록합니다.

클라우드 내 영구 클러스터의 HDFS에 데이터를 저장할 수는 있지만 권장하지는 않습니다. 데이터 이전 가이드에서 데이터 이전에 대해 자세히 알아볼 수 있습니다.

작업을 실행하도록 클러스터 구성

Google Cloud에서 작업을 실행할 때 권장되는 방법은 필요할 때 임시 클러스터를 만들고 작업이 완료되면 클러스터를 삭제하는 것입니다. 이 방식을 활용하면 더욱 유연하게 클러스터를 구성할 수 있습니다. 작업마다 다른 구성을 사용하거나 작업 그룹을 제공하는 몇 가지 표준 클러스터 구성을 만들 수 있습니다.

Dataproc 문서에서 클러스터를 만드는 기본 단계를 확인할 수 있습니다. 이 섹션의 나머지 부분에서는 진행 방법을 결정하는 데 도움이 되는 중요한 클러스터 구성 고려사항을 설명합니다.

클러스터 크기 조정

새 클러스터를 정의하기 위해 가장 먼저 해야 할 일은 클러스터에 사용할 가상 하드웨어를 결정하는 것입니다. 각 작업에는 특정 요구사항과 특이성이 있기 때문에 완벽한 클러스터 구성을 계산하는 것이 어려울 수 있습니다. 다양한 구성으로 실험하여 작업에 알맞은 설정을 찾으세요.

클러스터를 설정할 때 최소한 다음을 결정해야 합니다.

  • 사용할 노드 수
  • 기본(마스터) 노드에 사용할 가상 머신 유형
  • 작업자 노드에 사용할 가상 머신 유형

노드 유형은 사용 가능한 가상 CPU 수와 메모리양으로 정의됩니다. 노드 유형의 정의는 Compute Engine 머신 유형의 정의와 일치합니다. 일반적으로 이전해서 가져올 온프레미스 노드의 구성에 해당하는 노드 유형을 찾을 수 있으므로 이점을 고려해 온프레미스 클러스터와 유사한 클러스터를 설정할 수 있습니다. 이때 가장 좋은 접근 방식은 구성을 조정하고 작업 실행의 영향을 모니터링하는 것입니다. 작업 구성을 최적화하다 보면 시스템의 다른 작업은 어떻게 구성해야 하는지 파악하게 됩니다.

필요에 따라 클러스터를 확장할 수 있으므로 처음부터 사양을 완벽하게 정의하지 않아도 됩니다.

기본 디스크 옵션 선택

작업자 노드가 사용하는 기본 디스크의 크기를 지정할 수 있습니다. 클러스터에 적합한 옵션은 실행하려는 작업의 유형에 따라 다릅니다. 작업의 기본 디스크 요구사항이 특이한 경우가 아니라면 기본값을 사용하여 결과를 평가합니다.

작업의 디스크 사용량이 많고 개별 노드에서 느리게 실행되는 경우 기본 디스크 공간을 추가할 수 있습니다. 특히 개별 읽기 및 쓰기 작업이 많은 디스크 집약적인 작업의 경우, 로컬 SSD를 추가하여 작업을 개선할 수 있습니다. 로컬 실행에 필요한 공간을 포함할 만큼 충분한 SSD를 추가합니다. 추가되는 모든 SSD에 걸쳐 로컬 실행 디렉토리가 분산됩니다.

선점형 작업자 노드 사용

선점형 작업자 노드를 클러스터에 추가하여 저렴하게 작업 처리 능력을 활용할 수 있습니다. 이러한 노드는 선점형 가상 머신을 사용합니다.

선점형 노드를 사용하기로 결정하기 전에 선점형 노드는 기본적으로 안정적이지 않다는 점에 유의하세요. Dataproc은 선점을 원활하게 처리하려고 시도하지만 노드가 너무 많이 손실되면 실패할 수 있습니다. 내결함성이 있거나 우선순위가 낮아 가끔 작업이 실패해도 비즈니스가 중단되지 않는 작업에만 선점형 노드를 사용하세요.

선점형 작업자 노드를 사용하려면 일반 노드와 선점형 노드의 비율을 고려하세요. 최상의 결과를 얻는 보편적인 공식은 없지만 일반적으로 표준 노드에 비해 사용하는 선점 노드가 많을수록 작업을 완료하는 데 노드가 충분하지 않을 가능성이 커집니다. 여러 가지 비율로 실험하고 결과를 분석하여 작업에 최적인 선점형 노드와 일반 노드의 비율을 결정할 수 있습니다.

선점형 작업자 노드에서는 SSD를 사용할 수 없습니다. 전용 노드에서 SSD를 사용하는 경우, 사용되는 모든 선점형 작업자 노드는 전용 노드의 다른 모든 구성과 일치하지만 SSD는 사용하지 않습니다.

작업 실행

Dataproc은 작업을 시작하는 데 사용할 수 있는 여러 인터페이스를 제공하며 모두 제품 문서에 설명되어 있습니다. 이 섹션에서는 Google Cloud에서 Hadoop 작업을 실행할 때 고려해야 할 옵션과 작업에 대해 설명합니다.

작업 출력 얻기

Dataproc에서 실행하는 작업에는 일반적으로 여러 가지 유형의 출력이 있습니다. 예를 들어 Cloud Storage 버킷의 파일이나 BigQuery와 같은 다른 클라우드 제품에 직접 여러 가지 출력을 쓸 수 있습니다. 또한 Dataproc은 로그 및 콘솔 출력을 수집하여 작업을 실행하는 클러스터와 연결된 Cloud Storage 스테이징 버킷에 저장합니다.

작업을 다시 시작할 수 있도록 구성하여 사용

작업을 제출할 때 문제가 발생하면 자동으로 다시 시작하도록 구성할 수 있습니다. 이 옵션은 매우 가변적인 리소스 또는 환경에 의존하는 작업에 유용합니다. 예를 들어 안정성에 문제가 발생할 수 있는 채널(예: 공용 인터넷)에서 데이터를 스트리밍하는 작업은 시간 제한 오류 및 유사한 네트워킹 문제로 인해 무작위로 실패하는 경향이 특히 심합니다. 작업이 실패하더라도 잠시 후 성공적으로 실행될 것으로 생각한다면 작업을 다시 시작할 수 있도록 구성하여 실행하세요.

클러스터 확장

Dataproc을 사용하면 작업이 실행되는 동안에도 언제든지 클러스터의 노드를 쉽게 추가하거나 제거할 수 있습니다. Dataproc 문서에는 클러스터 확장에 대한 자세한 지침이 포함되어 있습니다. 확장에는 노드를 단계적으로 해제하는 옵션이 포함됩니다. 이 옵션을 사용하면 삭제할 노드에 진행 중인 처리를 완료할 시간이 주어집니다.

시간 경과에 따른 작업 관리

개별 작업 처리는 일반적으로 복잡하지는 않지만 Hadoop 시스템에는 수십 또는 수백 개의 작업이 포함될 수 있으며 시간이 경과함에 따라 로그, 출력 파일, 각 작업과 관련된 기타 정보의 수가 급증하여 개별 정보를 찾기가 어려울 수 있습니다. 이에 대비해 몇 가지 방법으로 나중에 작업을 보다 쉽게 관리할 수 있습니다.

  • 작업, 클러스터, 기타 리소스를 식별에 커스텀 라벨을 사용합니다. 라벨을 사용하면 나중에 필터링을 통해 리소스를 쉽게 찾을 수 있습니다. Dataproc은 표준 Google Cloud 라벨 시스템을 사용하여 커스텀 라벨을 지원하므로 리소스 라벨을 지정하면 다른 GCP 서비스에서 해당 리소스를 관리하는 데 도움이 됩니다.
  • 다양한 유형의 작업을 분리하여 보관할 수 있도록 Cloud Storage 버킷을 구성합니다. 비즈니스 구조 또는 기능 영역에 해당하는 버킷으로 데이터를 그룹화하면 권한을 더욱 쉽게 관리할 수 있습니다.
  • 개별 작업 또는 밀접하게 관련된 작업 그룹에 대한 클러스터를 정의합니다. 범위가 명확한 작업에 대해서만 각 구성을 사용하면 임시 클러스터의 설정을 업데이트하기가 훨씬 쉽습니다.

다음 단계