Oozie 워크플로를 wth로 변환 AWS Step FunctionsAWS Schema Conversion Tool - AWS Schema Conversion Tool

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Oozie 워크플로를 wth로 변환 AWS Step FunctionsAWS Schema Conversion Tool

Apache Oozie 워크플로를 변환하려면 버전 1.0.671 이상을 사용해야 합니다. AWS SCT 또한 의 명령줄 인터페이스 () 를 숙지하십시오. CLI AWS SCT자세한 내용은 CLI에 대한 참조 AWS Schema Conversion Tool 단원을 참조하십시오.

변환 개요

Apache Oozie 소스 코드에는 작업 노드, 제어 흐름 노드 및 작업 속성이 포함됩니다. 작업 노드는 Apache Oozie 워크플로에서 실행하는 작업을 정의합니다. Apache Oozie를 사용하여 Apache Hadoop 클러스터를 오케스트레이션하면 작업 노드에 Hadoop 작업이 포함됩니다. 제어 흐름 노드는 워크플로 경로를 제어하는 메커니즘을 제공합니다. 제어 흐름 노드에는 start, end, decision, fork, join 등의 노드가 포함됩니다.

AWS SCT 소스 액션 노드와 제어 흐름 노드를 로 변환합니다. AWS Step Functions AWS Step Functions에서는 Amazon States 언어 (ASL) 로 워크플로를 정의합니다. AWS SCT 작업을 수행할 수 있는 상태 모음인 상태 머신을 정의하고, 다음으로 전환할 상태를 결정하고, 오류가 발생하여 중지하는 등의 작업을 수행할 수 있는 상태 머신을 정의하는 데 사용합니다ASL. 그런 다음, 상태 머신 정의와 함께 JSON 파일을 AWS SCT 업로드합니다. 그런 다음, AWS SCT AWS Identity and Access Management (IAM) 역할을 사용하여 에서 AWS Step Functions상태 머신을 구성할 수 있습니다. 자세한 내용은 What is AWS Step Functions? 를 참조하십시오. AWS Step Functions 개발자 안내서에서.

또한 지원되지 AWS Step Functions 않는 소스 AWS Lambda 함수를 에뮬레이션하는 함수가 포함된 확장 팩을 AWS SCT 만듭니다. 자세한 내용은 다음과 함께 확장 팩 사용 AWS Schema Conversion Tool 단원을 참조하십시오.

AWS SCT 소스 작업 속성을 로 마이그레이션합니다. AWS Systems Manager매개 변수 이름과 값을 저장하려면 의 AWS Systems Manager기능인 매개 변수 저장소를 AWS SCT 사용합니다. 자세한 내용은 AWS Systems Manager무엇입니까를 참조하십시오. AWS Systems Manager 사용 설명서에서.

를 AWS SCT 사용하여 매개변수의 값과 이름을 자동으로 업데이트할 수 있습니다. Apache Oozie와 간의 아키텍처 차이로 인해 매개 AWS Step Functions변수를 구성해야 할 수도 있습니다. AWS SCT 소스 파일에서 지정된 매개변수 이름이나 값을 찾아 새 값으로 바꿀 수 있습니다. 자세한 내용은 3단계: 파라미터 구성 단원을 참조하십시오.

다음 이미지는 Apache Oozie로 변환하는 아키텍처 다이어그램을 보여줍니다. AWS Step Functions

아파치 Oozie를 로 변환하는 아키텍처 다이어그램입니다. AWS Step Functions

변환을 시작하려면 스크립트를 만들고 실행하세요. AWS SCT CLI 이 스크립트에는 변환을 실행하기 위한 전체 명령 세트가 포함되어 있습니다. Apache Oozie 변환 스크립트의 템플릿을 다운로드하고 편집할 수 있습니다. 자세한 내용은 CLI시나리오 가져오기 단원을 참조하십시오.

스크립트에 다음 단계가 포함되어야 합니다.

1단계: 소스 및 대상 서비스에 연결

Apache Oozie 클러스터의 변환을 시작하려면 새 프로젝트를 만드십시오. AWS SCT 그 다음, 소스 및 대상 서비스에 연결합니다. 마이그레이션을 시작하기 전에 대상 AWS 리소스를 생성하고 프로비저닝해야 합니다. 자세한 내용은 Apache Oozie를 소스로 사용하기 위한 사전 조건 단원을 참조하십시오.

이 단계에서는 다음 AWS SCT CLI 명령을 사용합니다.

  • CreateProject— 새 AWS SCT 프로젝트를 만들려면

  • AddSource - AWS SCT 프로젝트에 소스 Apache Oozie 파일을 추가합니다.

  • ConnectSource - 소스로 Apache Oozie에 연결합니다.

  • AddTarget— 프로젝트에 마이그레이션 AWS Step Functions 대상으로 추가할 수 있습니다.

  • ConnectTarget - AWS Step Functions에 연결합니다.

이러한 AWS SCT CLI 명령의 사용 예는 을 참조하십시오아파치 Oozie에 연결.

ConnectSource또는 ConnectTarget 명령을 실행하면 서비스에 대한 연결 설정을 AWS SCT 시도합니다. 연결 시도가 실패하면 CLI 스크립트에서 명령 실행이 AWS SCT 중지되고 오류 메시지가 표시됩니다.

2단계: 매핑 규칙 설정

소스 및 대상 서비스에 연결한 후 매핑 규칙을 설정합니다. 매핑 규칙은 소스 Apache Oozie 워크플로와 파라미터의 마이그레이션 대상을 정의합니다. 매핑 규칙에 대한 자세한 내용은 의 매핑 데이터 유형 AWS Schema Conversion Tool 섹션을 참조하세요.

변환할 소스 및 대상 객체를 정의하려면 AddServerMapping 명령을 사용합니다. 이 명령에서는 2개의 파라미터(sourceTreePathtargetTreePath)를 사용합니다. 이러한 파라미터의 값에는 소스 및 대상 객체에 대한 명시적 경로가 포함됩니다. Apache Oozie를 AWS Step Functions 로 변환하려면 이러한 파라미터를 ETL로 시작해야 합니다.

다음 코드 예제는 OOZIEAWS_STEP_FUNCTIONS 객체에 대한 매핑 규칙을 생성합니다. 이전 단계에서 AddSourceAddTarget 명령을 사용하여 이러한 객체를 AWS SCT 프로젝트에 추가했습니다.

AddServerMapping -sourceTreePath: 'ETL.APACHE_OOZIE' -targetTreePath: 'ETL.AWS_STEP_FUNCTIONS' /

AddServerMapping명령에 대한 자세한 내용은 AWS Schema Conversion Tool CLI참조를 참조하십시오.

3단계: 파라미터 구성

소스 Apache Oozie 워크플로에서 파라미터를 사용하는 경우 AWS Step Functions로 변환한 후 해당 값을 변경해야 할 수 있습니다. 또한 다음과 함께 사용할 새 매개 변수를 추가해야 할 수도 있습니다 AWS Step Functions.

이 단계에서는 AddParameterMappingAddTargetParameter 명령을 사용합니다.

소스 파일의 파라미터 값을 바꾸려면 AddParameterMapping 명령을 사용합니다. AWS SCT 가 소스 파일을 스캔하고, 이름 또는 값으로 파라미터를 찾은 후 해당 값을 변경합니다. 단일 명령을 실행하여 모든 소스 파일을 스캔할 수 있습니다. 다음 목록의 처음 3개 파라미터 중 하나를 사용하여 스캔할 파일의 범위를 정의합니다. 이 명령은 최대 6개의 파라미터를 사용합니다.

  • filterName - 소스 객체의 필터 이름입니다. CreateFilter 명령을 사용하여 필터를 생성할 수 있습니다.

  • treePath - 소스 객체의 명시적 경로입니다.

  • namePath - 특정 소스 객체의 명시적 경로입니다.

  • sourceParameterName - 소스 파라미터의 이름입니다.

  • sourceValue - 소스 파라미터의 값입니다.

  • targetValue - 대상 파라미터의 값입니다.

다음 코드 예제에서는 값이 c:\oozie\hive.py와 동일한 모든 파라미터를 s3://bucket-oozie/hive.py 값으로 바꿉니다.

AddParameterMapping -treePath: 'ETL.OOZIE.Applications' -sourceValue: 'c:\oozie\hive.py' -targetValue: 's3://bucket-oozie/hive.py' /

다음 코드 예제에서는 이름이 nameNode와 동일한 모든 파라미터를 hdfs://ip-111-222-33-44.eu-west-1.compute.internal:8020 값으로 바꿉니다.

AddParameterMapping -treePath: 'ETL.OOZIE_SOURCE.Applications' -sourceParameter: 'nameNode' -targetValue: 'hdfs://ip-111-222-33-44.eu-west-1.compute.internal:8020' /

다음 코드 예제에서는 이름이 nameNode와 동일하고 값이 hdfs://ip-55.eu-west-1.compute.internal:8020과 동일한 모든 파라미터를 targetValue 파라미터의 값으로 바꿉니다.

AddParameterMapping -treePath: 'ETL.OOZIE_SOURCE.Applications' -sourceParameter: 'nameNode' -sourceValue: 'hdfs://ip-55-66-77-88.eu-west-1.compute.internal:8020' -targetValue: 'hdfs://ip-111-222-33-44.eu-west-1.compute.internal:8020' /

소스 파일의 기존 파라미터 외에도 대상 파일에 새 파라미터를 추가하려면 AddTargetParameter 명령을 사용합니다. 이 명령은 AddParameterMapping 명령과 동일한 파라미터 세트를 사용합니다.

다음 코드 예제에서는 nameNode 파라미터 대신 clusterId 대상 파라미터를 추가합니다.

AddTargetParameter -treePath: 'ETL.OOZIE_SOURCE.Applications' -sourceParameter: 'nameNode' -sourceValue: 'hdfs://ip-55-66-77-88.eu-west-1.compute.internal:8020' -targetParameter: 'clusterId' -targetValue: '1234567890abcdef0' /

AddServerMapping, AddParameterMappingAddTargetParameter, 및 CreateFilter 명령에 대한 자세한 내용은 AWS Schema Conversion Tool CLI참조를 참조하십시오.

4단계: 평가 보고서 생성

변환을 시작하기 전에 평가 보고서를 생성하는 것이 좋습니다. 이 보고서에는 모든 마이그레이션 작업이 요약되어 있으며 마이그레이션 중에 나타날 작업 항목에 대해 자세히 설명합니다. 마이그레이션이 실패하지 않도록 하려면 마이그레이션 전에 이 보고서를 검토하여 작업 항목을 해결합니다. 자세한 내용은 평가 보고서 단원을 참조하십시오.

이 단계에서는 CreateReport 명령을 사용합니다. 이 명령에서는 2개의 파라미터를 사용합니다. 첫 번째 매개변수는 평가 보고서를 AWS SCT 만드는 데 사용할 소스 개체를 설명합니다. 이 작업을 수행하려면 filterName, treePath 또는 namePath 파라미터 중 하나를 사용합니다. 이 파라미터는 필수입니다. 또한 선택적 부울 파라미터 forceLoad를 추가할 수 있습니다. 이 매개 변수를 로 true 설정하면 CreateReport 명령에서 지정한 소스 개체의 모든 하위 개체가 AWS SCT 자동으로 로드됩니다.

다음 코드 예제에서는 소스 Oozie 파일의 Applications 노드에 대한 평가 보고서를 생성합니다.

CreateReport -treePath: 'ETL.APACHE_OOZIE.Applications' /

그런 다음 평가 보고서 사본을 쉼표로 구분된 값 () CSV 파일로 저장할 수 있습니다. PDF 이렇게 하려면 SaveReportPDF 또는 SaveReportCSV 명령을 사용합니다.

SaveReportPDF 명령은 평가 보고서 사본을 파일로 저장합니다. PDF 이 명령에서는 4개의 파라미터를 사용합니다. file 파라미터는 필수이고 다른 파라미터는 선택 사항입니다.

  • file— 파일 경로와 PDF 파일 이름.

  • filter - 마이그레이션할 소스 객체의 범위를 정의하기 위해 이전에 만든 필터의 이름입니다.

  • treePath - 평가 보고서 사본을 저장할 소스 데이터베이스 객체의 명시적 경로입니다.

  • namePath - 평가 보고서 사본을 저장할 대상 객체의 이름만 포함된 경로입니다.

SaveReportCSV 명령은 평가 보고서를 CSV 파일로 저장합니다. 이 명령에서는 4개의 파라미터를 사용합니다. directory 파라미터는 필수이고 다른 파라미터는 선택 사항입니다.

  • directory— CSV 파일을 AWS SCT 저장하는 폴더의 경로.

  • filter - 마이그레이션할 소스 객체의 범위를 정의하기 위해 이전에 만든 필터의 이름입니다.

  • treePath - 평가 보고서 사본을 저장할 소스 데이터베이스 객체의 명시적 경로입니다.

  • namePath - 평가 보고서 사본을 저장할 대상 객체의 이름만 포함된 경로입니다.

다음 코드 예제는 평가 보고서 사본을 c:\sct\ar.pdf 파일에 저장합니다.

SaveReportPDF -file:'c:\sct\ar.pdf' /

다음 코드 예제는 평가 보고서의 사본을 c:\sct 폴더에 CSV 파일로 저장합니다.

SaveReportCSV -file:'c:\sct' /

CreateReport, SaveReportPDFSaveReportCSV 명령에 대한 자세한 내용은 AWS Schema Conversion Tool CLI참조를 참조하십시오.

5단계: Apache Oozie 워크플로를 with로 변환 AWS Step FunctionsAWS SCT

AWS SCT 프로젝트를 구성한 후 소스 코드를 변환하여 에 적용하십시오. AWS 클라우드

이 단계에서는 Convert, SaveOnS3, ConfigureStateMachineApplyToTarget 명령을 사용합니다.

Migrate 명령은 소스 객체를 대상 클러스터로 마이그레이션합니다. 이 명령에서는 4개의 파라미터를 사용합니다. filter 또는 treePath 파라미터를 지정했는지 확인합니다. 다른 파라미터는 선택 사항입니다.

  • filter - 마이그레이션할 소스 객체의 범위를 정의하기 위해 이전에 만든 필터의 이름입니다.

  • namePath - 특정 소스 객체의 명시적 경로입니다.

  • treePath - 평가 보고서 사본을 저장할 소스 데이터베이스 객체의 명시적 경로입니다.

  • forceLoad— 로 true 설정하면 마이그레이션 중에 데이터베이스 메타데이터 트리를 AWS SCT 자동으로 로드합니다. 기본값은 false입니다.

다음 코드 예제에서는 소스 Oozie 파일의 Applications 폴더에서 파일을 변환합니다.

Convert -treePath: 'ETL.APACHE_OOZIE.Applications' /

SaveOnS3은 상태 시스템 정의를 Amazon S3 버킷으로 업로드합니다. 이 명령은 treePath 파라미터를 사용합니다. 이 명령을 실행하려면 상태 시스템 정의가 있는 대상 폴더를 이 파라미터의 값으로 사용합니다.

다음은 AWS_STEP_FUNCTIONS 대상 객체의 State machine definitions 폴더를 Amazon S3 버킷에 업로드합니다. AWS SCT 사전 조건단계에서 AWS 서비스 프로필에 저장한 Amazon S3 버킷을 사용합니다.

SaveOnS3 -treePath: 'ETL.AWS_STEP_FUNCTIONS.State machine definitions' /

ConfigureStateMachine 명령은 상태 시스템을 구성합니다. 이 명령은 최대 6개의 파라미터를 사용합니다. 다음 목록의 처음 3개 파라미터 중 하나를 사용하여 대상 범위를 정의해야 합니다.

  • filterName - 대상 객체의 필터 이름입니다. CreateFilter 명령을 사용하여 필터를 생성할 수 있습니다.

  • treePath - 대상 객체의 명시적 경로입니다.

  • namePath - 특정 대상 객체의 명시적 경로입니다.

  • iamRole— 스텝 머신에 대한 액세스를 제공하는 IAM 역할의 Amazon 리소스 이름 (ARN). 이 파라미터는 필수 사항입니다.

다음 코드 예제는 를 사용하여 정의된 상태 머신을 구성합니다. AWS_STEP_FUNCTIONS role_name IAM역할.

ConfigureStateMachine -treePath: 'ETL.AWS_STEP_FUNCTIONS.State machine definitions' -role: 'arn:aws:iam::555555555555:role/role_name' /

ApplyToTarget 명령은 변환된 코드를 대상 서버에 적용합니다. 이 명령을 실행하려면 filterName, treePath 또는 namePath 파라미터 중 하나를 사용하여 적용할 대상 객체를 정의합니다.

다음은 app_wp 상태 머신을 적용하는 코드 예제입니다 AWS Step Functions.

ApplyToTarget -treePath: 'ETL.AWS_STEP_FUNCTIONS.State machines.app_wp' /

변환된 코드가 소스 코드와 동일한 결과를 생성하도록 AWS SCT 확장 팩을 사용할 수 있습니다. 이 함수는 지원하지 않는 Apache Oozie AWS Lambda 함수를 에뮬레이션하는 AWS Step Functions 함수 세트입니다. 이 확장 팩을 설치하려면 CreateLambdaExtPack 명령을 사용할 수 있습니다.

이 명령은 최대 5개의 파라미터를 사용합니다. extPackId에 대한 Oozie2SF를 사용해야 합니다. 이 경우 소스 Apache Oozie 함수를 위한 확장 팩을 AWS SCT 만듭니다.

  • extPackId - Lambda 함수 세트의 고유 식별자입니다. 이 파라미터는 필수 사항입니다.

  • tempDirectory— 임시 파일을 저장할 AWS SCT 수 있는 경로입니다. 이 파라미터는 필수 사항입니다.

  • awsProfile— AWS 프로필 이름.

  • lambdaExecRoles— Lambda 함수에 사용할 실행 역할의 Amazon 리소스 이름 (ARNs) 목록.

  • createInvokeRoleFlag - AWS Step Functions에 대해 실행 역할을 생성할지 여부를 나타내는 부울 플래그입니다.

확장 팩을 설치하고 사용하려면 필요한 권한을 제공해야 합니다. 자세한 내용은 확장 팩의 AWS Lambda 함수를 사용하기 위한 권한 단원을 참조하십시오.

Convert,,, SaveOnS3ConfigureStateMachineApplyToTarget, CreateLambdaExtPack 명령에 대한 자세한 내용은 참조를 참조하십시오.AWS Schema Conversion Tool CLI

CLI스크립트 실행

AWS SCT CLI스크립트 편집을 마친 후에는 확장자가 있는 파일로 저장합니다. .scts 이제 AWS SCT 설치 경로의 app 폴더에서 스크립트를 실행할 수 있습니다. 이렇게 하려면 다음 명령을 사용합니다.

RunSCTBatch.cmd --pathtoscts "C:\script_path\oozie.scts"

위 예제에서는 다음을 대체하십시오.script_path CLI스크립트가 있는 파일의 경로를 입력하세요. 에서 CLI 스크립트를 실행하는 방법에 대한 자세한 내용은 AWS SCT을 참조하십시오스크립트 모드.

다음으로 변환할 수 있는 AWS SCT Apache Oozie 노드 AWS Step Functions

를 AWS SCT 사용하여 Apache Oozie 작업 노드와 제어 흐름 노드를 로 변환할 수 있습니다. AWS Step Functions

지원되는 작업 노드는 다음과 같습니다.

  • Hive 작업

  • Hive2 작업

  • Spark 작업

  • MapReduce 스트리밍 액션

  • Java 작업

  • DistCp 액션

  • Pig 작업

  • Sqoop 작업

  • FS 작업

  • 쉘 작업

지원되는 제어 흐름 노드는 다음과 같습니다.

  • Start 작업

  • End 작업

  • Kill 작업

  • Decision 작업

  • Fork 작업

  • Join 작업