시작하기 전에
아직 설정하지 않은 경우 Google Cloud 프로젝트와 Cloud Storage 버킷 2개를 설정합니다.
프로젝트 설정
- Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
-
Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
-
API Dataproc, Compute Engine, Cloud Storage, and Cloud Functions 사용 설정
- Google Cloud CLI를 설치합니다.
-
gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.
gcloud init
-
Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
-
API Dataproc, Compute Engine, Cloud Storage, and Cloud Functions 사용 설정
- Google Cloud CLI를 설치합니다.
-
gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.
gcloud init
프로젝트에서 두 개(2)의 Cloud Storage 버킷 만들기 또는 사용
프로젝트에는 Cloud Storage 버킷 두 개가 필요합니다. 하나는 입력 파일용, 다른 하나는 출력용 파일입니다.
- Google Cloud Console에서 Cloud Storage 버킷 페이지로 이동합니다.
- 버킷 만들기를 클릭합니다.
- 버킷 만들기 페이지에서 버킷 정보를 입력합니다. 다음 단계로 이동하려면 계속을 클릭합니다.
- 버킷 이름 지정에서 버킷 이름 지정 요구사항을 충족하는 이름을 입력합니다.
-
데이터를 저장할 위치 선택에서 다음을 수행합니다.
- 위치 유형 옵션을 선택합니다.
- 위치 옵션을 선택합니다.
- 데이터의 기본 스토리지 클래스 선택에서 스토리지 클래스를 선택합니다.
- 객체 액세스를 제어하는 방식 선택에서 액세스 제어 옵션을 선택합니다.
- 고급 설정(선택사항)에서 암호화 방법, 보관 정책 또는 버킷 라벨을 지정합니다.
- 만들기를 클릭합니다.
워크플로 템플릿 만들기
로컬 터미널 창 또는 Cloud Shell에서 아래 나열된 명령어를 복사하고 실행하여 워크플로 템플릿을 만들고 정의합니다.
참고
- 명령어는 'us-central1' 리전을 지정합니다. 이전에
gcloud config set compute/region
를 실행하여 리전 속성을 설정한 경우 다른 리전을 지정하거나--region
플래그를 삭제할 수 있습니다. - '-- '(대시 대시 공간) 시퀀스는 인수를 jar 파일에 전달합니다.
wordcount input_bucket output_dir
명령어는 Cloud Storageinput_bucket
에 포함된 텍스트 파일에서 jar의 wordcount 애플리케이션을 실행한 다음 wordcount 파일을output_bucket
에 출력합니다. 함수가 이 인수를 제공할 수 있도록 wordcount 입력 버킷 인수를 매개변수화합니다.
- 워크플로 템플릿 만들기
gcloud dataproc workflow-templates create wordcount-template \ --region=us-central1
- 워크플로 템플릿에 WordCount 작업을 추가합니다.
-
명령어를 실행하기 전에 output-bucket-name를 지정합니다(함수가 입력 버킷을 제공함).
출력 버킷 이름을 삽입한 후 출력 버킷 인수는 다음과 같이 표시됩니다.
gs://your-output-bucket/wordcount-output"
- 'count' 단계 ID는 필수이며 추가된 hadoop 작업을 식별합니다.
gcloud dataproc workflow-templates add-job hadoop \ --workflow-template=wordcount-template \ --step-id=count \ --jar=file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar \ --region=us-central1 \ -- wordcount gs://input-bucket gs://output-bucket-name/wordcount-output
-
명령어를 실행하기 전에 output-bucket-name를 지정합니다(함수가 입력 버킷을 제공함).
출력 버킷 이름을 삽입한 후 출력 버킷 인수는 다음과 같이 표시됩니다.
- 관리형, 단일 노드 클러스터를 사용하여 워크플로를 실행합니다. Dataproc이 클러스터를 만들고 워크플로를 실행한 다음 워크플로가 완료되면 클러스터를 삭제합니다.
gcloud dataproc workflow-templates set-managed-cluster wordcount-template \ --cluster-name=wordcount \ --single-node \ --region=us-central1
- Google Cloud 콘솔의 Dataproc 워크플로 페이지에서
wordcount-template
이름을 클릭하여 워크플로 템플릿 세부정보 페이지를 엽니다. wordcount-template 속성을 확인합니다.
워크플로 템플릿 매개변수화
워크플로 템플릿에 전달할 입력 버킷 변수를 매개변수화합니다.
- 매개변수화를 위해 워크플로 템플릿을
wordcount.yaml
텍스트 파일로 내보냅니다.gcloud dataproc workflow-templates export wordcount-template \ --destination=wordcount.yaml \ --region=us-central1
- 텍스트 편집기를 사용하여
wordcount.yaml
를 연 다음 YAML 파일 끝에parameters
블록을 추가하여 워크플로가 트리거될 때 Cloud Storage INPUT_BUCKET_URI를args[1]
로 전달할 수 있습니다.다음은 내보낸 YAML 파일의 예입니다. 두 가지 방법 중 하나를 사용하여 템플릿을 업데이트할 수 있습니다.
- your-output_bucket를 출력 버킷 이름으로 바꾼 후 내보낸
wordcount.yaml
를 바꾸려면 전체 파일을 복사하여 붙여넣습니다. 또는 - 내보낸
wordcount.yaml
파일의 끝에parameters
섹션만 복사하여 붙여넣습니다.
jobs: - hadoopJob: args: - wordcount - gs://input-bucket - gs://your-output-bucket/wordcount-output mainJarFileUri: file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar stepId: count placement: managedCluster: clusterName: wordcount config: softwareConfig: properties: dataproc:dataproc.allow.zero.workers: 'true' parameters: - name: INPUT_BUCKET_URI description: wordcount input bucket URI fields: - jobs['count'].hadoopJob.args[1]
- your-output_bucket를 출력 버킷 이름으로 바꾼 후 내보낸
- 매개변수화된
wordcount.yaml
텍스트 파일을 가져옵니다. 템플릿을 덮어쓸지 묻는 메시지가 표시되면 'Y'를 입력합니다.gcloud dataproc workflow-templates import wordcount-template \ --source=wordcount.yaml \ --region=us-central1
Cloud 함수 만들기
Google Cloud 콘솔에서 Cloud Functions 페이지를 연 다음 함수 만들기를 클릭합니다.
함수 만들기 페이지에서 다음 정보를 입력하거나 선택합니다.
- 이름: wordcount
- 메모리 할당: 기본 선택을 유지합니다.
- 트리거:
- Cloud Storage
- 이벤트 유형: 확정/만들기
- 버킷: 입력 버킷을 선택합니다(프로젝트에서 Cloud Storage 버킷 만들기 참조). 이 버킷에 파일이 추가되면 함수가 워크플로를 트리거합니다. 워크플로는 버킷의 모든 텍스트 파일을 처리하는 Wordcount 애플리케이션을 실행합니다.
소스 코드:
- 인라인 편집기
- 런타임: Node.js
INDEX.JS
탭: 기본 코드 스니펫을 다음 코드로 바꾼 다음const projectId
줄을 수정하여 -your-project-id-(앞 또는 뒤에 '-'없이)를 입력합니다.
const dataproc = require('@google-cloud/dataproc').v1; exports.startWorkflow = (data) => { const projectId = '-your-project-id-' const region = 'us-central1' const workflowTemplate = 'wordcount-template' const client = new dataproc.WorkflowTemplateServiceClient({ apiEndpoint: `${region}-dataproc.googleapis.com`, }); const file = data; console.log("Event: ", file); const inputBucketUri = `gs://${file.bucket}/${file.name}`; const request = { name: client.projectRegionWorkflowTemplatePath(projectId, region, workflowTemplate), parameters: {"INPUT_BUCKET_URI": inputBucketUri} }; client.instantiateWorkflowTemplate(request) .then(responses => { console.log("Launched Dataproc Workflow:", responses[1]); }) .catch(err => { console.error(err); }); };
PACKAGE.JSON
탭: 기본 코드 스니펫을 다음 코드로 바꿉니다.
{ "name": "dataproc-workflow", "version": "1.0.0", "dependencies":{ "@google-cloud/dataproc": ">=1.0.0"} }
- 실행할 함수: 'startWorkflow'를 삽입합니다.
만들기를 클릭합니다.
함수 테스트
공개 파일
rose.txt
을 버킷에 복사하여 함수를 트리거합니다. 명령어에 your-input-bucket-name(함수를 트리거하는 데 사용되는 버킷)을 삽입합니다.gsutil cp gs://pub/shakespeare/rose.txt gs://your-input-bucket-name
30초 동안 기다린 후 다음 명령어를 실행하여 함수가 성공적으로 완료되었는지 확인합니다.
gcloud functions logs read wordcount
... Function execution took 1348 ms, finished with status: 'ok'
Google Cloud 콘솔의 함수 목록 페이지에서 함수 로그를 보려면
wordcount
함수 이름을 클릭한 다음 함수 세부정보 페이지에서 보기를 클릭합니다.Google Cloud 콘솔의 스토리지 브라우저 페이지에서 출력 버킷의
wordcount-output
폴더를 볼 수 있습니다.워크플로가 완료되면 작업 세부정보가 Google Cloud 콘솔에 유지됩니다. Dataproc 작업 페이지에 나열된
count...
작업을 클릭하여 워크플로 작업 세부정보를 확인합니다.
삭제
이 가이드의 워크플로는 워크플로가 완료되면 관리 클러스터를 삭제합니다. 반복되는 비용이 발생하지 않도록 이 가이드와 관련된 다른 리소스를 삭제할 수 있습니다.
프로젝트 삭제
- Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.
- 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
- 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.
Cloud Storage 버킷 삭제
- Google Cloud 콘솔에서 Cloud Storage 브라우저 페이지로 이동합니다.
- 삭제할 버킷의 체크박스를 클릭합니다.
- 버킷을 삭제하려면 삭제를 클릭한 후 안내를 따르세요.
워크플로 템플릿 삭제
gcloud dataproc workflow-templates delete wordcount-template \ --region=us-central1
Cloud 함수 삭제
Google Cloud 콘솔에서 Cloud Functions 페이지를 열고 wordcount
함수 왼쪽에 있는 상자를 선택한 후 삭제를 클릭합니다.
다음 단계
- Dataproc 워크플로 템플릿 개요를 참조하세요.
- 워크플로 예약 솔루션을 참조하세요.