동료 중 한 명은 Google의 응용 프로그램 (텍스트 처리)에 map-reduce 개념을 도입하기 위해 저와 논쟁 중입니다. 그의 생각은 대신 스레딩 개념을 사용해서는 안됩니다. 둘 다이지도 축소 패러다임을 처음 접했습니다. map-reduce 개념을 사용하면 개발자가 스레드 동기화, 데드 록, 공유 데이터를 처리하는 오버 헤드를 줄일 수 있다고 생각했습니다. 스레딩이 아닌 map-reduce 개념으로 갈 수있는 다른 것이 있습니까?스레딩과 맵 축소 처리의 차이점은 무엇입니까?
답변
지도 축소는 엄청난 오버 헤드를 추가하지만 "당황스럽게 평행 한"사용 사례를 위해 많은 수의 기계를 조정할 수 있습니다. 스레딩은 다중 코어와 단일 호스트 만있는 경우에만 가치가 있습니다. 그러나 일반적으로 작업하기가 더 쉬운 원시 스레드 (예 : Concurrent, Akka) 위에 추상화 계층을 추가하는 많은 프레임 워크가 있습니다.
관련 논문은 Comparing Fork/Join and MapReduce입니다.
본 백서에서는 포크/조인, MapReduce 및 하이브리드 방식의 세 가지 병렬 패러다임의 성능, 확장 성 및 프로그래밍 가능성을 비교합니다.
기본적으로 Java 포크/조인은 시작 대기 시간이 짧고 작은 입력 (< 5MB)으로 확장되지만 공유 메모리의 크기 제한 ( 단일 노드 아키텍처)으로 인해 더 큰 입력을 처리 할 수 없습니다. 반면 MapReduce는 시작 대기 시간이 수십 초에 이르지만 컴퓨팅 클러스터에서 훨씬 더 큰 입력 (> 100MB)에 적합합니다.
스레딩은 작업을 여러 하위 작업으로 나눌 수있는 기능을 재귀 적으로 제공합니다. 더 많은 계층,이 단계에서 '포크 (inter-fork)'통신의 가능성, 훨씬 더 전통적인 프로그래밍. 단일 기계 이상으로 확장되지 않습니다 (최소한 종이에서). 8 코어를 최대한 활용하십시오.
M-R은 매핑 된 분할이 서로간에 이야기하지 않고 하나의 큰 분할 만 수행 한 다음 모든 것을 함께 축소합니다. 단일 계층, 축소 될 때까지 상호 분할 통신 없음, 대규모로 확장 가능. 클라우드 점유율을 활용하면 좋습니다.
- 1. 전파 및 처리의 차이점은 무엇입니까?
- 2. 시뮬레이션 맵 축소 환경
- 3. 멀티 스레드 처리와 병렬 처리의 차이점은 무엇입니까?
- 4. onManagedUpdate 메서드와 touchevent 처리의 차이점은 무엇입니까?
- 5. 모듈 처리와 다중 처리의 차이점은 무엇입니까?
- 6. OCX 및 DLL 예외 처리의 차이점은 무엇입니까?
- 7. 접이식과 축소 형의 차이점은 무엇입니까?
- 8. Go의 멀티 스레딩과 pthread 또는 Java Threads의 차이점은 무엇입니까?
- 9. Mongo NodeJS 맵 축소
- 10. MongoDB의 맵 축소 속도를 높이려면 어떻게해야합니까?
- 11. 유닉스에서 신호 처리의 차이점
- 12. C++, Java 및 JavaScript 예외 처리의 차이점은 무엇입니까?
- 13. Bitmap.Clone()과 새로운 비트 맵 (비트 맵)의 차이점은 무엇입니까?
- 14. 비트 맵 개체와 비트 맵 파일의 차이점은 무엇입니까?
- 15. 랙 - 로컬 맵 작업과 데이터 - 로컬 맵 작업의 차이점은 무엇입니까?
- 16. Cloudera를 사용하여 맵 축소 시뮬레이션
- 17. 쿼리와 함께 MongoDB 맵 축소
- 18. 맵 축소 값리스트 순서 문제
- 19. 옵션과 예외 처리의 예외
- 20. 다중 맵/축소 인덱스 대 관계형 합
- 21. 오류 처리의 기본 원칙은 무엇입니까?
- 22. TaskWrapper - 스레딩과 델리게이트 혼동
- 23. 스레딩과 '정지'를 확인
- 24. 게터와 세터, 스레딩과 자바
- 25. 스레딩과 재귀를 함께 사용해야합니까?
- 26. 커널 스레딩과 사용자 스레딩의 관계는 무엇입니까?
- 27. EMR 맵/축소 작업에서 직접 S3에 액세스
- 28. 대용량 맵/축소 응용 프로그램에서 카운터 관리
- 29. hadoop에서 여러 맵 축소 작업을 동기화하십시오.
- 30. 실행중인 MongoDB 맵 축소 작업 상태 확인
프로세서에 몇 개의 코어가 있습니까? 이 질문은 병렬로 실제로 스레드를 실행할 수있는 많은 코어가있는 단일 시스템에있는 경우에만 의미가 있습니다. –
@JudgeMental 우리는 여러 개의 코어가있는 단일 호스트를 사용하고 있습니다. 이 상황에서 스레딩은 좋을 것입니다. 이것이 무엇을 의미합니까? – udi