[DataEngineering] Spark

Zoe·2022년 5월 13일
0

데이터공학

목록 보기
5/9

Spark


  • databricks : 요즘 가장 핫한 회사. 8억불. 성장률이 매 해 10%이상씩.
  • 아파치 스파크
  • data lake : 라지 데이터의 또 다른 이름
  • 기업에서 온갖 서버에서 데이터 생성
  • 데이터는 쏟아져 나옴.
  • 일단 한 곳에 모아. 분석도 원활하게 해줌 -> 데이터 레이크의 핵심
  • 정형화된 시스템의 모양
  • snowflake : 스키마가 조인을 할 때. 뭔가 한 쪽으로 계속 긴 것. 핫함.
  • 데이터 관련된 회사가 이처럼 성장하고 있다

✅ spark

  • 프레임워크임
  • spark의 언어 : scala
  • spark + scala 는 언제나 웰컴임.
  • 우린 java...
  • 교수님도 scala는 안 써봄
  • 기존에 했던 거에 spark로 코팅을 함.
  • 맵리듀스로 많이 짰는데 이건 20년..이나 됨. 이걸로 신규 프로젝트하는 회사 없음.
  • 데이터의 흐름에 맞춰서.
  • matrix product 두 번째 단계 맵 : 그대로 아웃풋으로 만들어냄.

✅ 맵리듀스 단점

  • 매 계산마다 hdfs read write가 발생. 오버헤드가 무시할 수 있는 건 아님.
  • 개선한 것이 스파크

✅ 개선한 spark

  • 아예 api수준으로 제공함
  • hdfs 에서 write하는 것을 없애고, 메모리에 저장함
  • 저장되는 영역도 read-only로만
  • 아파치 스파크 : 메모리 데이터의 모디파이가 불가능하게. 그 영역의 이름 RDD
  • 스파크는 RDD가 핵심
  • RDD 는 쉽게 이야기하면 array임
  • 분산돼서 저장될 수 있는 array임.
  • 아파치 스파크의 핵심적인 계산 원리

✅ RDD

  • spark의 핵심적인 자료구조
  • array
  • Immutable
  • 스토리지에서 파일로 저장돼있는 걸 RDD로 변환을 하거나.RDD를 또 다른 RDD로 바꾸는 것 밖에 안 됨
  • 계산을 정의하는 것 : lineage
  • lineage를 바탕으로 다시 계산
  • RDD -> RDD : transformation
  • action이 시작이 될 때 lineage가 실행이 됨
  • 분산 처리가 기본 전제임
  • 버섯
  • transformation
  • 앞 화살표 2개는 lineage
  • action : rdd로부터 원하는 결과를 얻어내는 동작. 앨리먼트 개수를 얻어내거나.

✅ lazy-execution

  • lineage만 생성되는 중.
  • 스케줄링을 최적화할 수 있음.

✅ spark runtime

  • mapper, reducer와 동급

✅ checkpointing

  • 중간 중간에 계산 결과를 디스크에 저장
  • false에 대한 recovery비용을 줄일 수 있음

✅ Evaluation

  • hdfs는 대등한 비교가 아님
  • hadoop bm은 스파크 대비 성능이 좋지 않음
  • 머신의 수가 늘어도 스파크가 성능이 좋음
  • 왜 이렇게 성능의 차이가 나느냐
  • 스파크가 좋다
  • spark vs in-memory hadoop

✅ wordcount

  • map과 flatmap의 차이
  • map : 하나하나의 리스트가 그룹으로 구성이 됨. 각 문장에 대해 각 문장별로 오퍼레이션의 결과를 그룹화
  • flatmap : 그룹 구별을 달리 안 해주겠다. 영역 구별이 없어짐. 개별요소가 하나의 엘리먼트.
  • 그 word를 키로 하고 밸류를 1로 해줌.
  • 같은 키를 가진 애들끼리 묶어줌 : reduceByKey
  • 우리가 구현할 때는 reduceByKey를 구현하는 것이 아니라 다른 것.
  • saveAsTextFile을 시작할 때 앞에 구성한 계산이 실행됨.
profile
iOS 개발자😺

0개의 댓글