1. SBIN/START-ALL.SH를 실행하는 스파크 클러스터를 시작하고 마스터 및 여러 작업자 노드를 시작하십시오. 마스터는 주로 클러스터의 관리 및 모니터링으로 사용되며 작업자 노드는 주로 다양한 응용 프로그램을 실행할 책임이 있습니다. 마스터 노드는 작업자 노드가 CPU와 같은 자체 상태 및 메모리의 크기를보고하도록해야합니다. 이 과정은 심장 박동 메커니즘을 통해 완료됩니다
2. 마스터가 근로자의 보고서 정보를받은 후에는 근로자 정보를 제공합니다.
3. 드라이버는 클러스터를 스파크하기 위해 작업을 제출합니다 [드라이버와 마스터 사이의 통신은 Akkaactor를 통해 수행됩니다. Driver는 비동기 적으로 등록 정보를 보냅니다 (등록부) 비동기 적으로 마스터에게
4. 마스터 노드는 응용 프로그램을 추정하고, 메모리 7g은 작업을 완료하고, 작업을 할당하며, 각 작업자 노드는 3.5g의 메모리를 할당하여 작업을 실행합니다. 마스터에서 각 작업자의 작업은 전체적으로 모니터링되고 예약됩니다.
5. 작업자 노드는 작업을 수신하고 실행을 시작합니다. 작업자 노드에서 해당 실행자 프로세스를 시작하여 실행합니다. 각 집행자는 스레드 풀 개념이 있으며 여러 작업 스레드가 포함되어 있습니다.
6. Executor는 스레드 풀에서 작업을 꺼내서 RDDPATITION, 변환 작업 및 작업 작업의 데이터를 계산합니다.
7. 작업자 노드는 계산 상태를 드라이버 노드로보고합니다.
로컬 병렬화 컬렉션으로 RDD를 만듭니다
public class javalocalsumapp {public static void main (string [] args) {sparkConf conf = new sparkConf (). setAppName ( "javalocalsumapp"); javasparkContext sc = new javasparkContext (conf); list <instger> list = arrays.aslist (1,3,4,5,8); <intger> listrdd = sc.parallelize (list); // sum integer sum = listegdd.reduce (new function2 <integer, integer, integer, integer, integer> () {@override public integer call (Integer v1, Integer v2) 예외 {return v1+v2;}}); println (sum)}); Java의 프로그래밍은 컴파일러를 1.8listrdd.reduce ((v1, v2) => v1+v2로 설정해야합니다.SparkTransformation 및 조치 작업
RDD : Elastic Distributed Data Set은 여러 소스를 지원하고, 결함 내성 메커니즘을 갖고, 캐싱 될 수 있으며, 병렬 작업을 지원하는 컬렉션입니다. RDD는 파티션의 데이터 세트를 나타냅니다.
RDD에는 두 개의 운영 사업자가 있습니다.
변환 : 변환은 지연 계산입니다. 하나의 RDD가 다른 RDD로 변환되면 즉시 변환되지 않습니다. 데이터 세트의 논리적 작업을 기억합니다.
조치 : 스파크 작업의 작동을 유발하고 실제로 변환 연산자의 계산을 트리거합니다.
스파크 운영자의 역할
이 그림은 실행중인 변환 중에 Spark 변환 RDD를 연산자를 통해 설명합니다. 연산자는 RDD로 정의 된 기능으로 RDD에서 데이터를 변환하고 작동 할 수 있습니다.
입력 : Spark 프로그램이 실행되는 동안 데이터는 외부 데이터 공간 (예 : 분산 스토리지 : HDFS 등을 읽는 TextFile 등)에서 스파크에 입력되며 Parallize Method는 Scala Collection 또는 Data로 들어가면 Spark 런타임 데이터 공간을 입력하고 Spark의 데이터 블록으로 변환하며 BlockManager를 통해 관리됩니다.
실행 : Spark Data 입력이 RDD를 형성하기 위해 입력 한 후에는 필터 등과 같은 변환 연산자를 통해 전달 될 수 있습니다. 데이터를 작동하고 RDD를 새 RDD로 변환합니다. 액션 연산자를 통해 Spark는 작업을 제출합니다. 데이터를 다중화 해야하는 경우 캐시 연산자를 통해 데이터를 메모리로 캐시 할 수 있습니다.
출력 : 프로그램 실행 후 데이터는 Spark Runtime 공간으로 출력되고 분산 스토리지 (예 : SaveastextFile 출력과 같은 HDFS) 또는 Scala Data 또는 Collection (Scala Collection에 대한 출력 수집, Scala Int Type 데이터를 반환)에 저장됩니다.
변환 및 동작 작업 개요
변환
map (func) : func function으로 변환 한 후 각 원본 요소로 구성된 새 분산 데이터 세트를 반환합니다.
필터 (func) : 새 데이터 세트를 반환하고 func 함수를 통과합니다.
flatmap (func) : 맵과 유사하지만 각 입력 요소는 0에서 여러 출력 요소에 매핑됩니다 (따라서 func 함수의 리턴 값은 단일 요소가 아닌 SEQ입니다).
샘플 (교체, FRAC, 종자) : 주어진 임의의 시드에 따르면, 다수의 FRAC가있는 데이터가 무작위로 샘플링됩니다.
Union (OtherDataset) : 원본 데이터 세트 및 매개 변수로 구성된 새 데이터 세트를 반환합니다.
Roupbykey ([Numtasks]) : (k, v) 쌍으로 구성된 데이터 세트에서 호출되어 (k, seq [v]) 쌍의 데이터 세트를 반환합니다. 참고 : 기본적으로 8 개의 병렬 작업이 그룹화에 사용됩니다. 숫자 옵션 매개 변수를 전달하고 데이터 양에 따라 다른 수의 작업을 설정할 수 있습니다.
READGEBYKEY (func, [numtasks]) : (k, v) 쌍 데이터 세트에 사용, a (k, v) 쌍 데이터 세트를 반환하면, 지정된 감소 기능을 사용하여 키의 동일한 값이 함께 집계됩니다. GroupByKey와 유사하게 작업 수는 두 번째 선택적 매개 변수로 구성 할 수 있습니다.
가입 (OtherDataset, [Numtasks]) : 유형 (k, v) 및 (k, w)의 데이터 세트에서 호출, a (k, (v, w)) 쌍을 반환하고 각 키의 모든 요소가 함께 있습니다.
GroupWith (OtherDataset, [Numtasks]) : 유형 (k, v) 및 (k, w)의 데이터 세트에서 호출되고 구성 요소 (k, seq [v], seq [w]) 튜플이있는 데이터 세트를 반환합니다. 이 작업은 Cogroup이라는 다른 프레임 워크에 있습니다
Cartesian (Otherdataset) : Cartesian 제품. 그러나 데이터 세트 t와 u에서 호출되면 (t, u) 쌍의 데이터 세트가 반환되고 모든 요소가 직교 제품과 상호 작용합니다.
행위
감소 (func) : 함수 func를 통해 데이터 세트의 모든 요소를 집계하십시오. FUNC 함수는 2 개의 매개 변수를 수용하고 값을 반환합니다. 이 기능은 올바르게 동시에 실행할 수 있도록 연관되어 있어야합니다.
수집 () : 드라이버 프로그램에서 데이터 세트의 모든 요소를 배열로 반환하십시오. 이것은 일반적으로 필터 또는 기타 작업을 사용한 후 충분히 작은 데이터 하위 집합을 반환하고 전체 RDD 세트 수집을 직접 반환하여 드라이버 프로그램을 OOM으로 만들 가능성이 있습니다.
count () : 데이터 세트의 요소 수를 반환합니다
테이크 (n) : 데이터 세트의 첫 번째 n 요소로 구성된 배열을 반환합니다. 이 작업은 현재 여러 노드에서 병렬로 실행되지 않지만 드라이버 프로그램이 위치한 기계이며 모든 요소는 단일 시스템으로 계산됩니다 (게이트웨이의 메모리 압력은 증가하고주의해서 사용해야합니다).
첫 번째 () : 데이터 세트의 첫 번째 요소를 반환합니다 (Take와 유사한 (1))
SaveastextFile (Path) : 데이터 세트의 요소를 TextFile의 형태로 로컬 파일 시스템, HDFS 또는 Hadoop에서 지원하는 다른 파일 시스템에 저장합니다. Spark는 각 요소의 Tostring 메소드를 호출하여 파일의 텍스트 줄로 변환합니다.
SaveasecenceFile (Path) : 데이터 세트의 요소를 시퀀스 파일 형식으로 지정된 디렉토리, 로컬 시스템, HDFS 또는 Hadoop에서 지원하는 기타 파일 시스템에 저장합니다. RDD의 요소는 키 값 쌍으로 구성되어야하며 모두 Hadoop의 쓰기 가능한 인터페이스를 구현하거나 쓸 수있는 쓰기 가능한 인터페이스로 변환 할 수 있습니다 (Spark는 int, Double, String 등과 같은 기본 유형의 변환이 포함됩니다).
foreach (func) : 데이터 세트의 각 요소에서 함수 기능을 실행하십시오. 일반적으로 축합기 변수를 업데이트하거나 외부 스토리지 시스템과 상호 작용하는 데 사용됩니다.
WordCount 실행 프로세스
요약
위는 스파크 스케줄링 아키텍처의 원리에 대한이 기사의 모든 내용입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!