What are the Hadoop MapReduce concepts?

What do you mean by Map-Reduce programming?

MapReduce is a programming model designed for processing large volumes of data in parallel by dividing the work into a set of independent tasks.

รูปแบบการเขียนโปรแกรม MapReduce แรงบันดาลใจจากภาษาการทำงานและเป้าหมายการคำนวณข้อมูลจำนวนมาก. รูปแบบการป้อนข้อมูลเป็นโปรแกรมเฉพาะ, และมีการระบุโดยผู้ใช้. เอาท์พุทเป็นชุดของ <กุญแจ,มูลค่า> คู่. ผู้ใช้แสดงออกถึงขั้นตอนวิธีการใช้ฟังก์ชั่นสอง, แผนที่และลด. ฟังก์ชั่นแผนที่จะนำไปใช้ในการป้อนข้อมูลและการผลิตรายการของกลาง <กุญแจ,มูลค่า> คู่. ฟังก์ชั่นลดการถูกนำไปใช้คู่กลางทั้งหมดที่มีคีย์เดียวกัน. มันมักจะดำเนินการชนิดของการดำเนินการควบรวมกิจการและการผลิตศูนย์หรือมากกว่าคู่เอาท์พุท. ในที่สุด, คู่เอาท์พุทจะถูกเรียงลำดับโดยค่าสำคัญของพวกเขา. ในรูปแบบที่ง่ายของโปรแกรม MapReduce, โปรแกรมเมอร์มีเพียงฟังก์ชั่นแผนที่. ทั้งหมดการทำงานอื่น ๆ, รวมทั้งการจัดกลุ่มของคู่กลางที่มีคีย์เดียวกันและเรียงลำดับสุดท้าย, ที่ให้บริการโดยรันไทม์.

ขั้นตอนของรูปแบบ MapReduce

หน่วยระดับบนสุดของการทำงานใน MapReduce เป็นงาน. งานมักจะมีแผนที่และลดขั้นตอน, แม้ว่าขั้นตอนการลดความสามารถละเว้น. For example, พิจารณางาน MapReduce ที่นับจำนวนครั้งที่แต่ละคำจะถูกใช้ในการตั้งค่าของเอกสาร. เฟสแผนที่นับคำในเอกสารแต่ละฉบับ, แล้วลดขั้นตอนการรวบรวมข้อมูลต่อเอกสารลงในการนับคำที่ทอดเก็บทั้งหมด.

ในระหว่างขั้นตอนแผนที่, ป้อนข้อมูลจะแบ่งออกเป็นแยกการป้อนข้อมูลสำหรับการวิเคราะห์โดยงานแผนที่ทำงานในแบบคู่ขนานในคลัสเตอร์ Hadoop. ตามปกติ, กรอบ MapReduce ได้รับการป้อนข้อมูลจาก Hadoop แจกจ่าย File System (HDFS).

ลดขั้นตอน ผลลัพธ์ที่ได้จากการใช้งานแผนที่เป็น input ชุดขนานลดงาน. ลดงานท​​ี่รวบรวมข้อมูลลงในผลสุดท้าย. ตามปกติ, กรอบ MapReduce ผลการร้านค้าใน HDFS.

แม้ว่าการลดขั้นตอนการขึ้นอยู่กับขั้นตอนการส่งออกจากแผนที่, แผนที่และลดการประมวลผลไม่จำเป็นต้องเนื่อง. นั่นคือ, ลดงานท​​ี่สามารถเริ่มต้นได้ทันทีที่งานเสร็จสมบูรณ์แผนที่ใด ๆ. มันไม่ได้เป็นสิ่งที่จำเป็นสำหรับงานแผนที่ทั้งหมดให้เสร็จสมบูรณ์ก่อนที่จะลดงานสามารถเริ่มต้น.

MapReduce ทำงานกับคู่ค่าคีย์. แนวคิด, งาน MapReduce ใช้ชุดของการป้อนข้อมูลคู่ค่าคีย์และผลิตชุดของคู่การส่งออกที่สำคัญค่าโดยการส่งผ่านข้อมูลผ่านแผนที่และลดฟังก์ชั่น. งานผลิตแผนที่ชุดกลางของคู่ค่าคีย์ที่ลดการใช้งานที่เป็นอินพุท.

คีย์ในการแสดงผลแผนที่คู่ไม่จำเป็นต้องเป็นที่ไม่ซ้ำกัน. ระหว่างการประมวลผลแผนที่และลดการประมวลผล, เรียงลำดับขั้นตอนการส่งออกสับเปลี่ยนค่าแผนที่ทั้งหมดที่มีคีย์เดียวกันเป็นหนึ่งลดการป้อนข้อมูล (กุญแจ, มูลค่ารายการ) คู่, ที่มูลค่า’ เป็นรายการของค่าทั้งหมดที่ใช้คีย์เดียวกัน. ดังนั้น, ป้อนข้อมูลเพื่อลดงานท​​ี่เป็นจริงชุดของ (กุญแจ, มูลค่ารายการ) คู่.

แม้ว่าแต่ละชุดของคู่ค่าคีย์เป็นเนื้อเดียวกัน, คู่ค่าคีย์ในแต่ละขั้นตอนมีไม่จำเป็นต้องชนิดเดียวกัน. For example, คู่ค่าคีย์ในการป้อนข้อมูลที่กำหนด (KV1) เป็นไปได้ (string, string) คู่, ด้วยขั้นตอนการผลิตแผนที่ (string, จำนวนเต็ม) คู่ที่เป็นผลกลาง (KV2), และลดขั้นตอนการผลิต (จำนวนเต็ม, string) คู่เพื่อให้ได้ผลลัพธ์สุดท้าย (KV3).

คีย์ในการแสดงผลแผนที่คู่ไม่จำเป็นต้องเป็นที่ไม่ซ้ำกัน. ระหว่างการประมวลผลแผนที่และลดการประมวลผล, เรียงลำดับขั้นตอนการส่งออกสับเปลี่ยนค่าแผนที่ทั้งหมดที่มีคีย์เดียวกันเป็นหนึ่งลดการป้อนข้อมูล (กุญแจ, มูลค่ารายการ) คู่, ที่มูลค่า’ เป็นรายการของค่าทั้งหมดที่ใช้คีย์เดียวกัน. ดังนั้น, ป้อนข้อมูลเพื่อลดงานท​​ี่เป็นจริงชุดของ (กุญแจ, มูลค่ารายการ) คู่.

ตัวอย่างแสดงให้เห็นถึงแนวคิด MapReduce

ตัวอย่างแสดงให้เห็นถึงแนวคิด MapReduce พื้นฐานโดยการคำนวณจำนวนของการเกิดขึ้นของแต่ละคำในชุดของแฟ้มข้อความ.

ป้อนข้อมูล MapReduce แบ่งออกเป็นแยกการป้อนข้อมูล, และแยกที่มีการแบ่งออกเป็นคู่ค่าคีย์การป้อนข้อมูล. ในตัวอย่างนี้, ชุดข้อมูลของท่านเป็นสองเอกสาร, เอกสาร 1 และ document2. รอง InputFormat แบ่งข้อมูลที่กำหนดเป็นหนึ่งแยกต่อเอกสาร, รวมของ 2 แยก:

บันทึก: กรอบ MapReduce แบ่งการป้อนข้อมูลที่กำหนดเป็นชิ้นที่เรียกว่าแยกโดยใช้รอง org.apache.hadoop.mapreduce.InputFormat ที่มาในการกำหนดค่างาน. แยกถูกสร้างขึ้นโดยลูกค้างานท้องถิ่นและรวมอยู่ในข้อมูลงานที่ให้บริการแก่ติดตามงาน. JobTracker สร้างงานแผนที่สำหรับแยกแต่ละ. งานแต่ละแผนที่ใช้ RecordReader ให้โดยรอง InputFormat เพื่อแปลงแยกออกเป็นคู่ค่าคีย์การป้อนข้อมูล.

A (หมายเลขบรรทัด, text) คู่ค่าคีย์ถูกสร้างขึ้นสำหรับแต่ละบรรทัดในเอกสารการป้อนข้อมูล. ฟังก์ชั่นแผนที่เหลือใช้จำนวนบรรทัดและผลิตต่อสาย (คำ, นับ) คู่คำในสายการป้อนข้อมูลในแต่ละ. ลดขั้นตอนการผลิต (คำ, นับ) คู่ที่เป็นตัวแทนของคำว่านับรวมในทุกเอกสารที่นำเข้า. ได้รับการป้อนข้อมูลที่แสดงแผนที่ลดความก้าวหน้าสำหรับงานตัวอย่างเช่นมีการ:

เอาท์พุทจากเฟสแผนที่มีคู่ค่าคีย์หลายคีย์เดียวกัน: ของข้าวโอ๊ต’ และ 'กิน’ กุญแจปรากฏสองครั้ง. จำได้ว่ากรอบ MapReduce รวมค่าทั้งหมดด้วยคีย์เดียวกันก่อนที่จะเข้าขั้นตอนการลด, เพื่อให้การป้อนข้อมูลเพื่อลดความเป็นจริง (กุญแจ, ค่า) คู่. ดังนั้น, ความคืบหน้าการส่งออกเต็มรูปแบบจากแผนที่, ผ่านการลด, เพื่อผลสุดท้ายก็แสดงให้เห็นข้างต้น.

MapReduce งานวงจรชีวิต

ต่อไปนี้เป็นวงจรชีวิตของงาน MapReduce ทั่วไปและบทบาทของ actors.The หลักวงจรชีวิตเต็มรูปแบบที่มีความซับซ้อนมากขึ้นดังนั้นที่นี่เราจะมีสมาธิในองค์ประกอบหลัก.

การกำหนดค่า Hadoop สามารถทำได้ในรูปแบบที่แตกต่างกัน แต่การกำหนดค่าพื้นฐานประกอบด้วยดังต่อไปนี้.

  • โหนดหลักเดียวทำงานติดตามงาน
  • โหนดคนงานที่ทำงานหลายงานติดตาม

ต่อไปนี้เป็นส่วนประกอบวงจรชีวิตของงาน MapReduce.

  • ลูกค้างานท้องถิ่น: ลูกค้างานท้องถิ่นเตรียมงานสำหรับการส่งและมือมันออกไปติดตามงาน.
  • ติดตามงาน: งานตารางการติดตามงานและจัดจำหน่ายงานแผนที่ในหมู่ผู้ที่ติดตามงานสำหรับการประมวลผลแบบขนาน.
  • งานติดตาม: แต่ละติดตามงาน spawns แผนที่งาน. งานติดตามความคืบหน้าได้รับข้อมูลจากติดตามงาน.

เมื่อผลแผนที่ที่มีอยู่, ติดตามงานจัดจำหน่ายลดการทำงานในหมู่ผู้ที่ติดตามงานสำหรับการประมวลผลแบบขนาน.

แต่ละติดตามงาน spawns ลดงานในการทำงาน. งานติดตามความคืบหน้าได้รับข้อมูลจากติดตามงาน.

ทุกงานแผนที่ไม่ได้มีการดำเนินการก่อนลดงานท​​ี่เริ่มทำงาน. ลดงานท​​ี่สามารถเริ่มต้นได้ทันทีที่เริ่มงานแผนที่จบ. ดังนั้น, แผนที่และลดขั้นตอนมักจะซ้อนทับกัน.

การทำงานของชิ้นส่วนที่แตกต่างกันในงาน MapReduce

ไคลเอนต์งาน: ลูกค้างานดำเนินงานดังต่อไปนี้

  • ตรวจสอบการกำหนดค่างาน
  • สร้างการป้อนข้อมูลแยก. นี้เป็นพื้นแยกงานใส่ลงในชิ้น
  • สำเนาทรัพยากรงาน (องค์ประกอบ, ไฟล์ JAR งาน, การป้อนข้อมูลแยก) ไปยังสถานที่ที่ใช้ร่วมกัน, เช่นไดเรกทอรี HDFS, ที่มันสามารถที่จะติดตามงานและติดตามงาน
  • ส่งงานเพื่อติดตามงาน

ติดตามงาน: งานติดตามดำเนินงานดังต่อไปนี้

  • เรียกแยกข้อมูลจากสถานที่ที่ใช้ร่วมกันที่ไคลเอนต์งานวางข้อมูล
  • สร้างงานแผนที่สำหรับแยกแต่ละ
  • กำหนดงานแต่ละงานแผนที่ไปติดตามงาน (โหนดคนงาน)

หลังจากที่งานแผนที่เสร็จสมบูรณ์, งานไม่ติดตามงานต่อไปนี้

  • สร้างงานลดสูงสุดเปิดการใช้งานโดยการกำหนดค่างาน.
  • กำหนดพาร์ทิชันผลแต่ละแผนที่จะเป็นงานที่ลด.
  • กำาหนแต่ละลดงานไปติดตามงาน.

งานติดตาม: งานที่ติดตามการบริหารงานของโหนดคนงานหนึ่งและรายงานสถานะการติดตามงาน.

งานไม่ติดตามงานต่อไปนี้เมื่อแผนที่หรือลดงานท​​ี่ได้รับมอบหมายให้มัน

  • เรียกงานทรัพยากรในประเทศ
  • spawns JVM แบบเด็กบนโหนดคนงานที่จะดำเนินการแผนที่หรือลดงาน
  • รายงานสถานะการติดตามงาน

แผนที่การแก้จุดบกพร่องลด

Hadoop เก็บบันทึกของเหตุการณ์สำคัญในช่วงการทำงานของโปรแกรม. ตามปกติ, เหล่านี้จะถูกเก็บไว้ในล็อก / ไดเรกทอรีย่อยของ Hadoop รุ่น / ไดเรกทอรีที่คุณเรียกใช้ Hadoop จาก. ไฟล์ที่มีชื่อเข้าสู่ระบบ Hadoop-ชื่อผู้ใช้บริการ hostname.log. ข้อมูลล่าสุดอยู่ในไฟล์ .log; บันทึกเก่าได้วันที่ผนวกเข้ากับพวกเขา. ชื่อผู้ใช้ในชื่อไฟล์บันทึกหมายถึงชื่อผู้ใช้ตามที่ Hadoop ได้เริ่มต้น — นี้ไม่จำเป็นต้องชื่อเดียวกับที่คุณใช้ในการเรียกใช้โปรแกรม. ชื่อบริการซึ่งหมายถึงโปรแกรม Hadoop หลายกำลังเขียนบันทึก; เหล่านี้จะสามารถ jobtracker, namenode, datanode, secondarynamenode, หรือ tasktracker. ทั้งหมดเหล่านี้เป็นสิ่งสำคัญสำหรับการแก้จุดบกพร่องการติดตั้งทั้ง Hadoop. แต่สำหรับแต่ละโปรแกรม, บันทึก tasktracker จะเป็นที่เกี่ยวข้องมากที่สุด. ข้อยกเว้นใด ๆ โยนโดยโปรแกรมของคุณจะได้รับการบันทึกไว้ในบันทึก tasktracker.

ไดเรกทอรีล็อกยังจะมีไดเรกทอรีย่อยที่เรียกว่า userlogs. ที่นี่มีไดเรกทอรีย่อยสำหรับการทำงานทุกงานอีก. งานแต่ละงานบันทึก stdout และ stderr ของสองไฟล์ในไดเรกทอรีนี้. โปรดทราบว่าในคลัสเตอร์ Hadoop หลายโหนด, บันทึกเหล่านี้จะไม่รวมส่วนกลาง — คุณควรตรวจสอบบันทึกของแต่ละ TaskNode / userlogs / ไดเรกทอรีสำหรับการส่งออกของพวกเขา.

การแก้จุดบกพร่องในการตั้งค่าการกระจายที่มีความซับซ้อนและต้องเข้าสู่หลายเครื่องในการเข้าถึงข้อมูลเข้าสู่ระบบ. ถ้าเป็นไปได้, โปรแกรมที่ควรจะเป็นหน่วยทดสอบโดยใช้ Hadoop ในประเทศ. กำหนดค่าเริ่มต้นใช้งานโดย Hadoop ทำงานใน “เช่นเดียว” โหมด, ที่โปรแกรม MapReduce ทั้งหมดจะถูกเรียกใช้ในกรณีเดียวกันของ Java เรียกว่า JobClient.runJob(). ใช้ดีบักเช่นคราส, แล้วคุณสามารถตั้งจุดพักภายในแผนที่() หรือลด() วิธีการที่จะค้นพบข้อบกพร่องของคุณ.

คือลดงานท​​ี่บังคับใช้?

งานบางอย่างสามารถดำเนินการทุกงานของพวกเขาในช่วงแผนที่. ดังนั้นงานที่สามารถ map งานเดียว. ในการหยุดงานหลังจากแผนที่เสร็จสมบูรณ์, กำหนดจำนวนลดงานท​​ี่เป็นศูนย์.

ข้อสรุป

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

============================================= ============================================== ซื้อหนังสือ techalpine ที่ดีที่สุดใน Amazon,en,ช่างไฟฟ้า CT Chestnutelectric,en
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share