MapReduce - API

ในบทนี้เราจะมาดูคลาสและวิธีการที่เกี่ยวข้องกับการทำงานของโปรแกรม MapReduce เราจะให้ความสำคัญกับสิ่งต่อไปนี้เป็นหลัก -

  • อินเทอร์เฟซ JobContext
  • ชั้นงาน
  • คลาส Mapper
  • คลาสลด

อินเทอร์เฟซ JobContext

อินเทอร์เฟซ JobContext เป็นอินเทอร์เฟซขั้นสูงสำหรับคลาสทั้งหมดซึ่งกำหนดงานต่างๆใน MapReduce ช่วยให้คุณมีมุมมองแบบอ่านอย่างเดียวของงานที่จัดเตรียมให้กับงานในขณะที่ทำงาน

ต่อไปนี้เป็นอินเทอร์เฟซย่อยของอินเทอร์เฟซ JobContext

ส. คำอธิบาย Subinterface
1. MapContext<KEYIN, VALUEIN, KEYOUT, VALUEOUT>

กำหนดบริบทที่กำหนดให้กับ Mapper

2. ReduceContext<KEYIN, VALUEIN, KEYOUT, VALUEOUT>

กำหนดบริบทที่ส่งผ่านไปยัง Reducer

คลาสงานเป็นคลาสหลักที่ใช้อินเทอร์เฟซ JobContext

ชั้นงาน

คลาส Job เป็นคลาสที่สำคัญที่สุดใน MapReduce API ช่วยให้ผู้ใช้กำหนดค่างานส่งงานควบคุมการดำเนินการและสอบถามสถานะ วิธีการตั้งค่าจะใช้ได้เฉพาะจนกว่างานจะถูกส่งหลังจากนั้นพวกเขาจะโยน IllegalStateException

โดยปกติผู้ใช้จะสร้างแอปพลิเคชันอธิบายแง่มุมต่างๆของงานจากนั้นส่งงานและตรวจสอบความคืบหน้า

นี่คือตัวอย่างวิธีการส่งงาน -

// Create a new Job
Job job = new Job(new Configuration());
job.setJarByClass(MyJob.class);

// Specify various job-specific parameters
job.setJobName("myjob");
job.setInputPath(new Path("in"));
job.setOutputPath(new Path("out"));

job.setMapperClass(MyJob.MyMapper.class);
job.setReducerClass(MyJob.MyReducer.class);

// Submit the job, then poll for progress until the job is complete
job.waitForCompletion(true);

ตัวสร้าง

ต่อไปนี้เป็นสรุปตัวสร้างของคลาส Job

ส. เลขที่ สรุปตัวสร้าง
1 Job()
2 Job(การกำหนดค่าคอนฟิก)
3 Job(Configuration Configuration, String jobName)

วิธีการ

วิธีการที่สำคัญบางประการของ Job class มีดังนี้ -

ส. เลขที่ คำอธิบายวิธีการ
1 getJobName()

ชื่องานที่ผู้ใช้ระบุ

2 getJobState()

ส่งคืนสถานะปัจจุบันของงาน

3 isComplete()

ตรวจสอบว่างานเสร็จสิ้นหรือไม่

4 setInputFormatClass()

ตั้งค่า InputFormat สำหรับงาน

5 setJobName(String name)

ตั้งชื่องานที่ผู้ใช้ระบุ

6 setOutputFormatClass()

ตั้งค่ารูปแบบเอาต์พุตสำหรับงาน

7 setMapperClass(Class)

ตั้งค่า Mapper สำหรับงาน

8 setReducerClass(Class)

ตั้งค่าตัวลดสำหรับงาน

9 setPartitionerClass(Class)

ตั้งค่า Partitioner สำหรับงาน

10 setCombinerClass(Class)

ตั้งค่า Combiner สำหรับงาน

คลาส Mapper

คลาส Mapper กำหนดงานแผนที่ จับคู่คีย์ - ค่าป้อนข้อมูลให้กับชุดของคู่คีย์ - ค่าระดับกลาง แผนที่เป็นงานแต่ละรายการที่เปลี่ยนบันทึกข้อมูลเข้าเป็นระเบียนระดับกลาง เร็กคอร์ดระดับกลางที่แปลงแล้วไม่จำเป็นต้องเป็นประเภทเดียวกันกับเร็กคอร์ดอินพุต คู่อินพุตที่ระบุอาจแมปเป็นศูนย์หรือคู่เอาต์พุตหลายคู่

วิธี

mapเป็นวิธีที่โดดเด่นที่สุดของคลาส Mapper ไวยากรณ์ถูกกำหนดไว้ด้านล่าง -

map(KEYIN key, VALUEIN value, org.apache.hadoop.mapreduce.Mapper.Context context)

วิธีนี้เรียกครั้งเดียวสำหรับแต่ละคู่คีย์ - ค่าในการแยกอินพุต

คลาสลด

คลาส Reducer กำหนดงานลดใน MapReduce ลดชุดของค่ากลางที่แบ่งคีย์ไปยังชุดค่าที่เล็กกว่า การใช้งานตัวลดสามารถเข้าถึงการกำหนดค่าสำหรับงานผ่านวิธี JobContext.getConfiguration () ตัวลดมีสามขั้นตอนหลัก - สุ่มเรียงลำดับและลด

  • Shuffle - Reducer คัดลอกเอาต์พุตที่เรียงลำดับจาก Mapper แต่ละตัวโดยใช้ HTTP ผ่านเครือข่าย

  • Sort- เฟรมเวิร์กผสาน - จัดเรียงอินพุต Reducer ด้วยคีย์ (เนื่องจาก Mappers ที่แตกต่างกันอาจมีเอาต์พุตคีย์เดียวกัน) ขั้นตอนการสับเปลี่ยนและการเรียงลำดับเกิดขึ้นพร้อมกันกล่าวคือในขณะที่กำลังดึงข้อมูลเอาต์พุตจะรวมเข้าด้วยกัน

  • Reduce - ในขั้นตอนนี้วิธีการลด (Object, Iterable, Context) ถูกเรียกใช้สำหรับแต่ละ <key, (collection of values)> ในอินพุตที่เรียงลำดับ

วิธี

reduceเป็นวิธีที่โดดเด่นที่สุดของคลาสลด ไวยากรณ์ถูกกำหนดไว้ด้านล่าง -

reduce(KEYIN key, Iterable<VALUEIN> values, org.apache.hadoop.mapreduce.Reducer.Context context)

วิธีนี้เรียกหนึ่งครั้งสำหรับแต่ละคีย์บนคอลเลกชันของคู่คีย์ - ค่า