arrow_back

Dataflow를 사용한 서버리스 데이터 분석: 간단한 Dataflow 파이프라인(자바)

로그인 가입
700개 이상의 실습 및 과정 이용하기

Dataflow를 사용한 서버리스 데이터 분석: 간단한 Dataflow 파이프라인(자바)

실습 1시간 30분 universal_currency_alt 크레딧 5개 show_chart 고급
info 이 실습에는 학습을 지원하는 AI 도구가 통합되어 있을 수 있습니다.
700개 이상의 실습 및 과정 이용하기

개요

이 실습에서는 Dataflow 프로젝트를 열고, 파이프라인 필터링을 사용하며, 로컬과 클라우드에서 파이프라인을 실행해봅니다.

목표

이 실습에서는 간단한 Dataflow 파이프라인을 작성하여 로컬과 클라우드 모두에서 실행하는 방법을 학습합니다.

  • Maven을 사용하여 자바 Dataflow 프로젝트 설정하기
  • 자바로 간단한 파이프라인 작성하기
  • 로컬 컴퓨터에서 쿼리 실행하기
  • 클라우드에서 쿼리 실행하기

설정 및 요건

각 실습에서는 정해진 기간 동안 새 Google Cloud 프로젝트와 리소스 집합이 무료로 제공됩니다.

  1. 시크릿 창을 사용하여 Qwiklabs에 로그인합니다.

  2. 실습 사용 가능 시간(예: 1:15:00)을 참고하여 해당 시간 내에 완료합니다.
    일시중지 기능은 없습니다. 필요한 경우 다시 시작할 수 있지만 처음부터 시작해야 합니다.

  3. 준비가 되면 실습 시작을 클릭합니다.

  4. 실습 사용자 인증 정보(사용자 이름비밀번호)를 기록해 두세요. Google Cloud Console에 로그인합니다.

  5. Google Console 열기를 클릭합니다.

  6. 다른 계정 사용을 클릭한 다음, 안내 메시지에 실습에 대한 사용자 인증 정보를 복사하여 붙여넣습니다.
    다른 사용자 인증 정보를 사용하는 경우 오류가 발생하거나 요금이 부과됩니다.

  7. 약관에 동의하고 리소스 복구 페이지를 건너뜁니다.

Google Cloud Shell 활성화하기

Google Cloud Shell은 다양한 개발 도구가 탑재된 가상 머신으로, 5GB의 영구 홈 디렉터리를 제공하며 Google Cloud에서 실행됩니다.

Google Cloud Shell을 사용하면 명령줄을 통해 Google Cloud 리소스에 액세스할 수 있습니다.

  1. Cloud 콘솔의 오른쪽 상단 툴바에서 'Cloud Shell 열기' 버튼을 클릭합니다.

    강조 표시된 Cloud Shell 아이콘

  2. 계속을 클릭합니다.

환경을 프로비저닝하고 연결하는 데 몇 분 정도 소요됩니다. 연결되면 사용자가 미리 인증되어 프로젝트가 PROJECT_ID로 설정됩니다. 예:

Cloud Shell 터미널에 강조 표시된 프로젝트 ID

gcloud는 Google Cloud의 명령줄 도구입니다. Cloud Shell에 사전 설치되어 있으며 명령줄 자동 완성을 지원합니다.

  • 다음 명령어를 사용하여 사용 중인 계정 이름을 나열할 수 있습니다.
gcloud auth list

출력:

Credentialed accounts: - @.com (active)

출력 예시:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • 다음 명령어를 사용하여 프로젝트 ID를 나열할 수 있습니다.
gcloud config list project

출력:

[core] project =

출력 예시:

[core] project = qwiklabs-gcp-44776a13dea667a6 참고: gcloud 전체 문서는 gcloud CLI 개요 가이드를 참조하세요.

Google Cloud Shell 코드 편집기 실행

Google Cloud Shell 코드 편집기를 사용하면 Cloud Shell 인스턴스에서 디렉터리와 파일을 쉽게 만들고 편집할 수 있습니다.

  • Google Cloud Shell을 활성화한 후 편집기 열기를 클릭하여 Cloud Shell 코드 편집기를 엽니다.

편집기 열기 버튼

이제 다음 세 가지 인터페이스를 사용할 수 있습니다.

  • Cloud Shell 코드 편집기
  • 콘솔(탭을 클릭) 탭을 클릭하면 콘솔과 Cloud Shell 사이를 전환할 수 있습니다.
  • Cloud Shell 명령줄(콘솔에서 터미널 열기 클릭)

3가지 인터페이스: Cloud Shell 코드 편집기, 콘솔, 강조 표시된 Cloud Shell 명령줄

프로젝트 권한 확인

Google Cloud에서 작업을 시작하기 전에 프로젝트가 Identity and Access Management(IAM) 내에서 올바른 권한을 보유하고 있는지 확인해야 합니다.

  1. Google Cloud 콘솔의 탐색 메뉴(탐색 메뉴 아이콘)에서 IAM 및 관리자 > IAM을 선택합니다.

  2. 기본 컴퓨팅 서비스 계정 {project-number}-compute@developer.gserviceaccount.com이 있고 editor 역할이 할당되어 있는지 확인하세요. 계정 프리픽스는 프로젝트 번호이며, 이 번호는 탐색 메뉴 > Cloud 개요 > 대시보드에서 확인할 수 있습니다.

Compute Engine 기본 서비스 계정 이름과 편집자 상태가 강조 표시된 권한 탭 페이지

참고: 계정이 IAM에 없거나 editor 역할이 없는 경우 다음 단계에 따라 필요한 역할을 할당합니다.
  1. Google Cloud 콘솔의 탐색 메뉴에서 Cloud 개요 > 대시보드를 클릭합니다.
  2. 프로젝트 번호(예: 729328892908)를 복사합니다.
  3. 탐색 메뉴에서 IAM 및 관리자 > IAM을 선택합니다.
  4. 역할 테이블 상단에서 주 구성원별로 보기 아래에 있는 액세스 권한 부여를 클릭합니다.
  5. 새 주 구성원 필드에 다음을 입력합니다.
{project-number}-compute@developer.gserviceaccount.com
  1. {project-number}는 프로젝트 번호로 바꿉니다.
  2. 역할 필드에서 프로젝트(또는 기본) > 편집자를 선택합니다.
  3. 저장을 클릭합니다.

작업 1. 준비

버킷 확인 및 실습 코드 다운로드하기

이 실습을 성공적으로 실행하려면 특정 단계를 반드시 완료해야 합니다.

  1. Cloud Storage 버킷이 있는지 확인합니다(한 개는 실습 환경이 시작되었을 때 자동으로 생성되었음).

  2. Google Cloud 콘솔 제목 표시줄에서 Cloud Shell 활성화를 클릭합니다. 메시지가 표시되면 계속을 클릭합니다. 다음 명령을 사용하여 실습 코드 github 저장소를 복제합니다.

git clone https://github.com/GoogleCloudPlatform/training-data-analyst
  1. Cloud Shell에서 다음을 입력하여 2개의 환경 변수를 생성합니다. 하나는 이름을 'BUCKET'으로 하고 다른 하나는 이름을 'REGION'으로 지정합니다. 각 변수가 echo 명령어와 함께 있는지 확인합니다.
BUCKET="{{{project_0.project_id|Project ID}}}-bucket" echo $BUCKET REGION="{{{project_0.default_region|Region}}}" echo $REGION

Dataflow API가 제대로 사용 설정되어 있는지 확인하기

  1. Cloud Shell에서 다음 명령어를 실행하여 Dataflow API가 프로젝트에 확실하게 사용 설정되었는지 확인합니다.
gcloud services disable dataflow.googleapis.com --force gcloud services enable dataflow.googleapis.com

작업 2. 새 Dataflow 프로젝트 만들기

이 실습의 목표는 Dataflow 프로젝트의 구조를 익히고 Dataflow 파이프라인을 실행하는 방법을 학습하는 것입니다. Maven이라는 강력한 빌드 도구를 사용하여 새 Dataflow 프로젝트를 만들어 보겠습니다.

  1. Cloud Shell이 포함된 브라우저 탭으로 돌아갑니다. Cloud Shell에서 이 실습의 디렉터리로 이동합니다.
cd ~/training-data-analyst/courses/data_analysis/lab2
  1. 다음 Maven 명령어를 복사하여 붙여넣습니다.
mvn archetype:generate \ -DarchetypeArtifactId=google-cloud-dataflow-java-archetypes-starter \ -DarchetypeGroupId=com.google.cloud.dataflow \ -DgroupId=com.example.pipelinesrus.newidea \ -DartifactId=newidea \ -Dversion="[1.0.0,2.0.0]" \ -DinteractiveMode=false
  • 어떤 디렉터리가 생성되었나요?
  • src 디렉터리 안에 어떤 패키지가 생성되었나요?
  1. 실습 코드를 만드는 데 사용된 Maven 명령어를 검토합니다.
cat ~/training-data-analyst/courses/data_analysis/lab2/create_mvn.sh
  • 어떤 디렉터리가 생성될까요?
  • src 디렉터리 안에 어떤 패키지가 생성될까요?

작업 3. 파이프라인 필터링

  1. Cloud Shell 코드 편집기에서 디렉터리 /training-data-analyst/courses/data_analysis/lab2로 이동합니다.

  2. 그런 다음 경로 javahelp/src/main/java/com/google/cloud/training/dataanalyst/javahelp/ 를 선택하고 파일 Grep.java를 봅니다.

또는 nano 편집기를 사용하여 파일을 볼 수 있습니다. 다음 코드를 변경하지 마세요.

cd ~/training-data-analyst/courses/data_analysis/lab2/javahelp/src/main/java/com/google/cloud/training/dataanalyst/javahelp/ nano Grep.java

Grep.java 파일에 대한 다음 질문에 답해보세요.

  • 어떤 파일을 읽고 있나요?
  • 검색어는 무엇인가요?
  • 어디에 출력되나요?

파이프라인에 세 개의 apply 구문이 있습니다.

  • 첫 번째 apply()는 어떤 역할을 하나요?
  • 두 번째 apply()는 어떤 역할을 하나요?
  • 입력을 어디에서 가져오나요?
  • 이 입력으로 무엇을 하나요?
  • 출력에 무엇을 쓰나요?
  • 어디에 출력되나요?
  • 세 번째 apply()는 어떤 역할을 하나요?

작업 4. 로컬에서 파이프라인 실행하기

  1. Cloud Shell에서 다음 Maven 명령어를 붙여넣습니다.
cd ~/training-data-analyst/courses/data_analysis/lab2 export PATH=/usr/lib/jvm/java-8-openjdk-amd64/bin/:$PATH cd ~/training-data-analyst/courses/data_analysis/lab2/javahelp mvn compile -e exec:java \ -Dexec.mainClass=com.google.cloud.training.dataanalyst.javahelp.Grep
  1. 출력 파일은 output.txt입니다. 출력 크기가 일정 이상이면 output-00000-of-00001과 같은 이름이 지정된 개별 부분으로 샤딩됩니다. 필요한 경우 파일 시간을 검토하여 올바른 파일을 찾을 수 있습니다.
ls -al /tmp
  1. 출력 파일을 검토합니다.
cat /tmp/output*

출력이 논리적인가요?

작업 5. 클라우드에서 파이프라인 실행하기

  1. 일부 Java 파일을 클라우드로 복사합니다.
gcloud storage cp ../javahelp/src/main/java/com/google/cloud/training/dataanalyst/javahelp/*.java gs://$BUCKET/javahelp
  1. Cloud Shell 코드 편집기에서 디렉터리 /training-data-analyst/courses/data_analysis/lab2/javahelp/src/main/java/com/google/cloud/training/dataanalyst/javahelp로 이동합니다.

  2. 파일 Grep.java에서 Dataflow 파이프라인을 편집합니다.

cd ~/training-data-analyst/courses/data_analysis/lab2/javahelp/src/main/java/com/google/cloud/training/dataanalyst/javahelp
  1. Input 및 Output 변수를 버킷 이름으로 바꿉니다. 변수를 다음과 같이 바꿉니다.
String input = "gs://{{{project_0.project_id|Project ID}}}-bucket/javahelp/*.java"; String outputPrefix = "gs://{{{project_0.project_id|Project ID}}}-bucket/javahelp/output"; 참고: 소스 코드에 이미 있는 inputoutputPrefix 문자열을 변경했는지 확인합니다. 초기 문자열을 제거하지 않고 위의 전체 줄을 복사하여 붙여넣으면 동일한 변수가 두 개가 되므로 주의하세요.

편집 전의 예시 줄:

String input = "src/main/java/com/google/cloud/training/dataanalyst/javahelp/*.java"; String outputPrefix = "/tmp/output"; </ql-code-block output> Example lines after editing containing your project's bucket name: String input = "gs://qwiklabs-gcp-your-value-bucket/javahelp/*.java"; </ql-code-block output> String outputPrefix = "gs://qwiklabs-gcp-your-value-bucket/javahelp/output"; </ql-code-block output> 5. 스크립트를 검토하여 Dataflow를 클라우드에 제출: cd ~/training-data-analyst/courses/data_analysis/lab2/javahelp cat run_oncloud1.sh

이 Maven 명령어와 로컬에서 실행되는 명령어의 차이점은 무엇인가요?

  1. 클라우드에 Dataflow 작업을 제출합니다.
bash run_oncloud1.sh $DEVSHELL_PROJECT_ID $BUCKET Grep $REGION

매우 간단한 작업이기 때문에 클라우드에서 실행하는 것이 로컬에서 실행하는 것보다 훨씬 더 오래 걸립니다(약 2~3분).

완성된 명령줄의 예:

[INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 01:50 min [INFO] Finished at: 2018-02-06T15:11:23-05:00 [INFO] Final Memory: 39M/206M [INFO] ------------------------------------------------------------------------
  1. 콘솔의 브라우저 탭으로 돌아갑니다. 탐색 메뉴(탐색 메뉴 아이콘)에서 Dataflow를 클릭하고 진행 상태를 모니터링할 작업을 클릭합니다.

:

그래프 보기를 표시 중인 작업 그래프 탭

  1. 작업 상태가 성공으로 바뀔 때까지 기다립니다. 이 시점에서 Cloud Shell에 명령줄 프롬프트가 표시됩니다.

    참고: Dataflow 작업이 처음에 실패하면 이전 명령을 재실행하여 새 Dataflow job을 클라우드에 제출하세요.
  2. Cloud Storage 버킷에서 출력을 검토합니다. 탐색 메뉴(탐색 메뉴 아이콘)에서 Cloud Storage > 버킷을 클릭하고 버킷을 클릭합니다.

  3. javahelp 디렉터리를 클릭합니다. 이 작업으로 output.txt 파일이 생성됩니다. 파일이 일정 크기 이상이면 output-0000x-of-000y와 같은 이름이 지정된 여러 부분으로 샤딩됩니다. 이름 또는 최종 수정 시간 필드를 보고 가장 최근 파일을 식별할 수 있습니다. 보려는 파일을 클릭합니다.

또는 Cloud Shell에서 파일을 다운로드하여 볼 수 있습니다.

gcloud storage cp gs://$BUCKET/javahelp/output* . cat output*

실습 종료하기

실습을 완료하면 실습 종료를 클릭합니다. Google Cloud Skills Boost에서 사용된 리소스를 자동으로 삭제하고 계정을 지웁니다.

실습 경험을 평가할 수 있습니다. 해당하는 별표 수를 선택하고 의견을 입력한 후 제출을 클릭합니다.

별점의 의미는 다음과 같습니다.

  • 별표 1개 = 매우 불만족
  • 별표 2개 = 불만족
  • 별표 3개 = 중간
  • 별표 4개 = 만족
  • 별표 5개 = 매우 만족

의견을 제공하고 싶지 않다면 대화상자를 닫으면 됩니다.

의견이나 제안 또는 수정할 사항이 있다면 지원 탭을 사용하세요.

Copyright 2020 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.

시작하기 전에

  1. 실습에서는 정해진 기간 동안 Google Cloud 프로젝트와 리소스를 만듭니다.
  2. 실습에는 시간 제한이 있으며 일시중지 기능이 없습니다. 실습을 종료하면 처음부터 다시 시작해야 합니다.
  3. 화면 왼쪽 상단에서 실습 시작을 클릭하여 시작합니다.

시크릿 브라우징 사용

  1. 실습에 입력한 사용자 이름비밀번호를 복사합니다.
  2. 비공개 모드에서 콘솔 열기를 클릭합니다.

콘솔에 로그인

    실습 사용자 인증 정보를 사용하여
  1. 로그인합니다. 다른 사용자 인증 정보를 사용하면 오류가 발생하거나 요금이 부과될 수 있습니다.
  2. 약관에 동의하고 리소스 복구 페이지를 건너뜁니다.
  3. 실습을 완료했거나 다시 시작하려고 하는 경우가 아니면 실습 종료를 클릭하지 마세요. 이 버튼을 클릭하면 작업 내용이 지워지고 프로젝트가 삭제됩니다.

현재 이 콘텐츠를 이용할 수 없습니다

이용할 수 있게 되면 이메일로 알려드리겠습니다.

감사합니다

이용할 수 있게 되면 이메일로 알려드리겠습니다.

한 번에 실습 1개만 가능

모든 기존 실습을 종료하고 이 실습을 시작할지 확인하세요.

시크릿 브라우징을 사용하여 실습 실행하기

이 실습을 실행하려면 시크릿 모드 또는 시크릿 브라우저 창을 사용하세요. 개인 계정과 학생 계정 간의 충돌로 개인 계정에 추가 요금이 발생하는 일을 방지해 줍니다.