Di perusahaan kami, kami memiliki database MongoDB yang berisi banyak data tidak terstruktur, di mana kami perlu menjalankan algoritma pengurangan peta untuk menghasilkan laporan dan analisis lainnya. Kami memiliki dua pendekatan untuk dipilih untuk mengimplementasikan analisis yang diperlukan:
Salah satu pendekatan adalah mengekstraksi data dari MongoDB ke cluster Hadoop dan melakukan analisis sepenuhnya di platform Hadoop. Namun, ini membutuhkan investasi besar untuk menyiapkan platform (perangkat lunak dan perangkat keras) dan mendidik tim untuk bekerja dengan Hadoop dan menulis tugas pengurangan peta untuknya.
Pendekatan lain adalah dengan hanya menempatkan upaya kami pada merancang algoritma pengurangan peta, dan menjalankan algoritma pada fungsionalitas pengurangan peta MongoDB. Dengan cara ini, kita dapat membuat prototipe awal sistem akhir yang dapat menghasilkan laporan. Saya tahu bahwa fungsionalitas pengurangan-peta MongoDB jauh lebih lambat dibandingkan dengan Hadoop, tetapi saat ini datanya tidak sebesar itu yang membuat ini menjadi hambatan, setidaknya tidak untuk enam bulan ke depan.
Pertanyaannya adalah, dengan menggunakan pendekatan kedua dan menulis algoritma untuk MongoDB, dapatkah mereka kemudian dipindahkan ke Hadoop dengan sedikit modifikasi yang diperlukan dan mendesain ulang algoritma? MongoDB hanya mendukung JavaScript tetapi perbedaan bahasa pemrograman mudah ditangani. Namun, apakah ada perbedaan mendasar dalam model pengurangan-peta MongoDB dan Hadoop yang mungkin memaksa kita untuk mendesain ulang algoritma secara substansial untuk porting ke Hadoop?
sumber
Jawaban:
Pasti akan ada tugas terjemahan di akhir jika Anda membuat prototipe hanya menggunakan mongo.
Saat Anda menjalankan tugas MapReduce di mongodb, ia memiliki sumber data dan struktur bawaan. Ketika Anda akhirnya mengonversi ke hadoop, struktur data Anda mungkin tidak terlihat sama. Anda dapat memanfaatkan konektor mongodb-hadoop untuk mengakses data mongo langsung dari dalam hadoop, tetapi itu tidak akan semudah yang Anda bayangkan. Waktu untuk mencari tahu bagaimana tepatnya melakukan konversi secara optimal akan lebih mudah dibenarkan begitu Anda memiliki prototipe, IMO.
Meskipun Anda perlu menerjemahkan fungsi mapreduce, pseudocode dasar harus berlaku dengan baik untuk kedua sistem. Anda tidak akan menemukan apa pun yang dapat dilakukan di MongoDB yang tidak dapat dilakukan menggunakan Java atau yang secara signifikan lebih rumit untuk dilakukan dengan Java.
sumber
Anda dapat menggunakan algoritma pengurangan peta di Hadoop tanpa memprogramnya di Java. Ini disebut streaming dan bekerja seperti perpipaan Linux. Jika Anda yakin bahwa Anda dapat mem-porting fungsi Anda untuk membaca dan menulis ke terminal, itu akan berfungsi dengan baik. Berikut adalah contoh posting blog yang menunjukkan cara menggunakan fungsi pengurangan peta yang ditulis dengan Python di Hadoop.
sumber
Anda juga dapat membuat koneksi MongoDB-Hadoop .
sumber