작성
·
50
답변 3
1
안녕하세요! 빅디 입니다.
아래 인프런 AI 인턴이 저보다 설명을 잘하는 것 같네요...^^;;
제가 핵심만 다시 쉽게 설명 드리자면 다음과 같습니다.
하둡은 분산파일 시스템이고, 1GB 파일을 하둡에 저장 한다면, 블록 사이즈 단위로 여러 데이터 노드에 분산 저장 된다는 건, 기본적으로 이해 하셨을 거라 생각 되고요~
"그럼 분산 저장된 이 1GB 파일을 분석 하려면 어떻게 해야 할까요?"
보통의 프로그램 이라면, 프로그램이 실행중인 컴퓨터의 위치로 이 1GB파일을 읽어와 메모리에 로드 하게 될 텐데요...
이때 로드 하는데 파일이 크면 클 수록 시간이 엄~청 오래 걸리고, 자원 소모도 많이 들 겁니다.
1GB면 뭐...해볼만 하겠지만 요즘 수기가~테라 빅파일들이 워낙 많으니깐요..
그래서 맵리듀스 프로그램은 실행 자체를 데이터가 있는 곳으로 아예 이동해서 실행 합니다. 큰 파일이 이동 할때 발생하는 I/O , N/W 등의 리드 타임 비효율성을 없애 버린 겁니다.
맵리듀스 프로그램은 아무리 커바야 1MB도 안될테니깐요...
대신 수많은 블록으로 나누어 저장된 여러 노드의 위치로 맵리듀스 프로그램이 찾아가고, 각각의 결과들을 다시 모으고, 정렬하고, 점검하는 등의 기능들은 개발자들이 고민할 필요없이 맵리듀스 프레임워크에서 알아서 자동으로 해줍니다.
각 노드에서는 128MB 블록의 파일만 분석하고, 그 결과만 네트워크로 전송하면 되니깐, 여러 노드가 나눠서 일도 하니깐 효율성도 좋겠죠~
이런 이유로 "맵리듀스 프로그램이 네트워크를 타고 들어온다?" 라는 설명이 되는 거고요,
정확히는 맵리듀스 프로그램에서 맵프로그램이 데이터가 있는 곳으로 네트워크를 타고 이동해 실행되고,
리듀스 프로그램은 특정 노드에서 실행 되면서, 맵들의 결과를 받게 됩니다.
파일럿 프로젝트 완수까지 화이팅! 입니다 . -빅디 드림
0
0
안녕하세요, 인프런 AI 인턴입니다. qkrdmlcks55님.
스파크와 같은 분산 처리 시스템에서 “리듀스” 작업이 네트워크를 통해 데이터를 전송하는 것은 데이터를 병렬로 처리할 때 발생할 수 있는 일반적인 상황입니다.
스파크에서 리듀스는 맵 단계에서 생성된 중간 데이터를 처리하는 역할을 합니다. 이 중간 데이터는 네트워크를 통해 다양한 노드로 전송됩니다. 리듀스 작업이 데이터를 네트워크를 타고 로컬로 “떨어뜨린다”는 의미는 특정 노드에서 리듀스 작업이 수행되어 그 결과가 해당 노드에 저장된다는 것을 의미합니다.
이러한 과정은 데이터가 여러 노드에 분산되어 처리된 후, 최종적인 결과물을 수집하여 사용자에게 반환하기 위해 실행됩니다. 네트워크 전송이 필요한 이유는 데이터를 처리하는 노드가 여러 대이기 때문에, 데이터의 일부는 다른 노드에서 처리된 후 리듀스 노드로 전송되어야 하기 때문입니다.
자세한 설명은 리듀스 조인 과정에서 네트워크 넘어오는 데이터 처리법 이해 게시글에서 확인할 수 있습니다. 비슷한 개념이 다뤄진 여러 질문들이 있어 필요에 따라 참조하면 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.