Icednut's Note

스파크 강의 노트 Day 2

2017-05-26

Local에 Spark 환경 구축하기

  1. vm 띄우면 별다른 작업할거 없음
    • goo.gl/2nKkOZ
  2. Zeppelin download
  3. Spark Download

Stream Processing

  • Spark으로도 수집을 할 수 있는데 잘 안씀. 플럼, 카프카를 이용
  • Storm은 MapReduce로 된 코드를 마이그레이션 하기 편함
  • Streaming Application은 따로 kill하지 않는 이상 끝나지 않고 계속 실행됨
  • 모니터링은 카프카 다룰 때 한 번더 언급
  • windowing
  • Production 환경에서는 checkpointing 관련 로직을 고려해야됨

Accumulator & Broadcast

  • shared 변수를 공유하고 싶을 때 사용, (ex: 데이터 모델을 공유하고 싶을 때)
  • Broadcast는 read-only. 전체 노드가 다 공유하고 싶을 때 사용. (ex: 다른 데이터와 조인을 할 때 활용할 수도 있음)
  • Accumulator는 update 가능

Streaming Using Kafka

  • 카프카로 데이터가 들어오면 잠시 저장함. 데이터 유실이 없음

Spark SQL

  • Spark SQL은 데이터프레임을 사용
  • Spark SQL은 내부적으로는 RDD를 사용하지만, Catalyst Optimizer가 SQL실행을 최적화 해줌
  • 실습 진행
    • udf가 뭐지?

Spark 2.0

  • Tungsten: 메모리 관리, CPU 사용 개선을 진행
  • Strunctured Streaming
  • Spark Session을 쓰면 어떤 언어를 쓰던 ML 모델링을 할 수 있다.
  • Catelog API
  • Dataset

Tungsten

  • Whole-stage Codegen을 통해서 스파크 내부에서 코드 최적화를 진행함

Structured Streaming

Lambda Architecture

Machine Learning

  • Spark 진입장벽
    • Scala
    • Spark API 사용방법
    • ML
  • Spark.mllib는 RDD를 기반으로, Spark.ml는 DataFrame 기반으로 만들어짐.

Data Types

  • vector = array
    • Local vector는? 분산이 아니라 싱글 머신(1 JVM)에 있는 Array
    • dense vector: 일반적인 array
    • sparse vector: array이긴 한데, 복잡한 array (ex: Verctors.sparse(10, Array(1, 2), Array(2, 3)))
  • LabeledPoint: 레이블이 붙은 벡터
  • Matrix
    • vector 모음
  • IndexedRowMatrix
    • vector가 stack처럼 쌓여있는 것
  • CoordinateMatrix
  • BlockMatrix
  • ML 예제: https://goo.gl/
  • 어떤 ML 함수를 쓰느냐에 따라 vector나 matrix 써야됨
Tags: Spark