ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Apache Spark(아파치 스파크) 개념 맛보기
    Big Data 2021. 4. 26. 20:29

    날이 갈수록 AI가 화두가 되어가고 있습니다. 그리고 그 안을 들여다보면 데이터의 중요성을 알 수 있습니다.

    개인적인 생각으로는 머지않아 인공지능 기술은 더이상 특정 기업의 전유물이 아닐 것 입니다.

    우리가 날씨 API를 사용하는 것처럼, 라이브러리를 사용하는 것처럼 많은 딥러닝 모델 및 API가 생겨있을 것 입니다.

    때문에 모델을 더 잘 만드는 것보다 양질의 데이터를 보유하고 있는것이 가장 중요한 일이라고 생각됩니다.

     

    데이터만 가지고 있다면 잘 만들어진 모델에 재학습을 한다면 각각의 서비스에 더 최적화된 인공지능을 보유할 수 있을 것 입니다.

     

    오늘은 빅데이터 처리의 강력한 기술인 Spark에 대해 간략히 맛보겠습니다.

     

    탄생 이유

     

    기존의 MapReduce가 빅데이터 분석을 쉽게 만들어주긴 하였지만 몇몇 문제를 해결하고자 개발되었습니다.

    • 디스크에서 읽고 쓰는 방식에서 오는 아쉬운 속도
    • 머신러닝, 그래프 처리
    • 반복적인 처리

    스파크는 위의 문제를 디스크 방식이 아닌 인-메모리 방식으로 해결하였습니다. 매번 처리할때마다 디스크에서 가져오기 보다는 메모리에 다 올려두고 처리를 합니다.

    그리고 fault-tolerance 를 해결하기위해 복잡성(relica, checkpoint 등)을 버리고 read-only 방식을 채용하였습니다.

    변경이 일어나면 기존 데이터를 변경 하는 것이 아닌 계보만 기록하여 fault-tolerance 하게 만들었습니다.

    Rdd lineage

    위와 같은 처리방식을 통해 Hadoop에 비해 100배 이상 빠르다고 결과를 홍보하고 있습니다.

    스파크의 철학

     

    스파크는 통합 컴퓨팅 엔진이며 클러스터 환경에서 데이터를 병렬로 처리하는 라이브러리 집합

     

    1. 빅데이터 애플리케이션 개발에 필요한 통합 플랫폼

      스파크가 도입되기전에는 각 언어의 프레임워크, 라이브러리가 제공하는 기능을 활용하여 프로세스을 조합하여 애플리케이션을 개발하였습니다. 그렇다면 하나의 애플리케이션에서 관리해야할 마이크로프로젝트가 늘어난다는것을 의미할 수 있습니다.
      하지만 스파크를 활용하면 데이터 전처리부터 분석과 관련된 모든 과정을 오직 스파크 애플리케이션을 통해 수행할 수 있습니다.

      즉, 단일 프로그래밍 인터페이스를 통해 빅데이터 처리 및 분석을 할 수 있는 능력을 제공합니다

    2. 통합 컴퓨팅엔진

      통합이란 관점을 중시하며 기능의 범위를 컴퓨팅 엔진으로 제한하였습니다. 때문에 저장소(파일포함)의 데이터를 연산하는 역할만 수행합니다.  그 대신 클라우드 저장소 및 다양한 서비스들과의 연결이 용이합니다. 

    스파크의 확장

     

    기본 아키텍처

     

    클러스터는 여러 컴퓨터의 자원을 모아 하나의 컴퓨터처럼 사용할 수 있게 만들어줍니다.

    하지만 클러스터를 구성하는 것 만으로는 아무것도 할 수가 없습니다. 클러스터에서 작업을 조율할 수 있는 프레임워크가 필요합니다.

    스파크가 해당 역할을 함으로서 클러스터의 데이터 처리 작업을 관리하고 조율 합니다

     

    • 클러스터 매니저

      1. 스파크 애플리케이션이 제출되면 실행에 필요한 자원을 할당합니다.
      2. 스파크 애플리케이션을 실행할 클러스터 머신을 유지합니다.
      3. 드라이버와 익스큐터를 띄우는 역할을 합니다.

      간단하게 클러스터 매니저는 클러스터의 하드웨어 관리를 한다고 할 수 있습니다.


      • Driver

        1. 스파크 애플리케이션의 정보를 유지관리, 사용자 프로그램이나 입력에대한 대응, 전반적인 익스큐터 프로세스의 작업과 관련된 분석, 배포 그리고 스케쥴링 역할을 수행합니다.
        2. 스파크 애플리케이션의 실행을 제어하고 물리적 컴퓨팅 자원 확보와 익스큐터 실행을 위해 클러스터 매니저와 통신을 합니다.

      • Executor

        1. 드라이버 프로세스가 할당한 작업을 실행합니다.
        2. 작업 진행상황을 드라이버에게 보고를 합니다.스파크 애플리케이션

        클러스터 매니저에게 할당 받은 자원으로 작업을 처리합니다.

     

     

Designed by Tistory.