Hadoop - เป็น Application (Framework) ที่ถูกเขียนขึ้นด้วยภาษา java ใช้สำหรับประมวลผลข้อมูลขนาดใหญ่ (ยักษ์) บน cluster (ใช้คอมพิวเตอร์หลายเครื่องในการประมวลผลร่วมกัน) มีความสามารถในการ scale out คือสามารถเพิ่มจำนวนเครื่องคอมพิวเตอร์ที่ใช้ในการประมวลผลร่วมกันได้หลายๆ เครื่อง (จากร้อยเครื่องไปเป็นพันๆ เครื่อง) มีความสามารถในการตรวจสอบและแก้ปัญหาเครื่องคอมพิวเตอร์ที่ทำงานผิดพลาดได้เองโดยอัตโนมัติ มีการจัดเก็บข้อมูลด้วย Hadoop Distribute File System ซึ่งเป็นการจัดเก็บข้อมูลแบบกระจาย โดยอาศัยแนวคิดของ Google File System ซึ่งถูกคิดค้นโดย Google มีความสามารถในการประมวลผลด้วย MapReduce Programming ซึ่งเป็น Programming Model หนึ่งที่ถูกคิดค้นขึ้นโดย Google อีกเช่นเดียวกัน
MapReduce - อธิบายแบบสั้นๆ เป็นกระบวนการที่ใช้สำหรับการแบ่ง input data ให้มีขนาดเล็กลง แล้วส่งไปประมวลผลยัง node อื่นๆ ที่อยู่ใน cluster เมื่อประมวลเสร็จแล้วจึงนำผลลัพธ์ที่ได้กลับมาลดขนาด ได้เป็น output data แล้วค่อยส่ง output data นั้นกลับออกไปครับ
อธิบายแบบยาวขึ้นมานิดนึง เป็นกระบวนการที่ใช้สำหรับการแบ่ง input data ให้มีขนาดเล็กลง แล้วส่งไปประมวลผลยัง node อื่นๆ ที่อยู่ใน cluster
- ซึ่งแต่ละ node จะทำการแปลง input data ที่ถูกแบ่งแล้วให้อยู่ในรูปของ key-value (Map) ตาม Mapper class ที่ได้เขียนเอาไว้ (แล้วแต่เราจะ map ยังไง)
- จากนั้นจึงทำการยุบรวม (ผสม) key value ใน Combiner class (แล้วแต่เราจะยุบรวมยังไง)
- เมื่อยุบรวม key value ที่ Combiner เสร็จแล้ว ก็จะทำการจัดเรียง หรือ sort key value ใหม่ (แล้วแต่เราจะ sort ยังไง)
- แล้วนำผลลัพธ์ที่ได้กลับมาลดขนาด (Reduce) ตามคำสั่งที่ถูกเขียนไว้ใน Reducer class (แล้วแต่เราจะ reduce ยังไง)
- จากนั้นจึงค่อยส่ง output data ที่ได้กลับออกไปครับ
