참고:

Oracle Cloud Infrastructure Data Flow를 통해 Autonomous Database 및 Kafka에서 큰 파일 처리

소개

OCI(Oracle Cloud Infrastructure) 데이터 플로우는 Apache Spark TM 애플리케이션을 실행하기 위한 전담 관리 서비스입니다. 데이터 플로우는 대용량 파일, 스트리밍, 데이터베이스 작업 처리에 사용되며, 매우 확장 가능한 처리로 많은 애플리케이션을 구축할 수 있습니다. Apache Spark는 클러스터화된 머신을 확장 및 사용하여 최소 구성으로 작업을 병렬화할 수 있습니다.

Apache Spark를 관리 서비스(데이터 플로우)로 사용하면 확장 가능한 여러 서비스를 추가하여 클라우드 처리의 이점을 곱할 수 있으며 이 자습서에서는 다음 사용 방법을 보여줍니다.

데이터 플로우 사용-case.png

이 자습서에서는 대용량 파일 처리, 데이터베이스 쿼리 및 데이터 병합/결합에 사용되는 가장 일반적인 작업을 확인하여 메모리에 다른 테이블을 구성할 수 있습니다. 이 방대한 데이터를 매우 저렴한 비용과 고성능의 Kafka 큐에 기록할 수 있습니다.

목표

필요 조건

작업 1: 오브젝트 스토리지 구조 생성

오브젝트 스토리지가 기본 파일 저장소로 사용됩니다. 다른 유형의 파일 저장소를 사용할 수 있지만 Object Storage는 간단하고 저렴한 방법으로 성능을 가진 파일을 조작할 수 있습니다. 이 사용지침서에서는 두 애플리케이션이 오브젝트 스토리지에서 대규모 CSV 파일을 로드하여 Apache Spark가 빠르고 스마트하게 대용량 데이터를 처리하는 방법을 보여줍니다.

  1. 구획 생성: 구획은 클라우드 리소스를 구성하고 격리하는 데 중요합니다. IAM 정책별로 리소스를 분리할 수 있습니다.

    • 이 링크를 사용하여 구획 관리의 구획 정책을 이해하고 설정할 수 있습니다.

    • 이 자습서에서는 하나의 구획을 생성하여 2개의 애플리케이션의 모든 리소스를 호스트합니다. analytics라는 구획을 생성합니다.

    • Oracle Cloud 기본 메뉴로 이동하여 ID 및 보안, 구획을 검색합니다. [구획] 섹션에서 구획 생성을 누르고 이름을 입력합니다.

      생성-compartment.png

      참고: 사용자 그룹에 접근 권한을 부여하고 사용자를 포함시켜야 합니다.

    • 구획 생성을 눌러 구획을 포함합니다.

  2. 오브젝트 스토리지에 버킷 생성: 버킷은 오브젝트를 저장하기 위한 논리적 컨테이너이므로 이 데모에 사용된 모든 파일은 이 버킷에 저장됩니다.

    • Oracle Cloud 기본 메뉴로 이동하여 스토리지버킷을 검색합니다. Buckets 섹션에서 이전에 생성한 구획(analytics)을 선택합니다.

      선택-compartment.png

    • 버킷 생성을 누릅니다. 4개의 버킷 생성: 앱, 데이터, 데이터 플로우 로그, 전자 지갑

      생성-bucket.png

    • 이러한 4개의 버킷과 함께 버킷 이름 정보를 입력하고 기본 선택으로 다른 매개변수를 유지 관리합니다.

    • 각 버킷에 대해 생성을 누릅니다. 생성된 버킷을 확인할 수 있습니다.

      버킷-dataflow.png

참고: 버킷에 대한 IAM 정책을 검토하십시오. 데모 애플리케이션에서 해당 버킷을 사용하려면 정책을 설정해야 합니다. 개념을 검토하고 여기서 오브젝트 스토리지 개요IAM 정책을 설정할 수 있습니다.

작업 2: Autonomous Database 생성

Oracle Cloud Autonomous Database는 Oracle Database를 위한 관리형 서비스입니다. 이 자습서에서는 보안상의 이유로 애플리케이션이 전자 지갑을 통해 데이터베이스에 접속합니다.

참고: IAM 정책을 검토하여 Autonomous Database 액세스: IAM Policy for Autonomous Database

작업 3: CSV 샘플 파일 업로드

Apache Spark의 성능을 입증하기 위해 애플리케이션은 1,000,000개의 라인이 있는 CSV 파일을 읽습니다. 이 데이터는 하나의 명령행만으로 Autonomous Data Warehouse 데이터베이스에 삽입되어 Kafka 스트리밍(Oracle Cloud Streaming)에 게시됩니다. 이러한 모든 리소스는 확장 가능하며 대용량 데이터에 적합합니다.

GDPPERCAPTA라는 새 테이블이 성공적으로 임포트된 것을 확인할 수 있습니다.

광고 테이블-imported.png

작업 4: ADW ADMIN 비밀번호에 대한 Secret Vault 생성

보안상의 이유로 ADW ADMIN 비밀번호가 Vault에 저장됩니다. Oracle Cloud Vault는 보안을 통해 이 비밀번호를 호스트할 수 있으며 OCI 인증으로 애플리케이션에서 액세스할 수 있습니다.

주: OCI Vault IAM 정책에서 OCI 저장소에 대한 IAM 정책을 검토하십시오.

작업 5: Oracle Cloud Streaming 서비스를 사용하여 Kafka Streaming 생성

Oracle Cloud Streaming은 Kafka와 같은 관리 스트리밍 서비스입니다. Kafka API와 공통 SDK를 사용하여 애플리케이션을 개발할 수 있습니다. 이 사용지침서에서는 스트리밍 인스턴스를 생성하고 두 애플리케이션에서 실행되도록 구성하여 대량의 데이터를 게시하고 소비합니다.

  1. Oracle Cloud 기본 메뉴에서 Analytics & AI, Streams로 이동합니다.

  2. 구획을 analytics로 변경합니다. 이 데모의 모든 리소스는 이 구획에 생성됩니다. 이 기능은 IAM을 더욱 안전하고 제어하기 쉽습니다.

  3. 스트림 생성을 누릅니다.

    생성-stream.png

  4. 이름을 kafka_like(예)로 입력하고 다른 모든 매개변수를 기본값으로 유지 관리할 수 있습니다.

    저장-생성-stream.png

  5. 생성을 눌러 인스턴스를 초기화합니다.

  6. Active 상태가 될 때까지 기다립니다. 이제 인스턴스를 사용할 수 있습니다.

    주: 스트리밍 생성 프로세스에서 기본 스트림 풀 자동 생성 옵션을 선택하여 기본 풀을 자동으로 생성할 수 있습니다.

  7. DefaultPool 링크를 누릅니다.

    기본-풀-option.png

  8. 연결 설정을 확인합니다.

    스트림 접속 - settings.png

    kafka-conn.png

  9. 다음 단계에서 필요할 때 이 정보에 주석을 답니다.

참고: OCI 스트리밍에 대한 IAM 정책(OCI 스트리밍에 대한 IAM 정책)을 검토하십시오.

작업 6: Kafka에 액세스하기 위한 AUTH TOKEN 생성

OCI Streaming(Kafka API) 및 OCI IAM의 사용자와 연관된 인증 토큰을 사용하여 Oracle Cloud의 기타 리소스에 액세스할 수 있습니다. Kafka Connection Settings에서 SASL 연결 문자열에는 이전 작업에 설명된 대로 password라는 매개변수와 AUTH_TOKEN 값이 있습니다. OCI Streaming에 대한 액세스를 사용으로 설정하려면 OCI 콘솔에서 사용자로 이동하여 AUTH TOKEN을 생성해야 합니다.

  1. Oracle Cloud 기본 메뉴에서 ID 및 보안, 사용자로 이동합니다.

    참고: AUTH TOKEN을 생성해야 하는 사용자는 지금까지 생성된 리소스에 대해 OCI CLI 및 모든 IAM 정책 구성으로 구성된 사용자입니다. 리소스는 다음과 같습니다.

    • Oracle Cloud Autonomous Data Warehouse
    • Oracle Cloud 스트리밍
    • Oracle 객체 저장영역
    • Oracle Data Flow
  2. 세부정보를 보려면 사용자 이름을 누르십시오.

    auth_token_create.png

  3. 콘솔 왼쪽에서 인증 토큰 옵션을 누르고 토큰 생성을 누릅니다.

    참고: 토큰은 이 단계에서만 생성되며 단계를 완료한 후에는 표시되지 않습니다. 따라서 값을 복사하여 저장합니다. 토큰 값이 손실되면 인증 토큰을 다시 생성해야 합니다.

    auth_token_1.png

    auth_token_2.png

작업 7: 데모 응용 프로그램 설정

이 자습서에는 필요한 정보를 설정할 2개의 데모 애플리케이션이 있습니다.

  1. 다음 링크를 사용하여 응용 프로그램을 다운로드합니다.

  2. Oracle Cloud 콘솔에서 다음 세부정보를 찾습니다.

    • 테넌시 네임스페이스

      테넌시-namespace-1.png

      테넌시 네임스페이스-detail.png

    • 비밀번호 암호

      저장소-adw.png

      vault-adw-detail.png

      암호 - adw.png

    • 스트리밍 접속 설정

      kafka-conn.png

    • 인증 토큰

      auth_token_create.png

      auth_token_2.png

  3. 다운로드한 zip 파일(Java-CSV-DB.zipJavaConsumeKafka.zip)을 엽니다. /src/main/java/example 폴더로 이동하여 Example.java 코드를 찾습니다.

    코드-variables.png

    • 테넌시 리소스 값으로 변경해야 하는 변수입니다.

      변수 이름 리소스 이름 정보 제목
      이름 공간 테넌시 네임스페이스 테넌트
      OBJECT_STORAGE_NAMESPACE 테넌시 네임스페이스 테넌트
      PASSWORD_SECRET_OCID PASSWORD_SECRET_OCID OCID
      streamPoolId 스트리밍 접속 설정 SASL 접속 문자열의 ocid1.streampool.oc1.iad..... 값
      kafkaUsername 스트리밍 접속 설정 SASL 접속 문자열에서 " " 내의 usename 값
      kafkaPassword 인증 토큰 값은 생성 단계에서만 표시됩니다.

참고: 이 자습서에 대해 생성된 모든 리소스는 US-ASHBURN-1 영역에 있습니다. 작업할 영역을 체크 인합니다. 이 영역을 변경할 경우 두 코드 파일에서 다음 세부 정보를 변경해야 합니다.

작업 8: Java 코드 이해

이 자습서는 Java로 작성되었으며 이 코드를 Python으로 전송할 수도 있습니다. 튜토리얼은 두 부분으로 나뉩니다.

효율성 및 확장성을 입증하기 위해 두 애플리케이션 모두 통합 프로세스의 일반적인 사용 사례에서 몇 가지 가능성을 보여주기 위해 개발되었습니다. 따라서 두 응용 프로그램의 코드는 다음 예제를 보여줍니다.

이 데모는 로컬 머신에서 실행될 수 있으며, 데이터 플로우 인스턴스에 배포되어 작업 실행으로 실행될 수 있습니다.

주: 데이터 플로우 작업과 로컬 시스템 모두에 대해 OCI CLI 구성을 사용하여 OCI 리소스에 액세스합니다. Data Flow측에서는 모든 항목이 미리 구성되어 있으므로 매개변수를 변경할 필요가 없습니다. 로컬 시스템 측에서 OCI CLI를 설치하고 OCI 리소스에 액세스할 수 있도록 테넌트, 사용자 및 전용(private) 키를 구성합니다.

Example.java 코드를 섹션에 표시합니다.

작업 9: Maven으로 애플리케이션 패키지화

Apache Spark에서 작업을 실행하기 전에 Maven으로 애플리케이션을 패키지화해야 합니다. Maven은 라이브러리 및 플러그인을 사용하여 애플리케이션을 패키지하는 가장 알려진 유틸리티 중 하나입니다.

참고:

  1. Java-CSV-DB 패키지

    1. /Java-CSV-DB 폴더로 이동하여 다음 명령을 실행합니다.

      mvn package

    2. 패키징을 시작하면 Maven이 표시됩니다.

      메이븐-package-1a.png

    3. 모든 사항이 올바르면 Success 메시지를 볼 수 있습니다.

      메이븐-success-1a.png

    4. 로컬 Apache Spark 시스템에서 응용 프로그램을 테스트하려면 다음 명령을 실행합니다.

      spark-submit --class example.Example target/loadadw-1.0-SNAPSHOT.jar

  2. JavaConsumeKafka 패키지

    1. /JavaConsumeKafka 폴더로 이동하여 다음 명령을 실행합니다.

      mvn package

    2. 패키징을 시작하면 Maven이 표시됩니다.

      메이븐-package-2a.png

    3. 모든 사항이 올바르면 Success 메시지를 볼 수 있습니다.

      메이븐-success-2a.png

    4. 로컬 Apache Spark 시스템에서 애플리케이션을 테스트하려면 다음 명령을 실행합니다.

      spark-submit --class example.Example target/loadkafka-1.0-SNAPSHOT.jar

작업 10: 실행 확인

  1. ADW 삽입 확인

    1. Oracle Cloud 주 메뉴로 이동하여 Oracle DatabaseAutonomous Data Warehouse를 선택합니다.

    2. 처리된 로그 인스턴스를 눌러 세부정보를 봅니다.

    3. 데이터베이스 작업을 눌러 데이터베이스 유틸리티로 이동합니다.

      광고-actions.png

    4. ADMIN 사용자에 대한 인증서를 입력합니다.

      광고-login.png

    5. SQL 옵션을 눌러 질의 유틸리티로 이동합니다.

      광고-선택-sql.png

    6. query를 실행하여 테이블에 있는 1,000,000개의 행을 확인합니다.

      ADW 쿼리-organizations.png

  2. 실행 로그 확인

    • 작업이 데이터 세트에 액세스하고 로드할 수 있으면 실행 로그에서 확인할 수 있습니다.

      스파크-csv-results.png

작업 11: 데이터 플로우 작업 생성 및 실행

이제 두 애플리케이션이 로컬 Apache Spark 머신에서 성공적으로 실행되면서 테넌시의 Oracle Cloud Data Flow에 배포할 수 있습니다.

  1. Oracle Cloud 기본 메뉴에서 Analytics & AIData Flow로 이동합니다.

  2. 데이터 플로우 애플리케이션을 생성하기 전에 analytics 구획을 선택해야 합니다.

  3. 애플리케이션 생성을 누릅니다.

    create-dataflow-app.png를 선택합니다.

  4. 다음 그림과 같이 매개변수를 완성합니다.

    데이터 플로우-app.png

  5. 생성을 누릅니다.

  6. 생성 후 데모 확장 링크를 눌러 세부정보를 봅니다.

  7. Run을 눌러 작업을 실행합니다.

  8. 매개변수를 확인하고 Run을 다시 누릅니다.

    데이터 플로우 실행-job.png

  9. 작업 상태를 확인하고 Status가 Succeeded로 변경될 때까지 기다린 후 결과를 확인할 수 있습니다.

    데이터 플로우 실행-status.png

    데이터 플로우 실행-success.png

다음 단계

첫 번째 애플리케이션은 Kafka Streaming에 데이터를 게시합니다. 두번째 응용 프로그램은 Kafka에서 이 데이터를 소비합니다.

승인

추가 학습 자원

docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하십시오. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.