-
spark는 예전에 간단하게 한번 알아본적이 있다....http://weejw.tistory.com/15
이때는 간단한 개요정도만 알아봤는데.. 오늘은 좀 더 깊이 알아보자.
이전 포스트에서 주요기능이라 했던
map-reduce와 spark streaming 두가지를 더 공부해보자.
+2018년 2월 27일 추가 : spakr steaming 공부
Map-Reduce
맵 리듀스란?
-대용량 데이터를 처리하기위한 분산 프로그래밍 모델
-기존처리방식인 데이터를 가져오고->처리->저장의 데이터를 가져오는 비용을 줄이기 위해 고안됨
-데이터가 저장된 곳에서 처리를 할 수 있도록 만듬
맵과 리듀스?
각 단계는 입려과 출력으로 key,value쌍 타입,함수 모드 프로그래머가 선택
-맵 : 흩어져 있는 데이터를 key,value형태로 연관성있게 종류 별로 모음
-리듀스 : map작업 후 중복제거 후 원하는 데이터 추출
-아래에 사진처럼 최초입력 파일은 split후 HDFS에 저장한다. HDFS는 파이시스템으로 나중에 한번 더 포스팅해보자
-큰 데이터를 한번에 처리할 수 없기에 split(하지만 너무 작아도 오버헤드발생)
-리듀스 함수로 데이터를 전달하는 것을 셔플링이라고한다.
+10/19 추가 http://paranwater.tistory.com/417
MapRduce에서 Computation 최고 단위는 job이다. job이 데이터 로드해서 map연산->셔플->리듀싱 결과를 데이터로 작성한다.
파티셔너와 콤바이너
파티셔너
-맵 함수의 결과를 각 파티션으로 나누어 저장
-기준은 key이며 해쉬함수를 key에 적용해 처리하는 것이 일반적
컴바이너
-로컬 리듀서라고 하며 리듀서와 동일하게 사용
-맵->리듀스 데이터 전달시 네트워크를 이용하는데 이때 전달할 데이터 양을 줄이기 위해 사용
스파크와 하둡의 맵리듀스의 차이는?
링크에 있던 내용중 굉장히 재밌는 설명이 있었다.
'앙트레'를 요리하는 단 하나 요리사는 일정한 '계산'이라고 가정하였을 때
하둡은 앙트레를 여러 요리사가 조각으로 요리한다. 각 요리사들은 별도의 스토브와 음식선반이 있고
A요리사가 소스를 요리하면 B요리사는 고기를 요리한다 이과정을 MAP이라고 하고 MAIN 요리사가 전체 요리를
조합하는걸 REDUCE라 한다
하둡의경우
각 요리과정중 스토브에 물건을 두지 않고 특정 과정을 수행할때마다 결과를 선반에 놓는다
스파크의 경우
각 요리과정 사이에 스토브에 물건을 둘 수있다.
그래서 스파크가 더 빠르다.
또
하둡은 조리법이 비논리적이고 이해하기 어려운 언어로 작성된다.
스파크는 조리법이 아주 멋지게 적혀있다.
위 링크중 반복적으로 언급된것은
스파크가 하둡보다 빠르며 사용하기 편하고 그래프처리가 가능하며
실시간 스트리밍을 통해 데이터 처리(spark streaming)가 된다...인 것같다.
++10/19일추가
MapReduce는 자체 프로세스에서 각 job을 실행 job이 끝나면 그 프로세스 죽음
Spark는 단일 프로세스에서 많은 job을 실행 job이 없어도 spark application life time동안 실행됨
번외 HDFS를 이용한 맵리듀싱의 단점..과 그걸 해결하기 위한 RDD.. http://weejw.tistory.com/46
출처url
http://1004jonghee.tistory.com/entry/MapRedcue-%EC%BB%B4%EB%B0%94%EC%9D%B4%EB%84%88Combiner
http://over153cm.tistory.com/entry/%EB%A7%B5%EB%A6%AC%EB%93%80%EC%8A%A4MapReduce%EB%9E%80-1
- GoF의 디자인 패턴으로 유명한 랄프 존슨(Ralph Johnson) 교수는 프레임워크를 "소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것 [본문으로]
'2017년 > Spark' 카테고리의 다른 글
버츄어박스에 coreOs+Dockerswarm+spark 를 깔아보자 (0) 2017.07.21 도커에서 spark를 설치해 보자 (0) 2017.07.13 RDD(Resilient Distribured DataSet)란? (0) 2017.07.12 spark를 설치해보자 (0) 2017.07.11 spark란? (0) 2017.06.25