Spark Boradcast 원리
3830 단어 Spark
방송 안내
Spark 가 제공 하 는 방송 변 수 는 패 킷 함수 가 외부 큰 변 수 를 인용 하여 발생 하 는 성능 문 제 를 해결 할 수 있 습 니 다.Spark 는 통신 원 가 를 낮 추기 위해 효율 적 인 방송 알고리즘 을 사용 하여 방송 변 수 를 나 누 어 준다.방송 변 수 는 읽 기 전용 으로 모든 기계 의 로 컬 에 캐 시 되 고 효율 적 인 방식 으로 각 노드 에 대형 입력 데이터 세트 의 사본 을 제공 할 수 있 습 니 다.
방송 변수의 가장 중요 한 특징 은 같은 실행 기 에 있 는 모든 작업 이 하나의 변수 복사 본 을 사용 하 는 것 이 아니 라 이 Broadcast 를 공유 할 수 있다 는 것 이다.
방송 변 수 는 가 변 변수
val v
에서 호출 SparkContext.broadcast(v)
방법 으로 생 성 된다.방송 변 수 는 변수 v 의 포장 기 로 그 값 은 호출 value
방법 으로 얻 을 수 있다.scala> val broadcastVar = sc.broadcast(Array(1,2,3,4))
broadcastVar: org.apache.spark.broadcast.Broadcast[Array[Int]] = Broadcast(2)
scala> broadcastVar.value
res9: Array[Int] = Array(1, 2, 3, 4)
Spark Action 작업 의 실행 은 몇 개의 Stage 를 거 칩 니 다. 이 단 계 는 분포 식 Shuffle 작업 으로 구 분 됩 니 다.Spark 는 모든 단계 에서 작업 에 필요 한 공동 데 이 터 를 자동 으로 방송 합 니 다. 이런 방식 으로 방송 하 는 데 이 터 는 직렬 화 된 방식 으로 캐 시 되 고 모든 작업 을 실행 하기 전에 반 직렬 화 됩 니 다.이 는 명시 적 으로 방송 변 수 를 만 드 는 것 은 여러 단 계 를 뛰 어 넘 는 작업 이 같은 데 이 터 를 필요 로 할 때 나 역 직렬 화 된 형식 으로 데 이 터 를 캐 시 할 때 만 유용 하 다 는 뜻 이다.
방송 변 수 를 만 든 후에 클 러 스 터 를 실행 하 는 모든 함수 에서 방송 변 수 를 사용 해 야 합 니 다. 원시 변수
v
가 아 닌 방송 변 수 를 사용 해 야 합 니 다. 그러면 v
노드 에 여러 번 보 내지 않 습 니 다.또한 모든 노드 가 같은 방송 변 수 를 가지 도록 변수 v
가 방송 되 고 나 서 더 이상 수정 되 지 않도록 val
유형 으로 밝 혀 야 한다.TorrentBroadcast
Broadcast 의 전통 적 인 실현 은 HTTP Broadcast 이다. 말 그대로 Driver 를 data server 로 하 는 것 이다. 모든 Executor 는 http 프로 토 콜 을 통 해 Driver 에 게 서 데 이 터 를 끌 어 올 리 는데 Http Broadcast 의 가장 큰 문 제 는 driver 가 있 는 노드 에 네트워크 가 막 힐 수 있다 는 것 이다.
HTTP 브 로드 캐 스 트 의 네트워크 정체 문 제 를 해결 하기 위해 스파크 는 또 하나의 브 로드 캐 스 트 를 새롭게 설계 하여 Torrent Broadcast 라 고 부른다.흔히 볼 수 있 는 BitTorrent 기술 과 유사 하 게 기본 사상 은 data 를 하나의 Blocks 로 나 누 어 Driver 의 BlockManager 에 저장 하 는 것 이다.현재 일부 Executors 가 blocks 를 얻 었 다 고 가정 하면 이 Executors 들 은 data server 가 될 수 있 습 니 다.fetch 의 Executor 가 점점 많아 지면 서 더 많은 data server 가 가입 하 는 것 을 의미 합 니 다. 그러면 data 는 곧 모든 Executor 에 전송 할 수 있 습 니 다.다음은 토 렌 트 브 로드 캐 스 트 의 구체 적 인 세부 사항 을 논의 하 겠 습 니 다.
드라이버 엔 드
실행 자 측
readBlocks
은 원 격 에서 가 져 온 Block 을 저장 하 는 데 사 용 됩 니 다. 이 어 무 작위 색인 순서 (5 개의 블록 이 있다 고 가정 하면 흐 트 러 진 후에 끌 어 온 색인 순 서 는 3 - 1 - 4 - 2 - 5) 에 따라 하나씩 fetch block data 를 제거 할 수 있 습 니 다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spark Streaming의 통계 소켓 단어 수1. socket 단어 수 통계 TCP 소켓의 데이터 서버에서 수신한 텍스트 데이터의 단어 수입니다. 2. maven 설정 3. 프로그래밍 코드 입력 내용 결과 내보내기...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.