스파크는 캘리포니아 대학에서 나온 플랫폼 컴퓨팅 클러스터 버클리 Amplab. 그것은 메모리 계산, 일괄 처리, 절충 주의 데이터 웨어하우스, 흐름 처리 및 그래프 계산과 다른 계산 패러다임의 많은 반복에서을 기반, 드문 만능 선수.
스파크는 실험실의 "불꽃"에서 아파치 인큐베이터, 가입 신청한 공식적으로 "" 새로운 샤 프의 출현에 대 한 큰 데이터 기술 플랫폼으로 EDM. 이 문서는 주로 스파크의 생각 하는 디자인을 narrates. 불꽃, 그 이름에서 알 수 있듯이는 흔히 "플래시" 큰 데이터입니다. 특정 특성으로 요약 된다 "빛, 빠른, 성령 하 고 노련한".
라이트: 스파크 0.6 코어 코드는 20000 라인, Hadoop 1.0 90000 행 이며 2.0은 220, 000 행입니다. 한편으로, 단순과 스칼라 언어의 풍요로 움, 스파크 Hadoop 인프라 Mesos (버클리의 다른 프로젝트를 인큐베이터, 클러스터의 동적 자원 관리에 초점을 맞추고 입력)를 잘 활용을 했다. 비록 매우 가벼운 결함 허용 디자인 하지 손상 됩니다. Matei, 창조적인 사람, 말했다: "예외 오류 처리 수 하지". 의미 오류 허용 오차는 인프라의 일부입니다. 빠른: 불꽃 (때문에 "하트 비트" 간격 장치, 시작 하는 작업에 대 한 지연의 단 몇 초) Hadoop MapReduce (MapReduce)에 대 한 생각할 수 있는 작은 데이터 집합에 대 한 2 차 지연을 달성할 수 있다. 큰 데이터 집합에 대 한 스파크 버전 기반 MapReduce 하이브와 Pregel 전형적인 반복 기계 학습, 임시 쿼리 (Ad-hoc 쿼리), 및 그래프 컴퓨팅 구현 보다 빠른 10 배 시간입니다. 메모리 계산, 데이터 집약성 (지역) 및 전송 최적화, 최적화, 일정 서식 지 Shoukong 등도 가벼운 무게의 처음 디자인 개념은 없는. 성령: 스파크 유연성의 다른 수준을 제공합니다. 구현 수준에서 완벽 하 게 스칼라 특성 동적 혼합 (mixin) 정책 (예: 교체 클러스터 스케줄러, 직렬화 된 도서관), 해석 및 새로운 데이터 연산자 (연산자)의 확장을 수 있는 기본 (기본) 계층에 새로운 데이터 소스 (예: HDFS 지원 Dynamodb), 새로운 언어 바인딩 (자바와 파이썬), 그리고 패러다임 (패러다임) 계층에서 스파크 메모리 계산, 등 여러 반복 일괄 처리, 임시 쿼리, 스트림 처리, 그래프 계산 패러다임의 다양 한 지원. Qiao: 솜씨에 기회와 힘을 빌려. 스파크 빌린 둡 둡, 완벽 하 게 통합을 다음 상어 (스파크에 데이터 웨어하우스 구현) 빌린 하이브의 잠재력; 그래프 계산 Pregel API 및 Powergraph 및 powergraph의 포인트 분할 아이디어. 모든 것 (이것은 자바의 미래 널리 환영) 스칼라의 가능성 함께 제공: 스파크 프로그래밍 'n' 품질은 정통 스칼라 구문 또는 API 인지. 실현, 뿐만 아니라 능력을 손 재주를 빌려. 대화형 프로그래밍을 지원 하기 위해 스파크만 필요가 변경할 스칼라의 쉘 (대조적으로, 마이크로 소프트 인터랙티브의 자바와 자바 생각 장벽을 통해 뿐 아니라 자바 스크립트 콘솔을 지 원하는 mapreduce 프로그래밍 그것은 달성 하기 위해 안 달 것입니다.
많은 혜택, 말했다 또는 그 불꽃을 완벽 하지 않습니다. 그것은 한계, 그것은 지원 하지 않습니다 세분화 된, 비동기 데이터 처리 뿐만 아니라 다음 날, 큰 유전자, 모든 후, 그냥 시작, 성능, 안정성 및 거기에 패러다임의 확장성은 공간을 많이 하는 경우에.
계산 패러다임 및 추상화
처음 불꽃은 정교 하지 않은 데이터 병렬 처리 (병렬)의 계산 패러다임 이다.
데이터 병렬 처리 및 작업 병렬의 차이 다음 두 가지 측면에서 구현 된다.
계산의 본문 데이터 수집, 아니라 개별 데이터입니다. 집합의 길이 SIMD 같은 구현에 따라 다릅니다 (단일 명령 다중 데이터) 벡터 명령어는 일반적으로 4 ~ 64, GPU SIMT (단일 명령 다중 스레딩) 일반적으로 32, SPMD (단일 프로그램을 여러 데이터) 넓은 될 수 있습니다. 큰 데이터를 다루는 불꽃 그리고 사용 하는 매우 거친 입자 이라고 탄력 데이터 집합 (RDD)을 배포 하는 따라서. 집합의 모든 데이터는 동일한 연산자 순서를 통해 전달 합니다. 데이터는 잘 프로그래밍 가능, (논리 프로그램의 병렬 처리를 하지 데이터 규모 관련), 높은 병렬 처리를 쉽게 하 고 기본 병렬 또는 분산 하드웨어에 쉽게 매핑할 수 있습니다. 전통적인 배열/벡터 프로그래밍 언어, SSE/AVX 내장, Cuda/opencl, 및 Ct (c + + 처리량에 대 한)이이 범주에 속한다. 차이점은 단일 노드 또는 병렬 프로세서 하지 전체 클러스터, 불꽃의 비전입니다.
데이터 병렬 처리의 패러다임 불꽃 세분화 된, 비동기 업데이트 작업을 위한 완벽 하 게 지원 될 수 없습니다 결정 합니다. 그래서이 시간에 불꽃은 graphlab (대규모 다이어그램 컴퓨팅 프레임 워크) 만큼 좋은 그런 작업은 그래프 컴퓨팅, 세분화 된 로그 업데이트 및 검사점 데이터를 필요로 하는 응용 프로그램 그것은 Ramcloud (스탠포드의 메모리 스토리지 및 컴퓨팅 연구 프로젝트) 및 여과기 (Google 증분 컴퓨팅)으로 좋지 않다. 차례 차례로, 그러면 그것은 전문 응용 프로그램의 영역을 작동 하도록 스파크 그리고 드리 아 드 (마이크로 소프트의 초기 큰 데이터 플랫폼) 시도 성공 했습니다.
불꽃의 Rdd, 프로그래밍 스타일의 스칼라 컬렉션 형식을 사용 하 여 그것은 또한 기능적 의미 체계를 사용 하 여 (기능적 의미): 폐쇄, 하나 이며 다른 하나는 RDD. 논리적으로, 각 RDD 연산자 연산자 결정적 이라고 하 고 모든 연산자 불변 이기 때문에, 연산자 시퀀스만 수행할 수 있습니다 오류가 발생 하면 부작용 없는 새로운 RDD 생성 합니다.
스파크 계산 추상화 데이터 흐름 이며 작업 집합 (작업 집합)에 포함 된 데이터 스트림을. 흐름 처리는 데이터 흐름 모델, MapReduce 또한, 차이 mapreduce 작업을 여러 번 반복에 집합을 유지 관리할 필요가 있습니다. 작업 집합의 추상화 등 여러 반복 기계 학습, 인터랙티브 데이터 마이닝, 그래프 컴퓨팅 일반적입니다. 내결함성을 위해 MapReduce 세트 느린 속도로 작동 하는 호스트 (HDFS) 등 안정적인 저장소를 사용 합니다. Haloop 루프 민감한 스케줄러를 사용 하 여 이전 반복이이 반복에 대 한 지도 입력된 데이터 집합의 감소 출력 네트워크 오버 헤드를 줄일 수 있지만 디스크 I/O 병목 현상을 방지 하는 같은 실제 컴퓨터에 있는지 확인.
불꽃의 획기적인 내결함성을 보장의 전제 아래 호스트 작업 집합에 메모리를 사용 하는 것입니다. 메모리는 디스크, 크게 성능을 향상 시킬 수 있는 여러 수준의 보다 더 빠르게 액세스할 수 있습니다. 핵심은 두 가지 방법으로 전통적으로 내결함성을 달성: 로그 및 검사점. 해당 검사점을 고려 하면 데이터 중복 및 네트워크 통신 오버 헤드, 사용 로그 데이터 업데이트 불꽃이 있다. 세분화 된 로그 업데이트, 하지 않으며 스파크 그것에 좋지 않다. 오버 헤드는 무시할 수 레코드 성긴 rdd 업데이트를 촉발. 기능적 의미와 스파크의 불변 특성에 비추어 로그 업데이트를 재생 하 여 내결함성을 없습니다 어떤 부작용.
프로그래밍 모델
코드를 보면: 텍스트 연산자는 HDFs에서 로그 파일을 읽고, 반환 "파일" (RDD), 필터 연산자 스크린 "오류", "오류" (새로운 RDD), 및 캐시 연산자를 차후 사용을 위해 캐시 할당 선; Count 연산자 반환 합니다 "오류"에 대 한 행의 수입니다. RDD 스칼라 컬렉션 형식에서 다른 많은 보이지 않는 하지만 그들의 데이터는 실행 모델에서 다르다.
그림 1 RDD 데이터 모델을 보여준다 고 4 연산자 종류를 이전 예제에 사용 된 4 명의 연산자를 매핑합니다. 두 공간에서 작동 하는 스파크 프로그램: rdd 공간과 스칼라 기본 데이터 공간을 촉발. 기본 데이터 공간에서 데이터는 스칼라 (스칼라, 스칼라 기본 형식, 주황색 사각형에서), 컬렉션 형식 (파란색 점선된 상자), 및 영구 저장소 (붉은 원통)으로 표시 됩니다.
그림 12 공간, 다른 rdd 연산자의 4 개의 종류의 스위치
입력된 연산자 (주황색 화살표) 스칼라 컬렉션 형식이 나 저장소의 데이터 Rdd 공간 그리고 RDD (블루 솔리드 상자) 근 데. 입력된 연산자는 대략 두 가지 유형의 입력: 스칼라 컬렉션 형식, 병렬 처리, 등 및 이전 예와, 텍스트 데이터를 저장 하기 위한 다른. 입력된 연산자의 출력은 스파크 공간의 RDD.
함수 의미 때문에 Rdd (변환) 연산자 (파란색 화살표) 생성 하는 새로운 rdd를 변환 합니다. 입력 및 출력 변환 연산자는 RDD입니다. RDD 클러스터, 분할을 나타내는 작은 파란색 사각형을 그림 1에에서 여러 노드에 분산 파티션 (파티션) 수로 분할 될 것입니다. Note는 분할 논리적인 개념 이며 오래 되 고 새로운 파티션을 변환 전후는 물리적으로 동일한 메모리 또는 저장 될 가능성이. 이것은 기능적인 불변성에 의해 발생 하는 메모리 요구의 무한 확장을 방지 하기 위해 중요 한 최적화입니다. 일부 rdd는 계산의 중간 결과 및 파티션을 반드시 해당 메모리 또는 없는 (미래 사용 등) 필요한 경우, 그들에 게 해당 하는 저장소, 구체화 하는 파티션에 캐시 연산자 (회색 화살표 캐시 연산자의 예)를 호출할 수 있습니다 (실현) (회색 상자) 하기.
변환 연산자의 일부는 다음과 같은 범주로 나뉘어 간단한 요소로 RDD 요소를 참조:
입력된 출력은 일대일 (element-wise) 연산자, 그리고 결과 RDD 파티션 구조 동일, 주로 지도, Flatmap (지도 병합은 한 차원 rdd)는, 입력된 출력은 일대일, 하지만 결과 RDD 파티션 구조 변경 되었습니다. 조합 (두 개의 Rdd), 같은 합체 (파티션 축소), 필터, 가지 등 입력된 연산자에서 요소 (중복 요소 제거)의 일부를 선택, (이 rdd가 그것 rdd 요소 뒤에 왼쪽)과 샘플 (샘플).
키 값에 대 한 변환 연산자의 또 다른 부분은 설정, 하지만 또한으로 분할 된다:
mapvalues (이 다른 지도), 하나의 rdd 재배치에 대 한 정렬, rdd (데이터 위치 최적화를 위한 중요 한 일관성의 분할 등 같은 단일 rdd에 element-wise 작업 단일 RDD 개편은 Groupbykey, Reducebykey, 등 조인 키에 따라 감소 하 고 조인, Cogroup 같은 키에 따라 두 RDD 대 재편성.
후자의 세 가지 유형의 작업 셔플 클래스 작업 이라고는 재배치를 포함 한다.
RDD RDD에서 변환 연산자의 시퀀스 rdd 공간에서 발생 되었습니다. 여기에 중요 한 디자인은 게으른 평가: 컴퓨팅 실제로 일어나지 않는, 그것은 단지 메타 데이터 기록 유지. 메타 데이터의 구조는 RDD 간의 종속성을 나타내는 Rdd 자식 부모 Rdd에서에서 DAG (방향 무료 그래프)는 각 "꼭지점"은 rdd (는 RDD를 생성 하는 연산자를 포함 하 여), 그리고 "쪽"입니다. 스파크는 멋진 이름, 혈통 (계보) 메타 데이터 dag를 했다. 이 계보는 이전 결함 허용 디자인에서 설명 하는 로그 업데이트 이기도 합니다.
리니지 작업 연산자 (그림 1의 녹색 화살표)을 평가 하 고 그냥 축적 된 모든 연산자는 한 번에 실행 될 때까지 성장 하 고 있습니다. 작업 연산자의 입력은 RDD (모든 rdd는 RDD 혈통에 의존 하는), 그리고 출력은 실행, 아마도 스칼라는 스칼라, 컬렉션 형식의 데이터, 또는 저장소 후 생성 된 네이티브 데이터. 연산자의 출력은 위의 유형 때 연산자 작업 연산자, 누구의 효과 RDD 공간에서 네이티브 데이터 공간을 반환 하 여야 합니다.
작업 연산자는 다음 클래스: 수 (RDD에 요소 수를 반환 합니다) 같은 스칼라 생성 감소, 배/집계 (같은 이름으로 스칼라의 연산자 문서 참조); 걸릴 (처음 몇 요소를 반환 합니다); 같은 여러 스칼라를 반환 합니다 수집 등 (부 어 모든 요소 Rdd 스칼라 컬렉션 형식으로), 조회 (모든 키 값 찾기), 스토리지, 해당 이전 텍스트 파일로 하는 saveastext 파일 등을 작성. 또한 검사점 연산자 검사점이입니다. 때 혈통은 매우 긴 (는 그래프 계산에 자주 발생), 그것은 오류가 발생 하 고 적극적으로 검사점 데이터를 쓰는 현재 검사점으로 안정적인 저장소를 호출할 수 있습니다 전체 시퀀스를 다시 실행 하는 데 시간이 오래 걸립니다.
여기에 두 개의 디자인 포인트입니다. 게으른 평가입니다. 익숙한 컴파일러 컴파일러는 더 큰 범위, 최적화를 위한 더 많은 기회를 볼 수 있습니다 알아요. 스파크는 컴파일되지 않습니다, 하지만 스케줄러 실제로 DAG에 대 한 복잡 한 선형 최적화. 특히 때 스파크는 다양 한 혼합 계산 패러다임, 스케줄러 글로벌 예약 및 최적화에 대 한 다른 패러다임 코드의 경계를 깰 수 있습니다. 다음 예제에서는 코드를 학습 하는 불꽃의 기계와 상어의 SQL 코드를 혼합 합니다. 코드의 각 부분 하단 Rdd, 더 많은 글로벌 최적화 기회를 얻을 수 있도록 큰 DAG에 병합 변환.
또 다른 중요 한 점은 일단 기본 데이터를 생성 하는 연산자, 그것 RDD 공간 종료 해야 합니다. 현재 스파크 Rdd 계산 추적할 수 있습니다, 때문에 네이티브 데이터의 계산에 표시 되지 않습니다 그것은 (하지 않는 한 이후 스파크 과부하, 래퍼, 또는 암시적 변환 제공 합니다)의 네이티브 데이터 형식 작업. 이 부분적으로 보이지 않는 코드 사전 간의 종속성을 소개 수 있습니다-그리고 다음 코드와 같이 Rdd:
필터 의존도 Errors.Count ()의 세 번째 줄 (CNT-1), 네이티브 데이터 작업에 의해 생성 됩니다 하지만 스케줄러는 작업을 표시 되지 않습니다 그리고는 문제.
불꽃 팬 들은 제어 흐름의 정보를 제공 하지 않습니다, 때문에 그것은 해야 합니다가 다시 스칼라의 공간 계산 논리 필요 조건 분기. 스칼라 언어 때문에 사용자 지정 제어 흐름에 대 한 강력한 지원, 미래 스파크 지원을 제 하지 않는다.
불꽃은 또한 두 개의 매우 유용한 기능이 있다. 하나 방송 (방송) 변수입니다. 룩 업 테이블 등의 일부 데이터를 여러 작업에 걸쳐 다시 사용할 수 있습니다;이 데이터 rdd 보다 훨씬 작은 Rdd 같은 노드 간에 나눌 수 없습니다. 새로운 언어 구조-방송된 변수-수정 같은 데이터를 제공 하는 솔루션이입니다. 불꽃 스파크 방송된 변수 런타임 시 각 노드로 전송 되 고 보내지 않고 미래 재사용을 위한 저장 Hadoop의 분산된 캐시에 비해, 방송된 콘텐츠 작업에 걸쳐 공유할 수 있습니다. 이온 Stoica, 비트 토 런 트 (예, 즉, 영화의 BT 다운로드)의 단순화 된 구현을 사용 하 여 피어-투-피어 오래 된 마법사에서 스파크 제출자 Mosharaf. 관심 있는 독자 Sigcomm를 참조할 수 있습니다 ' 11 논문 오케스트라. 또 다른 특징은 누 산 기 (MapReduce에서 카운터): 부 기, 현재 실행 통계를 기록 하는 등 할 스파크 코드에 추가할 수 일부 전역 변수를 허용.
실행 및 일정
그림 2 스파크 프로그램에 대 한 실행 중인 시나리오를 보여 줍니다. 그것은 2 개의 단계에서 클라이언트에 의해 시작: 변환 연산자 시퀀스를 기록 하는 첫 번째 단계, 증가 dag 그래프 생성, 2 단계 작업 연산자에 의해 트리거됩니다, Dagscheduler 변환 Dag 그래프 작업 및 해당 작업 집합. 스파크 (개발 디버깅에 유용) 로컬 단일 노드 실행 중 또는 실행 하는 클러스터를 지원 합니다. 후자의 경우, 클라이언트 노드는 마스터에서 실행 하 고 클러스터 관리자를 통해 클러스터의 실행을 위해 작업자/슬레이브 노드를 파티션의 일련의 작업을 보냅니다.
그림 2 스파크 프로그램 프로세스 실행
불꽃은 전통적으로 Mesos, 또는 아마존 e c 2와 원사와 관련 되었습니다. 기본 작업 스케줄러의 기본 클래스는 특성, 그리고 그것의 다른 구현을 실제 실행으로 섞일 수 있다. 예를 들어 두 스케줄러 구현 Mesos, 불꽃, 각 노드의 모든 리소스를 제공 하는 것 그리고 또 다른 불꽃 작업 예약을 클러스터 리소스를 공유 하는 다른 작업을 수 있다. 작업자 노드에 Dagscheduler에서 생성 된 작업을 실제로 실행 하는 작업 스레드 및 블록 관리자는 마스터에서 블록 관리자 작업 스레드의 데이터 블록을 제공 하기 위해 통신 (스칼라 극장의 배우 모드의 완벽 한 사용)를 마스터.
가장 흥미로운 부분은 Dagscheduler입니다. 다음은 그것의 작업 과정에 대 한 자세한 내용은입니다. RDD 데이터 구조에 매우 중요 한 도메인은 부모 rdd에 종속성입니다. 그림 3에서와 같이, 거기 두 가지 유형의 종속성: 종속성 (좁은) 및 와이드 (Wide) 종속성 좁은.
그림 3 좁은 종속성 및 넓은 종속성
좁은 종속성 RDD는 자식 자식 rdd의 파티션에 해당 하는 부모 rdd의 파티션으로 작동, Rdd의 파티션을 사용 하는 부모 파티션과 각 자식 rdd의 파티션에 해당 하는 두 개의 부모 rdd의 파티션을 의미 합니다. 그림 3에서 지도/필터와 연합 첫 번째 클래스에 속하고 조인 (공동 분할) 두 그룹으로 나뉘어집니다.
RDD 파티션 때문에 부모 RDD의 모든 파티션에 대해 의존 셔플 그림 3에 협조 하지 않은 조인 Groupbykey 같은 클래스 작업.
좁은 종속성은 최적화에 대 한 좋은. 논리적으로, 각 RDD 연산자는 포크/참가 (이 join은 조인 연산자 위의 하지만 여러 개의 병렬 작업을 동기화 하는 방 벽): 계산은 각 파티션에 포크, 조인 완료 되 면, 그리고 다음 분기/조인 연산자 RDD. 만약 물리적 구현에 직접 번역은 매우 경제적인: 하나는 모두 메모리에 구체화할 필요가 각 rdd (심지어 중간 결과) 또는 저장, 소모 비용 공간 둘째 글로벌 장벽으로 조인, 매우 비싼, 죽을 느린 노드에 의해 끌 것입니다. RDD의 파티션 Rdd 부모 파티션에 좁은 종속 이면 클래식 퓨전 최적화를 구현할 수 있습니다, 그리고 2 분기/조인 하나로 결합; 연속 변환 연산자 시퀀스는 좁은, 하나로, 많은 분기/조인 사용 수 있습니다. 뿐만 아니라 글로벌 방 벽의 많은 수를 감소 하지만 또한 하지 않아도 실현 많은 중간 결과 Rdd,이 크게 성능을 향상 시킬 것입니다. 이 파이프라인 (파이프라인) 최적화 라고 하는 불꽃.
변환 연산자 시퀀스 충족 셔플 클래스 작업 발생 하는 다양 한 의존 하 고 파이프라인 최적화 종료 됩니다. 구체적인 구현, 그래프에 의존 하는 현재 연산자에서 Dagscheduler에서에서 하나 넓은 종속성 트래버스된 연산자 순서에 맞게 무대를 생성 하기 위해 발생 합니다. 이 단계에서 파이프라인 최적화는 안전 하 게 구현할 수 있습니다. 다음, 그 넓은 종속성에서 역행, 생성 하는 다음 단계로 계속 합니다.
두 가지 질문으로 탐구 하기: 먼저, 어떻게 파티션을 분할 된다; RDD 구조에 다른 두 도메인에 정확 하 게 해당: 파티션 분할 (파티션) 및 선호 하는 위치 (기본 위치).
파티션 분할은 셔플 클래스 작업을 위해 중요 한 Rdd 부모와 자식 rdd 작업 간의 의존 관계의 종류를 결정 하. 위에서 설명 했 듯이, 같은 조인 연산자 경우 공동-ordinated, 두 부모 Rdd, Rdd 상위 및 하위 Rdd 사이 일관 된 분할 계약을 형성할 수 있다, 즉, 같은 키 보장 좁은 종속성을 형성할 수 있다 동일한 파티션에 매핑됩니다. 반대로, 아무 시너지 사업부 경우 넓은 종속성 결과.
소위 협력 사업부는 파티션 사업부 생산 일관 된 구역 지정. Pregel 및 Haloop 시스템, 그리고 불꽃의 일환으로이 분할의 두 가지 종류 제공 기본값: Hashpartitioner 및 Rangepartitioner, 프로그램 Partitionby 연산자에 의해 지정 될 수 있도록. Hashpartitioner 역할을 할 수, 효과, 주요 해쉬 코드를 요구 하는, 동일한 해시 코드를 생성 하는 동일한 콘텐츠 키 note. 이 문자열에 대 한 사실 이지만 배열 (배열의 해시 코드는 id에 의해 하지 의해 생성 콘텐츠) 때문에 설정 되지 않습니다. 이 경우에, 스파크 사용자를 Arrayhashpartitioner를 사용자 지정할 수 있습니다.
두 번째 문제는 데이터 위치에 대 한 파티션을 배치할 노드: 좋은 지역 및 적은 네트워크 트래픽을. Hadooprdd 파티션의 기본 위치는 HDFs 블록 있는 노드 등을 만들 때 일부 rdd 선호 위치가 있다. 일부 rdd 또는 파티션을 캐시 고 계산 캐시 파티션이 있는 노드에 게 전달 되어야 합니다. 그렇지 않으면, 역행 Rdd 계보는 항상 선호 위치 특성을 가진 부모 RDD를 찾을 하 고 따라 자식 rdd의 배치를 결정 합니다.
와이드/좁은 종속성의 개념은 뿐만 아니라, 일정에 사용 뿐만 아니라 내결함성을 위해 유용한. 노드가 다운 되어 작업이 좁은 종속 경우 아니에요 다른 노드에 종속으로 누락 된 부모 RDD 파티션 계산 됩니다. 그것은 부모 RDD에 종속 된 모든 파티션이 비싸다입니다. 따라서 검사점 연산자를 사용 하 여 검사점을 할 경우 혈통 인지, 충분히 고려해 야 할 뿐만 아니라 다양 한 종속성이 있는지 여부를 고려 하는 넓은 종속성 플러스 검사점은 최고의 가치 돈을 위해.
결론
공간 제한 때문에이 문서 스파크, 스파크 신문에서 오는의 기본 개념 및 디자인 아이디어 소개만 수 (NSDI ' A "탄력적인 분산 데이터 집합: 결함 허용 메모리 클러스터 컴퓨팅 "주로", 하지만 또한 내가 동료 스파크 경험을 공부 하 고 년간에 대 한 병렬/분산 시스템 연구 감정에 종사. 스파크 코어 회원/상어 크리에이터 노래 문서 검토 및 개정, 이로써 감사 합니다!