반응형

Spark MLlib(Machine Learning Library)

  • 머신러닝 알고리즘과 유틸리티 기능을 제공하는 라이브러리로, 분류, 회귀, 군집화 등의 머신러닝 작업을 지원합니다.
  • Spark 1.6 을 시작으로 MLlib 은 spark.mllib 과 spark.xml 로 분리 되었습니다.
    • spark.mllib 은 RDD 베이스이며 유지보수 상태입니다.
    • spark.xml 은 데이터 프레임 기반 API 입니다. 모든 새로운 기능은 spark.xml 로 업데이트 되고 있습니다.
  • MLlib API 는 특성을 추출하고 변형하고 파이프라인을 구축하고 배포하는 동안 모델을 보존해줍니다.
반응형
반응형

Spark SQL 이란?

  • 구조화된 데이터와 잘 작동하며, 구조화된 데이터에 대한 분산 쿼리 및 데이터 처리를 제공하는 라이브러리입니다.
  • RDBMS 테이블, 구조화된 데이터의 파일 모팻에서 데이터를 읽어 그 데이터로 스파크에 영구적이거나 임시적인 테이블을 SQL 문을 사용하여 데이터에 쉽게 접근할 수 있도록 합니다.

 

반응형
반응형

Spark 특성 4가지

Spark 특성으로는 4가지가 있습니다. 속도, 사용 편의성, 모듈성, 그리고 확장성이 있습니다.

 

 

속도

  • Spark 는 질의 연산을 방향성 비순환 그래프(directed acyclic graph, Dag)로 구성합니다.
  • Dag 의 스케줄러와 질의 최적화 모듈은 효율적인 연산 그래프를 만들어서 각가의 태스크로 분해하여 클러스터의 워커 노드 위에서 병렬 수행될 수 있도록 해줍니다.
  • Spark 는 물리적 실행 엔진인 Tungsten(텅스텐) 의 전체적 코드 생성(whole-stage code generation) 이라는 방법을 사용하여 간결한 코드를 생성합니다.
  • Spak 는 디스크 I/O 를 제한적으로 사용하여 성능이 크게 향상시켰습니다.

*방향성 비순환 그래프(directed acyclic graph, Dag)

https://infoinhere.tistory.com/118

 

사용 편의성

  • RDD 를 제공하여 편한 언어로 빅데이터 애플리케이션을 만들 수 있도록 해줍니다.

 

모듈성

  • api 로 이루어진 통합 라이브러리를 제공합니다.
  • 컴포넌트로는 스파크 SQL, 스파크 정형화 스트리밍, 스파크 MLlib, GraphX 가 있습니다.

 

확장성

  • Spark 는 저장보다는 빠른 병렬 연산 엔진에 집중되어 있습니다. 저장과 연산을 모두 포함하는 Apache Hadoop 과 달리 저장과 연산을 분리했습니다.
  • Spark DataFrameReader 와 DataFrameWriter 는 kafka, Kinesis, Azure, AWS S3 등의 데이터 소스에서 데이터를 읽어와 논리적인 데이터 추상화 레벨에서 처리하도록 확장이 가능합니다.
  •  
반응형
반응형

방향성 비순환 그래프(directed acyclic graph, Dag)

방향성 비순환 그래프(DAG)는 각 요소가 특정 방향으로 향하고 있으며, 상호적으로 연결되어 순환하지 않는 구조를 가지는 그래프를 의미합니다.

 

특징

  • 방향성: 각 엣지는 방향을 가지고 있습니다.
  • 비순환성: 그래프 내에서 순환 또는 루프가 없습니다.

 

장점

  • 효율적인 데이터 처리: 순환이 없기 때문에, 데이터 처리와 알고리즘이 효율적으로 이루어집니다.
  • 의존성 관리: 작업 간의 의존성을 명확하게 정의하여 작업을 효과적으로 조정할 수 있습니다

 

단점

  • 복잡한 구현: 일부 문제에 대한 DAG의 구현은 복잡할 수 있습니다.
  • 일부 작업에서 효과적이지 않을 수 있음: 특정 유형의 문제에는 DAG가 효과적이지 않을 수 있습니다.

 

응용사례

  • 작업 스케줄링: 작업 간의 의존성을 관리하고 병렬로 실행 가능한 작업을 식별하는 데 사용됩니다.
  • 데이터 흐름 그래프: 머신 러닝 및 데이터 처리에서 데이터 흐름을 표현하는 데 사용됩니다.

 

효과적인 사용 방법

  • 의존성 분석: 작업 간의 의존성을 명확하게 이해하고 그에 따라 작업을 조직합니다.
  • 효율적인 병렬 처리: 병렬로 실행 가능한 작업을 식별하여 시스템 자원을 효과적으로 활용합니다.
반응형

'Data engineer > Apache Spark' 카테고리의 다른 글

[Spark]GraphX  (0) 2024.01.07
[Spark]Spark 정형화 스트리밍(Structured Streaming)  (1) 2024.01.07
[Spark]Spark MLlib(Machine Learning Library)  (0) 2024.01.07
[Spark]Spark SQL 이란?  (0) 2024.01.07
[Spark]Spark 특성 4가지  (1) 2024.01.07

+ Recent posts