시작하기 전에
아직 설정하지 않은 경우 Google Cloud 프로젝트와 Cloud Storage 버킷 2개를 설정합니다.
프로젝트 설정
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc, Compute Engine, Cloud Storage, and Cloud Run functions APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc, Compute Engine, Cloud Storage, and Cloud Run functions APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
프로젝트에서 두 개(2)의 Cloud Storage 버킷 만들기 또는 사용
프로젝트에는 Cloud Storage 버킷 두 개가 필요합니다. 하나는 입력 파일용, 다른 하나는 출력용 파일입니다.
- In the Google Cloud console, go to the Cloud Storage Buckets page.
- Click Create bucket.
- On the Create a bucket page, enter your bucket information. To go to the next
step, click Continue.
- For Name your bucket, enter a name that meets the bucket naming requirements.
-
For Choose where to store your data, do the following:
- Select a Location type option.
- Select a Location option.
- For Choose a default storage class for your data, select a storage class.
- For Choose how to control access to objects, select an Access control option.
- For Advanced settings (optional), specify an encryption method, a retention policy, or bucket labels.
- Click Create.
워크플로 템플릿 만들기
로컬 터미널 창 또는 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 Run 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(함수를 트리거하는 데 사용되는 버킷)을 삽입합니다.gcloud storage 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...
작업을 클릭하여 워크플로 작업 세부정보를 확인합니다.
삭제
이 가이드의 워크플로는 워크플로가 완료되면 관리 클러스터를 삭제합니다. 반복되는 비용이 발생하지 않도록 이 가이드와 관련된 다른 리소스를 삭제할 수 있습니다.
프로젝트 삭제
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Cloud Storage 버킷 삭제
- In the Google Cloud console, go to the Cloud Storage Buckets page.
- Click the checkbox for the bucket that you want to delete.
- To delete the bucket, click Delete, and then follow the instructions.
워크플로 템플릿 삭제
gcloud dataproc workflow-templates delete wordcount-template \ --region=us-central1
Cloud 함수 삭제
Google Cloud 콘솔에서 Cloud Run Functions 페이지를 열고 wordcount
함수 왼쪽에 있는 체크박스를 선택한 다음 삭제를 클릭합니다.
다음 단계
- Dataproc 워크플로 템플릿 개요를 참조하세요.
- 워크플로 예약 솔루션을 참조하세요.