SOGM'S Data

[1-1].SPARK 의 개념과 활용 본문

About Data/Engineering

[1-1].SPARK 의 개념과 활용

왈왈가부 2021. 11. 30. 01:50

* 본 포스트는 SK T아카데미 아파치 스파크 입문 강의를 듣고 요약 정리한 내용입니다.

<하둡 생태계> 

  • HDFS : 하둡 분산 처리 파일 시스템 (Haddop distributed File System) 
    • 재연산시 신뢰성을 위해 카피
    • large file에 좋으나  small file과 low latency가 단점
    • masternode - slave node로 구성
    • master는 메타데이터 매니저 , slave 는 실제 storing data   

  • 온프레미스 환경에서 실제로 데이터노드 손실되는경우가 많다. 특히, 디스크 깨지는경우, 특정노드의 리카드, os fault 등등  
    • HDFS는 이것을 막기 위해 분산 복사하여 카피 가지고 있음. 즉 랙에 중복이 없다. 하단 이미지 참조
    • 하나의 블록이 하나의 노드에 저장이 아니라 COPY 복제하여 특정 노드, 디스크에 문제가 생겨도 FAULT TOLERANCE를 보장&nbsp;
       
  • MapReduce : 하둡 에코시스템의 간단한 프로그래밍 프레임웤을 제공
    • 코드를 병렬적으로 작성하기 매우 편함.
    • map과 reduce의 과정. 파일이 document라 가정. word count가 현재 분산병렬처리되면서 단어 개수가 세짐. i는 2개, am은 2개 등등...
        
  • SPARK
    • 기존 map_reduce보다 빠르다. disk 기준 10배 , in memory는 100배 빠름.
    • machine learning 알고리즘에 강함. in memory에서 처리
    • java, python, scala 코딩 가능
    • 하둡 에코시스템에 띄울 수 있다.
    • 맵리듀스 VS 스파크
      • 맵리듀스의 데이터 처리 (읽고 쓰고의 반복으로 DISK I/O), Shuffle, sort는 모든 노드의 값들을 reduce쪽으로 보내야함으로 DISK I/O발생 커짐.
      • SPARK의 형태 IN MEMORY로 처리하여 빠름. DISK I/O 발생하지않음. *SPARK의 등장시 램의 가격이 매우싸졌던 시기임ㅋㅋㅋ
         
    • SPARK는 scala로 개발되어서  functional하다. (파이썬 같은 개념) hadoop은 low level 언어로 개발됨 ( c 같은 개념) 장단점이 있다.
    • sort competition에서 spark가 hadoop mapreduce보다 3배정도 빠르다. 노드 수도 1/10만 사용,
    • SPARK의 역할?
      • 데이터 분석 (SQL, MLIib, GraphX)
      • 실시간 스트리밍 처리
    • SPARK의 Basic Architecture
      •  
    • SPARK의 dataframe 처리 예시
      • CSV File 처리 by spark.&nbsp; narrow는 map , wide는 reduce라 보면됨.
        • 실제스파크는 data transformation(파란색 블럭)에선 작동하지않고 collect같이 빨간 부분에서만 작동이 됨.
        • spark는 데이터 전처리용, Feature Engineering, 집계로 많이 사용함.  
    • 그렇다면 Spark는 언제 쓰면 안될까?
      • spark만큼으로는 못함. nosql, 하둡 등과 결합되어야 좋음.
      • spark은 DB가 아니다! 쿼리를 막날리면 안됨, 
        • disk I/O발생하고 DB처럼 Index가 없어서 full scan임.
    • 하둡 VS 스파크 
      • 스파크는 하둡의 Map-reduce와 비교되는 것
  • 스파크는 inmemory만 쓰는건 아님 disk input/output 발생하기도하나 map-reduce보다 괜춘
Comments