อัลกอริทึมลดแผนที่เขียนสำหรับ MongoDB สามารถพอร์ตไปยัง Hadoop ในภายหลังได้หรือไม่?


11

ใน บริษัท ของเราเรามีฐานข้อมูล MongoDB ที่มีข้อมูลที่ไม่มีโครงสร้างจำนวนมากซึ่งเราจำเป็นต้องใช้อัลกอริทึมลดแผนที่เพื่อสร้างรายงานและการวิเคราะห์อื่น ๆ เรามีสองวิธีในการเลือกจากการนำการวิเคราะห์ที่ต้องการไปใช้:

  1. วิธีหนึ่งคือการดึงข้อมูลจาก MongoDB ไปยังคลัสเตอร์ Hadoop และทำการวิเคราะห์อย่างสมบูรณ์ในแพลตฟอร์ม Hadoop อย่างไรก็ตามสิ่งนี้ต้องการการลงทุนอย่างมากในการเตรียมแพลตฟอร์ม (ซอฟต์แวร์และฮาร์ดแวร์) และให้ความรู้แก่ทีมเพื่อทำงานกับ Hadoop และเขียนงานลดแผนที่

  2. อีกวิธีหนึ่งคือการใช้ความพยายามของเราในการออกแบบอัลกอริธึมลดแผนที่และเรียกใช้อัลกอริธึมบนฟังก์ชันลดแผนที่ MongoDB ด้วยวิธีนี้เราสามารถสร้างต้นแบบเริ่มต้นของระบบสุดท้ายที่สามารถสร้างรายงาน ฉันรู้ว่าฟังก์ชั่นลดแผนที่ของ MongoDB นั้นช้ากว่ามากเมื่อเทียบกับ Hadoop แต่ปัจจุบันข้อมูลไม่ได้ใหญ่ขนาดนั้นที่ทำให้เกิดปัญหาคอขวดนี้

คำถามคือการใช้วิธีที่สองและเขียนอัลกอริธึมสำหรับ MongoDB พวกเขาสามารถย้ายไปที่ Hadoop ได้ในภายหลังด้วยการปรับเปลี่ยนที่จำเป็นเล็กน้อยและการออกแบบอัลกอริทึมใหม่หรือไม่? MongoDB รองรับ JavaScript แต่ความแตกต่างของภาษาการเขียนโปรแกรมนั้นง่ายต่อการจัดการ อย่างไรก็ตามมีความแตกต่างพื้นฐานในรูปแบบการลดแผนที่ของ MongoDB และ Hadoop ที่อาจบังคับให้เราออกแบบอัลกอริทึมใหม่อย่างมีนัยสำคัญสำหรับการย้ายไปยัง Hadoop หรือไม่?


คำตอบ:


4

ในตอนท้ายจะมีงานแปลแน่นอนหากคุณต้นแบบใช้แค่ Mongo

เมื่อคุณเรียกใช้งาน MapReduce บน mongodb จะมีแหล่งข้อมูลและโครงสร้างในตัวเมื่อคุณแปลงเป็น hadoop ในที่สุดโครงสร้างข้อมูลของคุณอาจไม่เหมือนกัน คุณสามารถใช้ตัวเชื่อมต่อ mongodb-hadoop เพื่อเข้าถึงข้อมูล mongo โดยตรงจากภายใน hadoop แต่นั่นจะไม่ตรงไปตรงมามากอย่างที่คุณคิด เวลาที่จะพิจารณาว่าการแปลงที่เหมาะสมที่สุดจะง่ายกว่าเมื่อคุณมีต้นแบบ IMO

ในขณะที่คุณจะต้องแปลฟังก์ชั่น mapreduce, pseudocode พื้นฐานควรใช้กับทั้งสองระบบได้ดี คุณจะไม่พบสิ่งใดที่สามารถทำได้ใน MongoDB ที่ไม่สามารถทำได้โดยใช้ Java หรือมีความซับซ้อนมากที่จะทำกับ Java


5

คุณสามารถใช้แผนที่ลดอัลกอริธึมใน Hadoop ได้โดยไม่ต้องเขียนโปรแกรมใน Java มันเรียกว่าสตรีมมิ่งและทำงานได้เหมือน Linux piping หากคุณเชื่อว่าคุณสามารถพอร์ตฟังก์ชั่นของคุณเพื่ออ่านและเขียนไปยังเทอร์มินัลก็ควรใช้งานได้ดี นี่คือตัวอย่างโพสต์บล็อกที่แสดงวิธีการใช้ฟังก์ชั่นลดแผนที่เขียนใน Python ใน Hadoop


1
นั่นจะยังคงมีคนทำโพรเซสซึ่งฉันเชื่อว่าจากคำถามคือต้องหลีกเลี่ยงในทางออกสุดท้าย ให้ความอัปยศแก่คุณเพื่อนำความรู้ชิ้นสำคัญมาใช้
Steve Kallestad

4

นอกจากนี้คุณยังสามารถสร้าง MongoDB-Hadoop การเชื่อมต่อ


ขอบคุณสำหรับการโพสต์ของคุณ แต่คุณสามารถรวมคำอธิบายโดยรวมของโซลูชันที่ลิงก์ไว้ได้ที่นี่หรือไม่ ลิงก์อาจมีคำตอบสำหรับคำถาม แต่ไม่มีคำตอบสำหรับลิงก์เท่านั้น
รูเบนส์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.