같은 노드에있는 모든 실행 프로그램이 사용하기를 원하는 정말 큰 읽기 전용 데이터가 있습니다. Spark에서 가능합니까? 나도 알다시피, 당신은 변수를 방송 할 수 있지만, 정말로 큰 배열을 방송 할 수 있습니까? 후드 아래에서 동일한 노드의 집행자간에 데이터를 공유합니까? 동일한 노드에서 실행되는 executor의 JVM간에 데이터를 어떻게 공유 할 수 있습니까?스파크에서는 두 명의 집행자간에 데이터를 공유 할 수 있습니까?
답변
예, 데이터가 읽기 전용 (불변) 인 것으로 간주 할 때 broadcast 개의 변수를 사용할 수 있습니다. 브로드 캐스트 변수는 다음 속성을 만족해야합니다. 클러스터
에 분산
- 맞추기 그래서, 여기에 유일한 조건은 데이터가 하나 개의 노드의 메모리에 맞게 할 수 있어야한다. 이는 데이터가 초대형이거나 거대한 테이블처럼 메모리 한계를 초과해서는 안된다는 것을 의미합니다.
각 실행자는 브로드 캐스트 변수의 사본을 수신하고 특정 실행자의 모든 태스크가 해당 데이터를 읽고 사용합니다. 이것은 클러스터의 모든 작업자 노드에 큰 읽기 전용 데이터를 보내는 것과 같습니다. 즉 각 작업자가 아닌 각 작업자에게 한 번만 보내고 집행자 (작업 임)는 데이터를 읽습니다.
@pythonic은 "의 JVM간에 데이터를 공유하는 방법"을 묻습니다. –
@LostInOverflow 나는이 질문이 약간의 혼란을 일으킨다 고 생각한다. OP가 올바른 문구를 사용하고 있지 않습니다. 2 명의 실행자! = 2 개의 애플리케이션 JVM – eliasah
그렇습니다. JVM 공유에 대한 대답은 Apache Spark는 분산 데이터 처리 프레임 워크입니다. 따라서 여기에서는 작업/응용 프로그램/작업 또는 RDD를 공유 할 수 없습니다. HDFS와 같은 영구 저장소를 통해 데이터를 공유하는 유일한 방법입니다. IgniteRDD라는 RDD 위에 추상화를 제공하는 프레임 워크 인 Apache Ignite는 RDD의 상태를 다른 작업, 응용 프로그램 및 작업자와 공유하는 Spark RDD 및 DataFrame API를 구현합니다. – Kris
- 1. 어떻게 스레드간에 데이터를 공유 할 수 있습니까?
- 2. 두 개의 DataWindowChild 컨트롤간에 데이터를 공유 할 수 있습니까?
- 3. 두 개의 Metro Apps가 WinRT의 데이터를 공유 할 수 있습니까?
- 4. 두 가지 측면에서 데이터를 공유 할 수 있습니까
- 5. MAMP, 한 명의 컴퓨터, 두 명의 사용자, 공유 데이터베이스
- 6. 두 명의 사용자가 동일한 브라우저 및 사이트를 공유 할 수 있지만 다른 세션을 사용할 수 있습니까?
- 7. iOS 앱에서 데이터를 공유 할 수 있습니까?
- 8. 여러 템플릿에서 데이터를 공유 할 수 있습니까?
- 9. 두 명의 arraylists를 병합 할 수 없다.
- 10. 작업을 두 명의 다른 대의원에게 위임 할 수 있습니까?
- 11. 두 명의 사용자가 같은 데이터를 편집하지 못하도록하십시오.
- 12. 두 AIR 응용 프로그램이 데이터를 공유 할 수있는 방법이 있습니까?
- 13. 여러 명의 사용자가 동일한 Google 계정을 공유 할 수 있습니까, 아니면 규칙을 위반할 수 있습니까?
- 14. 두 데이터베이스에서 데이터를 검색 할 수 있습니까?
- 15. Entity Manager를 두 개의 서블릿에서 공유 할 수 있습니까?
- 16. 키 체인을 사용하여 프로비저닝 프로파일간에 데이터를 공유 할 수 있습니까?
- 17. 공유 라이브러리에 공유 라이브러리를로드 할 수 있습니까?
- 18. 소켓을 통해지도 조각을 공유 할 수 있습니까?
- 19. DevExpress : 공유 할 수 있습니까?
- 20. 두 명의 사용자 비교
- 21. 개인용 개발자 계정이있는 두 명의 개발자가 동일한 코드로 어떻게 작업 할 수 있습니까?
- 22. 한 명의 생산자, 두 명의 소비자 변형
- 23. iOS 앱과 Android 앱간에 데이터를 쉽게 공유 할 수 있습니까?
- 24. PWA는 브라우저간에 상태/데이터를 공유 할 수 있습니까?
- 25. Windows Store 응용 프로그램에서 사용자간에 데이터를 공유 할 수 있습니까?
- 26. git에서 corel 그리기 데이터를 저장하고 공유 할 수 있습니까?
- 27. Google 드라이브에서 애플리케이션 데이터를 공유 할 수 있습니까?
- 28. 오이에서 시나리오와 기능간에 데이터를 공유 할 수 있습니까
- 29. 트위터의 데이터를 내 도메인의 페이지와 어떻게 공유 할 수 있습니까?
- 30. SYSTEM 프로세스가 비 SYSTEM 프로세스와 데이터를 공유 할 수 있습니까?
데이터가 실행 프로그램에 어떻게 고정되어 있습니까? 해결하려는 문제를 설명해 주시겠습니까? – maasg
기본적으로 약 6GB의 읽기 전용 데이터가 있습니다. 이 데이터는 조회 테이블의 일종으로 각 실행자가 수시로 읽어야합니다. 각 실행 프로그램은 전체 찾아보기 테이블에 액세스 할 수 있어야합니다. 나는 각 집행 인에게 많은 기억을주고 싶지 않다. 동일한 노드에서 실행되는 집행자간에 메모리를 공유하여 각 집행자에게 메모리를 거의주지 않아도되도록합니다. – pythonic
로컬 서비스를 사용하는 것처럼 들릴 수 있습니다. 예 : 해당 데이터를 로컬 Redis (또는 유사한 메모리 내 db/cache)에로드하고 Spark 작업의 싱글 톤 JVM 객체를 사용하여 로컬 인스턴스를 처리합니다. 새로 고침을하는 관리 서비스도 필요합니다. 당신이 원하는 것을 성취 할 수있는 즉시 사용 가능한 스파크 솔루션이 있다고 생각하지 않습니다. – maasg