Khi nào các tác vụ giảm bắt đầu trong Hadoop?


81

Trong Hadoop khi nào các tác vụ giảm bắt đầu? Chúng có bắt đầu sau khi hoàn thành một tỷ lệ phần trăm (ngưỡng) nhất định của người lập bản đồ không? Nếu vậy, ngưỡng này có cố định không? Loại ngưỡng nào thường được sử dụng?

Câu trả lời:


205

Giai đoạn rút gọn có 3 bước: xáo trộn, sắp xếp, rút ​​gọn. Shuffle là nơi dữ liệu được thu thập bởi bộ giảm thiểu từ mỗi trình ánh xạ. Điều này có thể xảy ra trong khi người lập bản đồ đang tạo dữ liệu vì nó chỉ là quá trình truyền dữ liệu. Mặt khác, sắp xếp và giảm bớt chỉ có thể bắt đầu sau khi tất cả các trình ánh xạ được thực hiện xong. Bạn có thể biết MapReduce đang làm gì bằng cách nhìn vào tỷ lệ phần trăm hoàn thành giảm tốc: 0-33% có nghĩa là nó đang thực hiện xáo trộn, 34-66% là sắp xếp, 67% -100% là giảm. Đây là lý do tại sao bộ giảm của bạn đôi khi có vẻ "bị kẹt" ở mức 33% - nó đang chờ người lập bản đồ hoàn thành.

Các trình giảm bớt bắt đầu xáo trộn dựa trên ngưỡng tỷ lệ phần trăm người lập bản đồ đã hoàn thành. Bạn có thể thay đổi tham số để có bộ giảm tốc bắt đầu sớm hơn hoặc muộn hơn.

Tại sao việc khởi động bộ giảm tốc sớm là một điều tốt? Bởi vì nó trải rộng quá trình truyền dữ liệu từ bộ lập bản đồ đến bộ giảm tải theo thời gian, đó là một điều tốt nếu mạng của bạn là nút cổ chai.

Tại sao việc khởi động bộ giảm tốc sớm là một điều tồi tệ? Bởi vì họ "hog up" giảm các slot trong khi chỉ sao chép dữ liệu và chờ người lập bản đồ kết thúc. Một công việc khác bắt đầu sau đó sẽ thực sự sử dụng các khe cắm giảm giờ không thể sử dụng chúng.

Bạn có thể tùy chỉnh thời điểm khởi động bộ giảm tốc bằng cách thay đổi giá trị mặc định của mapred.reduce.slowstart.completed.mapsin mapred-site.xml. Giá trị của 1.00sẽ đợi tất cả các trình ánh xạ kết thúc trước khi bắt đầu các trình giảm bớt. Giá trị của 0.0sẽ bắt đầu các bộ giảm ngay lập tức. Giá trị của 0.5sẽ bắt đầu bộ giảm khi một nửa số bộ ánh xạ hoàn tất. Bạn cũng có thể thay đổi mapred.reduce.slowstart.completed.mapstheo từng công việc. Trong các phiên bản mới của Hadoop (ít nhất là 2.4.1), tham số được gọi làmapreduce.job.reduce.slowstart.completedmaps (cảm ơn người dùng yegor256).

Thông thường, tôi muốn giữ mapred.reduce.slowstart.completed.mapsở trên 0.9nếu hệ thống có nhiều công việc chạy cùng một lúc. Bằng cách này, công việc không làm khó các bộ giảm khi chúng không làm gì khác ngoài việc sao chép dữ liệu. Nếu bạn chỉ có một công việc đang thực hiện tại một thời điểm, thì việc làm 0.1có lẽ sẽ phù hợp.


3
bạn có biết tôi có thể đọc thêm về những gì bạn đã đề cập ở đâu không?
daydreamer, ngày

1
Theo ý kiến ​​của tôi, Slowstart được ghi nhận khá kém .... cũng như hầu hết các thông số cấu hình khó hiểu.
Donald Miner,

5
Câu trả lời hay @Donald Miner. Chỉ muốn thêm điều đó trong phiên bản Hadoop mới hơn (tôi đang sử dụng 1.1.2), giá trị được mặc định là 0,05. hadoop.apache.org/docs/r1.1.2/mapred-default.html
sufinawaz

@Donald Tôi đang sử dụng phiên bản 0.20.205.0 của hadoop và đặt tham số "mapred.reduce.slowstart.completed.maps" trong mapred-site.xml thành 0.1, nhưng trình giảm tốc vẫn chạy sau khi trình lập bản đồ hoàn tất. Tôi có thể biết tại sao không?
harry potter

3
@nishm Tôi nghĩ rằng bạn đang nhầm lẫn thuật ngữ của toàn bộ giai đoạn giảm so với Chỉ giảm bên trong giai đoạn giảm. Giai đoạn giảm là xáo trộn, sắp xếp và giảm bớt. Slowstart cho nó biết khi nào bắt đầu giai đoạn tổng thể. Bạn nói đúng rằng phần giảm bên trong giai đoạn giảm chỉ bắt đầu sau khi trình lập bản đồ kết thúc.
Donald Miner,

5

Giai đoạn giảm có thể bắt đầu rất lâu trước khi bộ giảm được gọi. Ngay sau khi người lập bản đồ "a" hoàn thành công việc, dữ liệu được tạo sẽ trải qua một số phân loại và xáo trộn (bao gồm lệnh gọi đến bộ kết hợp và bộ phân vùng). "Giai đoạn" giảm tốc bắt đầu vào thời điểm bắt đầu xử lý dữ liệu trình ánh xạ bài đăng. Khi quá trình xử lý này được thực hiện, bạn sẽ thấy tiến trình trong tỷ lệ phần trăm giảm bớt. Tuy nhiên, chưa có bộ giảm tốc nào được gọi vào. Tùy thuộc vào số lượng bộ xử lý có sẵn / được sử dụng, bản chất của dữ liệu và số lượng bộ giảm dự kiến, bạn có thể muốn thay đổi tham số như được mô tả bởi @ Donald-miner ở trên.


1

Theo như tôi hiểu thì Giảm giai đoạn bắt đầu với giai đoạn bản đồ và tiếp tục sử dụng hồ sơ từ bản đồ. Tuy nhiên, vì có giai đoạn sắp xếp và xáo trộn sau giai đoạn bản đồ, tất cả các kết quả đầu ra phải được sắp xếp và gửi đến trình giảm bớt. Vì vậy, về mặt logic, bạn có thể tưởng tượng rằng giai đoạn giảm chỉ bắt đầu sau giai đoạn bản đồ nhưng trên thực tế, vì lý do hiệu suất, các trình giảm bớt cũng được khởi tạo với trình ánh xạ.


0

Tỷ lệ phần trăm được hiển thị cho giai đoạn giảm thực sự là về lượng dữ liệu được sao chép từ đầu ra của bản đồ đến các thư mục đầu vào của bộ giảm. Để biết khi nào thì việc sao chép này bắt đầu? Đó là một cấu hình bạn có thể đặt như Donald đã trình bày ở trên. Sau khi tất cả dữ liệu được sao chép vào bộ giảm (tức là.


0

Reduce chỉ bắt đầu sau khi tất cả người lập bản đồ đã đánh bắt nhiệm vụ ở đó, Reducer phải giao tiếp với tất cả người lập bản đồ vì vậy nó phải đợi cho đến khi người lập bản đồ cuối cùng hoàn thành nhiệm vụ của mình. Người lập bản đồ trên web bắt đầu chuyển dữ liệu đến thời điểm nó đã hoàn thành nhiệm vụ của mình.


-1

Hãy xem xét một ví dụ về WordCount để hiểu rõ hơn về cách hoạt động của tác vụ thu gọn bản đồ. Giả sử chúng ta có một tệp lớn, chẳng hạn như một cuốn tiểu thuyết và nhiệm vụ của chúng ta là tìm số lần mỗi từ xuất hiện trong tệp. Vì tệp lớn, nó có thể được chia thành các khối khác nhau và được sao chép trong các nút công nhân khác nhau. Công việc đếm từ bao gồm các nhiệm vụ bản đồ và rút gọn. Nhiệm vụ bản đồ lấy mỗi khối làm đầu vào và tạo ra một cặp khóa-giá trị trung gian. Trong ví dụ này, vì chúng tôi đang đếm số lần xuất hiện của các từ, trình ánh xạ trong khi xử lý một khối sẽ dẫn đến kết quả trung gian của biểu mẫu (word1, count1), (word2, count2), v.v. Kết quả trung gian của tất cả trình ánh xạ là qua giai đoạn xáo trộn sẽ sắp xếp lại kết quả trung gian.

Giả sử rằng kết quả bản đồ của chúng tôi từ những người lập bản đồ khác nhau có dạng sau:

Bản đồ 1: - (là, 24) (đã, 32) (và, 12)

Bản đồ2: - (của tôi, 12) (là, 23) (là, 30)

Các kết quả đầu ra của bản đồ được sắp xếp theo cách mà các giá trị khóa giống nhau được cung cấp cho cùng một trình thu gọn. Ở đây nó có nghĩa là các khóa tương ứng với là, v.v ... đi cùng một bộ giảm tốc. Nó là bộ giảm tốc tạo ra kết quả cuối cùng, trong trường hợp này sẽ là: - (và, 12) (là, 47) (của tôi, 12 ) (là, 62)


Không giải quyết câu hỏi của OP về KHI NÀO bộ giảm tốc khởi động.
Sai Kiriti Badam

-1

Các tác vụ của bộ giảm chỉ bắt đầu sau completiontất cả các công cụ lập bản đồ.

Nhưng quá trình chuyển dữ liệu xảy ra sau eachBản đồ. Trên thực tế nó là một hoạt động kéo.

Điều đó có nghĩa là, mỗi lần lập trình giảm thời gian sẽ hỏi mọi maptask xem họ có một số dữ liệu cần lấy lại từ Bản đồ hay không.

Dữ liệu trung gian từ Mapper được lưu trữ trong disk. Và việc chuyển dữ liệu từ Mapper sang Reduce diễn ra thông qua Network ( Data Localitykhông được bảo toàn trong giai đoạn Reduce)


-2

Khi Mapper hoàn thành nhiệm vụ của mình thì Reducer bắt đầu công việc Giảm dữ liệu, đây là công việc Mapreduce.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.