MongoDB 용으로 작성된 맵 축소 알고리즘을 나중에 Hadoop으로 이식 할 수 있습니까?


11

우리 회사에는 많은 비정형 데이터가 포함 된 MongoDB 데이터베이스가 있으며, 여기에는 보고서 및 기타 분석을 생성하기 위해 map-reduce 알고리즘을 실행해야합니다. 필요한 분석을 구현하기 위해 선택할 수있는 두 가지 방법이 있습니다.

  1. 한 가지 방법은 MongoDB에서 Hadoop 클러스터로 데이터를 추출하고 Hadoop 플랫폼에서 완전히 분석하는 것입니다. 그러나 플랫폼 (소프트웨어 및 하드웨어)을 준비하고 팀이 Hadoop과 함께 작업하고이를위한 맵 축소 작업을 작성하도록 교육하는 데 상당한 투자가 필요합니다.

  2. 또 다른 방법은 map-reduce 알고리즘 설계에 노력을 기울이고 MongoDB map-reduce 기능에서 알고리즘을 실행하는 것입니다. 이렇게하면 보고서를 생성 할 수있는 초기 시스템의 초기 프로토 타입을 만들 수 있습니다. MongoDB의 map-reduce 기능이 Hadoop에 비해 훨씬 느리다는 것을 알고 있지만 현재 데이터는 크지 않아 적어도 6 개월 동안 병목 현상을 일으키지 않습니다.

문제는 두 번째 접근 방식을 사용하고 MongoDB 용 알고리즘을 작성하는 데 나중에 필요한 수정 및 알고리즘 재 설계가 거의없이 Hadoop으로 이식 될 수 있습니까? MongoDB는 JavaScript 만 지원하지만 프로그래밍 언어 차이를 쉽게 처리 할 수 ​​있습니다. 그러나 MongoDB와 Hadoop의 맵 축소 모델에 근본적인 차이점이 있습니까? Hadoop으로 이식하기 위해 알고리즘을 실질적으로 다시 디자인해야 할 수도 있습니까?


답변:


4

몽고 만 사용하여 프로토 타입을 만들면 마지막에 번역 작업이 끝날 것입니다.

mongodb에서 MapReduce 태스크를 실행할 때 데이터 소스 및 구조가 내장되어 있습니다. 결국 hadoop으로 변환하면 데이터 구조가 동일하지 않을 수 있습니다. mongodb-hadoop 커넥터를 사용하여 hadoop 내에서 직접 mongo 데이터에 액세스 할 수는 있지만 생각만큼 간단하지는 않습니다. 프로토 타입이 준비되면 IMO를 통해 변환을 가장 정확하게 수행하는 방법을 정확히 파악할 수 있습니다.

mapreduce 함수를 변환해야하지만 기본 의사 코드는 두 시스템에 모두 적용되어야합니다. Java를 사용하여 수행 할 수 없거나 Java와 관련하여 훨씬 더 복잡한 MongoDB에서 수행 할 수있는 것은 없습니다.


5

Java로 프로그래밍하지 않고도 Hadoop에서 map reduce 알고리즘을 사용할 수 있습니다. 스트리밍이라고하며 Linux 파이핑처럼 작동합니다. 터미널에서 읽고 쓸 수 있도록 함수를 이식 할 수 있다고 생각되면 잘 작동합니다. 다음 은 Hadoop에서 Python으로 작성된 map reduce 함수를 사용하는 방법을 보여주는 블로그 게시물의 예입니다.


1
그것은 여전히 ​​몽고가 처리를하고있을 것이라고 생각합니다. 나는 최종 해결책에서 피해야한다고 생각합니다. 어쨌든 중요한 지식을 기르기위한 공감대를 제공합니다.
Steve Kallestad 2018 년

4

MongoDB-Hadoop 연결을 만들 수도 있습니다 .


게시물을 보내 주셔서 감사하지만 여기에 링크 된 솔루션에 대한 전체 설명을 포함시킬 수 있습니까? 링크에는 질문에 대한 답변이있을 수 있지만 링크 전용 답변은 사용하지 않는 것이 좋습니다.
Rubens
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.