MapReduce - API

Trong chương này, chúng ta sẽ xem xét kỹ các lớp và các phương thức của chúng liên quan đến các hoạt động của lập trình MapReduce. Chúng tôi sẽ chủ yếu tập trung vào những điều sau:

  • Giao diện JobContext
  • Hạng công việc
  • Lớp vẽ bản đồ
  • Lớp giảm tốc

Giao diện JobContext

Giao diện JobContext là siêu giao diện cho tất cả các lớp, định nghĩa các công việc khác nhau trong MapReduce. Nó cung cấp cho bạn chế độ xem chỉ đọc về công việc được cung cấp cho các nhiệm vụ trong khi chúng đang chạy.

Sau đây là các giao diện con của giao diện JobContext.

Không. Mô tả giao diện phụ
1. MapContext<KEYIN, VALUEIN, KEYOUT, VALUEOUT>

Xác định ngữ cảnh được cung cấp cho Người lập bản đồ.

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

Xác định ngữ cảnh được chuyển đến Bộ giảm tốc.

Lớp công việc là lớp chính thực hiện giao diện JobContext.

Hạng công việc

Lớp Công việc là lớp quan trọng nhất trong API MapReduce. Nó cho phép người dùng định cấu hình công việc, đệ trình nó, kiểm soát việc thực thi nó và truy vấn trạng thái. Các phương thức đã đặt chỉ hoạt động cho đến khi công việc được gửi, sau đó chúng sẽ ném ra một IllegalStateException.

Thông thường, người dùng tạo ứng dụng, mô tả các khía cạnh khác nhau của công việc, sau đó gửi công việc và theo dõi tiến trình của nó.

Đây là một ví dụ về cách gửi một công việc -

// 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);

Người xây dựng

Sau đây là tóm tắt về hàm tạo của lớp Job.

S. không Tóm tắt về hàm tạo
1 Job()
2 Job(Cấu hình cấu hình)
3 Job(Cấu hình conf, String jobName)

Phương pháp

Một số phương thức quan trọng của lớp Job như sau:

S. không Mô tả phương pháp
1 getJobName()

Tên công việc do người dùng chỉ định.

2 getJobState()

Trả về trạng thái hiện tại của Công việc.

3 isComplete()

Kiểm tra xem công việc đã hoàn thành hay chưa.

4 setInputFormatClass()

Đặt Định dạng đầu vào cho công việc.

5 setJobName(String name)

Đặt tên công việc do người dùng chỉ định.

6 setOutputFormatClass()

Đặt Định dạng trang kết quả cho công việc.

7 setMapperClass(Class)

Đặt Mapper cho công việc.

số 8 setReducerClass(Class)

Đặt Bộ giảm tốc cho công việc.

9 setPartitionerClass(Class)

Đặt Phân vùng cho công việc.

10 setCombinerClass(Class)

Đặt Combiner cho công việc.

Lớp vẽ bản đồ

Lớp Mapper định nghĩa công việc Bản đồ. Bản đồ nhập các cặp khóa-giá trị vào một tập hợp các cặp khóa-giá trị trung gian. Bản đồ là các tác vụ riêng lẻ biến đổi các bản ghi đầu vào thành các bản ghi trung gian. Các bản ghi trung gian đã chuyển đổi không cần phải cùng loại với các bản ghi đầu vào. Một cặp đầu vào nhất định có thể ánh xạ tới không hoặc nhiều cặp đầu ra.

phương pháp

maplà phương thức nổi bật nhất của lớp Mapper. Cú pháp được định nghĩa bên dưới:

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

Phương thức này được gọi một lần cho mỗi cặp khóa-giá trị trong phần tách đầu vào.

Lớp giảm tốc

Lớp Reducer xác định công việc Reduce trong MapReduce. Nó làm giảm một tập hợp các giá trị trung gian dùng chung khóa thành một tập giá trị nhỏ hơn. Việc triển khai bộ giảm có thể truy cập Cấu hình cho một công việc thông qua phương thức JobContext.getConfiguration (). Bộ giảm tốc có ba giai đoạn chính - Trộn, Sắp xếp và Giảm.

  • Shuffle - Trình giảm sao chép đầu ra được sắp xếp từ mỗi Người lập bản đồ bằng HTTP trên toàn mạng.

  • Sort- Khung hợp nhất sắp xếp các đầu vào của Bộ giảm tốc theo các khóa (vì các Trình lập bản đồ khác nhau có thể có cùng một khóa). Các giai đoạn xáo trộn và sắp xếp xảy ra đồng thời, tức là, trong khi các đầu ra đang được tìm nạp, chúng được hợp nhất.

  • Reduce - Trong giai đoạn này, phương thức Reduce (Object, Iterable, Context) được gọi cho mỗi <khóa, (tập hợp các giá trị)> trong các đầu vào được sắp xếp.

phương pháp

reducelà phương thức nổi bật nhất của lớp Reduceer. Cú pháp được định nghĩa bên dưới:

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

Phương thức này được gọi một lần cho mỗi khóa trên tập hợp các cặp khóa-giá trị.