Spark스터디에 참여할 수 있는 좋은 기회가 생겼다.
아래의 책을 여러 명이 읽어보고 정리하면서 서로의 생각을
공유하는 스터디 이며 그 첫 장을 여는 포스팅.
많이 부족하고 처음 작성해 보는 포스팅이라 서툴 수 있는데
열심히 노력해서 다른 분들처럼 멋있는 글을 써보고 싶덩

- HDFS(Hadoop Distributed File System)
- YARN(Yet Another Resource Negotiator)
- data locality, shared nothing, map-reduce
- schema-on-write <-> schema-on-read
- RDD(Resilient Destributed Dataset)
- fault-tolerant 내결함성
책은 8 Chapter지만, 2 Part로 나눌 수 있음.
Part 1 - 스파크 기초 (ch.1 ~ ch.4)
Part 2 - 스파크 응용 (ch.5 ~ ch.8)
1장에서는
이걸 왜 써요 ? 라는 사람들에게 하는 좋은 비유
예전에는 무거운 짐을 싣기 위해서 소를 이용했는데,
한 마리의 소를 이용해서 짐을 싣을 수 없을 경우에는
더 힘이 센 소를 찾기 보단
여러 마리의 소를 이용해 짐을 옮기는 방법이 효율적이지 않나?
빅데이터도 그렇다 - 그레이스 호퍼 제독
2000년대 구글, 야후가 시작 한 싸움 ->
구글은 2003년에 더 구글 파일 시스템 이라는 논문을 시작으로
2004년에 Map-Reduce 논문을 발표함 이게 추후의 Hadoop의 시초 ->
야후가 2006년 공식적 Hadoop을 채택하고 구글의 인적자원을 가져감
Hadoop은 데이터 지역성이라는 개념에 바탕을 둔 데이터 저장 및 처리 플랫폼이다
=> 책에서는 저렇게 정의를 했는데 내 식으로 다시 정의해보면
큰 문제(데이터)를 작은 문제(데이터)로 나눠서 저장 및 문제를 해결하려는
좋은 도구 같음
데이터지역성(data locality)(이)란 데이터를 호스트로 보내 처리하는 기존 방식과 달리,
데이터가 있는 곳으로 이동해서 계산하는 데이터 처리방식임(오? 신박함)
각 Node는 다른 Node들과 통신 할 필요없이 전체 데이터의 훨씬 작은 부분을 독립적으로
처리하면서 분산 파일 시스템의 구현을 통해 해결함
이걸 가능하게 하는 게 비공유 접근(shared nothing)개념
schema-on-read시스템으로 스키마가 따로 없기에 광범위한 데이터를 저장하고 처리 할 수 있는게 특징임
클러스터의 하나 이상의 노드에 파일이 분산되어 있는 블럭으로 구성된 가상 파일 시스템

적재 프로세스 설명
DN:데이터노트라는 슬레이브 노드에 저장 및 관리됨NN:네임노드라는 HDFS 마스터 노드 상주 메모리에 MD:메타데이터로 저장네임노드는 RDB 트랜잭션로그처럼 저널링함수를 통해 메타데이터위치 제공(맵핑테이블 느낌)
YARN은 Hadoop의 데이터를 처리하고 스케쥴링하는 역할
뜻이 궁금해서 쳐봤는데
"Yet another"는 일반적으로 이미 많은 것들이 존재하고 있는 상황에서 추가로 하나를 가리키는 표현입니다. 따라서 "yet another resource negotiation"은 이미 다른 자원 협상이 있었음에도 불구하고 추가로 하나가 이루어지고 있다는 의미를 갖는다고 합니다
설명하는 도식은 아래

순서를 설명하면
리소스 매니저 작업 시킴리소스 매니저는 노드매니저에게, 애플리케이션 마스터(AM)을 할당AM은 실행할 작업컨테이너 협상하고 관리할 노드매니저로 전달 노드매니저는 (2)의AM에게 보고AM은 (1)의리소스매니저에게 보고리소스 매니저는 클라에게 보고 보통 8088에 웹 UI를 제공
Hadoop의 맵리듀스 구현에 대안으로 만들어져 매우 효율적이라고 함
특징
여기서는 어느정도 python을 안다고 가정하고 다른 부분만 기술함
lines = sc.textFile("YOUR/DIR/FILE")
counts = lines.flatMap(lambda x: x.split(' ')) \
.filter(lambda x: len(x) > 0) \
.map(lambda x: (x, 1)) \
.reduceByKey(lambda x, y: x+y) \
.collect()
)
대략 파일을 읽고 띄어쓰기단위로 split했을때 len()이 1개이상인 애들을 필터링해서
reduce하는 느낌이네
위 챕터랑 정리를하면서 궁금증이 남는 것 + 알아봤으면 좋겠는 걸 따로 기록
다음은 위의 Why세션에 대한 조사와,
2장 스파크 배포 에 대해서 포스팅 할 예정입니다 ~