ลองเขียน MapReduce กัน

ก่อนหน้านี้เขียนถึงหลักการทำงานของ MapReduce ไปแล้ว คราวนี้มาลองลงมือเขียนโค้ดกันเลยดีกว่า ปกติแล้วการเขียน MapReduce เพื่อเอาไปใช้กับ Hadoop เราจะเขียนด้วย Java แต่ Hadoop นั้นมี API ตัวหนึ่งที่ทำให้เราเขียน MapReduce ด้วยภาษาอะไรก็ได้ Yes! และ API ตัวนั้นก็คือ Hadoop Streaming นั่นเอง ซึ่งตัวมันจะใช้ Unix standard streams เป็น interface ระหว่าง Hadoop กับโปรแกรมของเรา ดังนั้น.. ภาษาอะไรก็ตามที่สามารถอ่าน standard input และเขียนใส่ standard output ได้ ภาษานั้นก็สามารถใช้เขียน MapReduce ได้! (-/\-) กราบ

ใครก็ตามที่ผ่านเข้ามาอ่านบทความนี้ ไม่ต้องกังวลว่าจะต้องไปลง Hadoop บนเครื่องตัวเองนะครับ ขอแค่คุณใช้ระบบปฏิบัติการที่เป็น Linux ก็พอ ก็สามารถทำตามได้ (ถ้าใครใช้ Windows ก็ใช้ Cygwin แทนเนอะ)

Continue reading "ลองเขียน MapReduce กัน"

หลักการทำงานของ MapReduce และตัวอย่างการใช้

มีโอกาสได้เริ่มอ่านหนังสือ Hadoop: The Definitive Guide เขียนโดย Tom White แบบจริงๆ จังๆ เพราะในอนาคตจะได้ใช้แน่ๆ กะว่าอ่านไปแล้วก็มาเขียนบล็อกแปลไปจะได้เข้าใจได้มากขึ้น โพสต์นี้จะกล่าวถึงหลัการทำงาน และตัวอย่างการใช้ MapReduce เพื่อประมวลผลข้อมูลจำนวนมหาศาล

MapReduce คือ programming model ที่จะแบ่งส่วนการทำงานเป็น 2 ขั้นตอน คือ ขั้นตอน map และ ขั้นตอน reduce โดยแต่ละขั้นตอนจะมีคู่ key-value เป็น input และ output ซึ่งเราจะเป็นคนกำหนดเอง ส่วนนี้อาจจะต้องอาศัยประสบการณ์เล็กน้อย และความเข้าใจในข้อมูลนั้นๆ ถึงจะออกแบบคู่ key-value ในแต่ละขั้นออกมาได้ สำหรับคนที่ยังมองไม่ออกก็ไม่เป็นไร ค่อยๆ ศึกษาไปเรื่อยๆ เดี๋ยวจะรู้เองครับว่าเราควรจะออกแบบออกมาแบบไหนถึงจะดี นอกเหนือจากการออกแบบแล้ว เรายังจะต้องกำหนดฟังก์ชั่น map และฟังก์ชั่น reduce อีกด้วย ว่าจะให้ทำงานอย่างไร

Continue reading "หลักการทำงานของ MapReduce และตัวอย่างการใช้"