Các thuật toán thu nhỏ bản đồ được viết cho MongoDB có thể được chuyển sang Hadoop sau này không?


11

Trong công ty của chúng tôi, chúng tôi có cơ sở dữ liệu MongoDB chứa nhiều dữ liệu phi cấu trúc, trên đó chúng tôi cần chạy các thuật toán giảm bản đồ để tạo báo cáo và các phân tích khác. Chúng tôi có hai cách tiếp cận để lựa chọn để thực hiện các phân tích cần thiết:

  1. Một cách tiếp cận là trích xuất dữ liệu từ MongoDB sang cụm Hadoop và thực hiện phân tích hoàn toàn trong nền tảng Hadoop. Tuy nhiên, điều này đòi hỏi đầu tư đáng kể vào việc chuẩn bị nền tảng (phần mềm và phần cứng) và giáo dục nhóm làm việc với Hadoop và viết các tác vụ giảm bản đồ cho nó.

  2. Một cách tiếp cận khác là chỉ nỗ lực của chúng tôi trong việc thiết kế các thuật toán thu nhỏ bản đồ và chạy các thuật toán trên các chức năng giảm bản đồ MongoDB. Bằng cách này, chúng ta có thể tạo một nguyên mẫu ban đầu của hệ thống cuối cùng có thể tạo các báo cáo. Tôi biết rằng các chức năng giảm bản đồ của MongoDB chậm hơn nhiều so với Hadoop, nhưng hiện tại dữ liệu không lớn đến mức khiến điều này trở thành một nút cổ chai, ít nhất là trong sáu tháng tới.

Câu hỏi là, bằng cách sử dụng cách tiếp cận thứ hai và viết các thuật toán cho MongoDB, sau này chúng có thể được chuyển sang Hadoop với rất ít sửa đổi và thiết kế lại thuật toán không? MongoDB chỉ hỗ trợ JavaScript nhưng sự khác biệt về ngôn ngữ lập trình rất dễ xử lý. Tuy nhiên, có bất kỳ sự khác biệt cơ bản nào trong mô hình thu nhỏ bản đồ của MongoDB và Hadoop có thể buộc chúng ta phải thiết kế lại các thuật toán đáng kể để chuyển sang Hadoop không?


Câu trả lời:


4

Chắc chắn sẽ có một nhiệm vụ dịch thuật ở cuối nếu bạn sử dụng nguyên mẫu chỉ sử dụng mongo.

Khi bạn chạy một tác vụ MapReduce trên mongodb, nó có nguồn dữ liệu và cấu trúc được tích hợp. Khi cuối cùng bạn chuyển đổi thành hadoop, cấu trúc dữ liệu của bạn có thể trông không giống nhau. Bạn có thể tận dụng trình kết nối mongodb để truy cập dữ liệu mongo trực tiếp từ bên trong hadoop, nhưng điều đó sẽ không hoàn toàn đơn giản như bạn nghĩ. Thời gian để tìm ra cách chính xác để thực hiện chuyển đổi một cách tối ưu nhất sẽ dễ dàng biện minh hơn khi bạn có một nguyên mẫu, IMO.

Mặc dù bạn sẽ cần dịch các hàm mapreduce, mã giả cơ bản nên áp dụng tốt cho cả hai hệ thống. Bạn sẽ không tìm thấy bất cứ điều gì có thể được thực hiện trong MongoDB mà không thể thực hiện được bằng Java hoặc điều đó phức tạp hơn nhiều so với Java.


5

Bạn có thể sử dụng thuật toán thu nhỏ bản đồ trong Hadoop mà không cần lập trình chúng trong Java. Nó được gọi là truyền phát và hoạt động giống như đường ống Linux. Nếu bạn tin rằng bạn có thể chuyển các chức năng của mình để đọc và ghi vào thiết bị đầu cuối, thì nó sẽ hoạt động tốt. Dưới đây là bài viết blog ví dụ cho thấy cách sử dụng các hàm giảm bản đồ được viết bằng Python trong Hadoop.


1
Điều đó vẫn sẽ có mongo thực hiện việc xử lý, mà tôi tin rằng từ câu hỏi là phải tránh trong giải pháp cuối cùng. Cung cấp cho bạn một cách nâng cao dù sao để đưa ra một phần kiến ​​thức quan trọng.
Steve Kallestad

4

Bạn cũng có thể tạo kết nối MongoDB-Hadoop .


Cảm ơn bạn cho bài viết của bạn, nhưng bạn có thể bao gồm ở đây một mô tả tổng thể về giải pháp được liên kết? Liên kết có thể có câu trả lời cho câu hỏi, nhưng câu trả lời chỉ liên kết không được khuyến khích.
Rubens
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.