Oracle Cloud Infrastructure Data Flow를 사용하여 외부 오브젝트 스토리지 소스의 데이터 분석

데이터는 Amazon Web Services S3 또는 Azure Blob Storage와 같은 여러 클라우드에 상주하지만 공통 분석 플랫폼에서 분석하려고 합니다. Oracle Cloud Infrastructure Data Flow는 빅 데이터 클러스터를 배치 또는 관리할 필요 없이 데이터가 있는 위치에 관계없이 빅데이터 분석을 개발하고 실행할 수 있도록 해주는 완전 관리형 Spark 서비스입니다.

구조

이 구조는 AWS (Amazon Web Service) S3 버킷 또는 Azure Blob Storage 버킷에 접속하여 데이터를 분석하고 Oracle Cloud Infrastructure Object Storage에 결과를 저장하는 Oracle Cloud Infrastructure Data Flow를 보여줍니다.

AWS에 접속하려면 데이터 플로우 애플리케이션에 AWS 액세스 키와 보안 키가 필요합니다. Azure에 접속하려면 데이터 플로우에 Azure 계정 이름과 계정 키가 필요합니다.

다음 다이어그램은 이 참조 아키텍처를 보여 줍니다.



oci-dataflow-architecture-oracle.zip

아키텍처에는 다음과 같은 구성 요소가 있습니다:

  • 지역

    Oracle Cloud Infrastructure 지역은 가용성 도메인이라는 하나 이상의 데이터 센터를 포함하는 지역화된 지역입니다. 지역은 다른 지역과 독립적이며 방대한 거리는 국가 또는 대륙에서 분리할 수 있습니다.

  • Oracle Cloud Infrastructure Data Flow

    Oracle Cloud Infrastructure Data Flow는 클러스터, 운영 팀 또는 고도로 전문적인 Spark 지식 없이도 모든 규모에서 Spark 작업을 생성, 편집 및 실행할 수 있는 클라우드 기반의 서버리스 플랫폼입니다. 런타임 중 데이터 플로우는 애플리케이션 소스를 가져오고, 접속을 생성하고, 데이터를 검색하고, 처리하고, 출력을 Oracle Cloud Infrastructure Object Storage에 기록합니다.

  • 객체 스토리지

    오브젝트 스토리지는 데이터베이스 백업, 애널리틱스 데이터, 이미지 및 비디오와 같은 풍부한 컨텐츠를 포함하여 모든 컨텐츠 유형의 대규모 구조적 및 비구조적 데이터에 신속하게 접근할 수 있도록 합니다. 인터넷이나 클라우드 플랫폼 내에서 직접 안전하게 데이터를 저장하고 검색할 수 있습니다. 성능 저하 또는 서비스 신뢰성을 경험하지 않고도 원활하게 스토리지를 확장할 수 있습니다. 빠르고 즉각적이며 자주 액세스해야 하는 "핫" 스토리지에 표준 스토리지를 사용합니다. 장기간 보존하고 거의 액세스하지 않는 "콜드" 스토리지에 아카이브 스토리지를 사용합니다.

권장 사항

Oracle Cloud Infrastructure Data Flow를 사용하여 외부 오브젝트 스토리지 소스의 데이터를 분석하려면 다음 권장 사항을 시작점으로 사용하십시오.

요구 사항은 여기에 설명된 아키텍처와 다를 수 있습니다.

  • 데이터 위치

    이 아키텍처는 사용자가 데이터 플로우를 사용하여 Spark 애플리케이션을 쉽고 빠르게 테스트할 수 있도록 설계되었습니다. 타당성 테스트에 성공한 후에는 소스 데이터를 Oracle Cloud Infrastructure Object Storage로 전송하여 성능을 개선하고 비용을 절감할 것을 권장합니다.

  • 오브젝트 스토리지

    이 아키텍처는 표준 Oracle Cloud Infrastructure Object Storage를 사용하여 처리된 출력을 저장하므로 다른 클라우드 서비스가 추가 분석 및 표시를 위해 출력에 접근할 수 있습니다.

고려 사항

Oracle Cloud Infrastructure Data Flow를 사용하여 외부 오브젝트 스토리지 소스의 데이터를 분석할 때 다음 배치 옵션을 고려하십시오.

  • Spark 애플리케이션

    Amazon Web Services S3 또는 Azure Blob Storage의 데이터에 대해 실행 중인 기존 Spark 애플리케이션이 있는 경우 Oracle Cloud Infrastructure Data Flow에서 동일한 Spark 애플리케이션을 사용할 수 있습니다.

  • 성능

    데이터 센터 간 데이터 읽기는 본질적으로 느립니다. 이 구조는 개념 증명 또는 머신 러닝 작업과 같이 CPU를 많이 사용하는 응용 프로그램에 적합합니다. 개념 증명에 성공하면 대규모 프로덕션 작업을 실행하기 전에 로컬에서 소스 데이터를 Oracle Cloud Infrastructure Object Storage로 전송합니다.

  • 보안

    정책을 사용하여 Oracle Cloud Infrastructure 리소스에 액세스할 수 있는 사용자 및 정도를 제한합니다.

    IAM(Oracle Cloud Infrastructure Identity and Access Management) 를 사용하여 데이터 플로우데이터 플로우 내의 실행 관리 모두에 대해 특정 사용자와 사용자 그룹에 권한을 지정할 수 있습니다.

    암호화는 기본적으로 Oracle Cloud Infrastructure Object Storage에 대해 사용으로 설정되며 해제할 수 없습니다.

  • 비용

    Oracle Cloud Infrastructure Data Flow는 사용량 기준 지불이므로 생성 시가 아니라 Data Flow 애플리케이션을 실행할 때만 비용을 지불합니다.

    대량의 Amazon Web Services S3 데이터를 처리하면 데이터 송신 비용이 높아질 수 있습니다.

배치

이 참조 아키텍처의 Terraform 코드는 Oracle Cloud Infrastructure Resource Manager에서 샘플 스택으로 제공됩니다. 이 샘플 Terraform 스택은 IAM 정책 및 OCI Object Storage 버킷(타사 스토리지 아님)과 함께 OCI Data Flow 애플리케이션 환경을 배포합니다. 기본적으로 데모 Python Spark 애플리케이션도 배포됩니다. GitHub에서 코드를 다운로드하고 특정 요구 사항에 맞게 사용자 정의할 수도 있습니다.

  • Oracle Cloud Infrastructure Resource Manager의 샘플 스택을 사용하여 배치합니다.
    1. Oracle Cloud에 배치을 누릅니다.

      아직 사인인하지 않은 경우 테넌시 및 사용자 인증서를 입력합니다.

    2. 스택을 배치할 지역을 선택합니다.
    3. 화면 프롬프트 및 지침에 따라 스택을 만듭니다.
    4. 스택을 생성한 후 Terraform 작업을 누르고 계획을 선택합니다.
    5. 작업이 완료될 때까지 기다린 후 계획을 검토합니다.

      변경하려면 [스택 세부정보] 페이지로 돌아가서 스택 편집을 누르고 필요한 변경을 수행합니다. 그런 다음 계획 작업을 다시 실행합니다.

    6. 추가 변경이 필요하지 않은 경우 스택 세부정보 페이지로 돌아가서 Terraform 작업을 누르고 적용을 선택합니다.
  • GitHub에서 Terraform 코드를 사용하여 배포합니다.
    1. GitHub으로 이동합니다.
    2. 로컬 컴퓨터에 저장소를 복제하거나 다운로드합니다.
    3. README 문서의 지침을 따릅니다.

GitHub에서 제공되는 Terraform 코드 이외에 아래 코드 조각은 Amazon Web Services S3에 연결하는 방법과 데이터를 쿼리하는 방법을 설명합니다.

  • S3에 접속하여 데이터를 질의하려면 hadoop-aws. jaraws-java-sdk. jar 패키지를 포함해야 합니다. 다음과 같이 pom. xml 파일에서 이러한 패키지를 참조할 수 있습니다:
    <dependency>
    	<groupId>org.apache.hadoop</groupId>
    	<artifactId>hadoop-aws</artifactId>
    	<version>2.9.2</version>
    	<exclusions>
    	<exclusion>
    		<groupId>org.apache.hadoop</groupId>
    		<artifactId>hadoop-common</artifactId>
    	</exclusion>
    	</exclusions>
    </dependency>
    <dependency>
    	<groupId>com.amazonaws</groupId>
    	<artifactId>aws-java-sdk</artifactId>
    	<version>1.7.4</version>
    </dependency>
  • 다음과 유사한 코드를 사용하여 Amazon Web Services S3에 접속합니다. 액세스 키와 보안 키를 제공해야 합니다. 아래 코드 조각에서 이러한 값은 각각 변수 ACCESSSECRET로 표시됩니다:
    SparkSession spark = SparkSession.builder().master("local")
    	.config("spark.hadoop.fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
    	.config("spark.hadoop.fs.s3a.access.key", ACCESS)
    	.config("spark.hadoop.fs.s3a.secret.key", SECRET)
    	.config("fs.s3a.connection.ssl.enabled", "false")
    	.getOrCreate();
  • 다음과 유사한 코드를 사용하여 지정한 S3 위치 및 테이블 이름으로 데이터를 질의합니다.
    Dataset<Row> ds = sqlContext.read().format("csv").option("header","true").load("<S3 Location>");
    ds.createOrReplaceTempView("<Table Name>");
    Dataset<Row> result_ds = sqlContext.sql("<SQL Query Using <Table Name>>");

자세히 살펴보기

이 아키텍처의 기능에 대해 자세히 알아봅니다.

Oracle Cloud Infrastructure Data Flow:
Apache Spark:
  • 코드 조각에 표시된 SparkSession 및 데이터 집합 클래스에 대한 자세한 내용은 Spark Java API 설명서를 참조하십시오.

  • Apache Spark에서 지원되는 기타 API에 대한 자세한 내용은 Spark API 설명서 를 참조하십시오.

일반적인 Oracle Cloud Infrastructure 아키텍처 지침은 Oracle Cloud Infrastructure에 대한 모범 사례 프레임워크 를 참조하십시오.

변경 로그

이 로그에는 중요한 변경사항이 나열됩니다: