Trong Hadoop khi nào các nhiệm vụ giảm bắt đầu? Họ có bắt đầu sau khi một tỷ lệ phần trăm (ngưỡng) nhất định của người lập bản đồ hoàn tất không? Nếu vậy, ngưỡng này có được cố định không? Loại ngưỡng nào thường được sử dụng?Khi nào làm giảm các tác vụ bắt đầu trong Hadoop?
Trả lời
Pha giảm có 3 bước: trộn, sắp xếp, giảm. Trộn là nơi dữ liệu được thu thập bởi bộ giảm tốc từ mỗi người lập bản đồ. Điều này có thể xảy ra trong khi những người vẽ bản đồ đang tạo dữ liệu vì nó chỉ là một chuyển dữ liệu. Mặt khác, sắp xếp và giảm chỉ có thể bắt đầu khi tất cả các người lập bản đồ được thực hiện. Bạn có thể biết MapReduce nào đang thực hiện bằng cách xem xét tỷ lệ phần trăm hoàn thành bộ giảm tốc: 0-33% có nghĩa là việc trộn ngẫu nhiên, 34-66% sắp xếp, giảm 67% -100%. Đây là lý do tại sao bộ giảm tốc của bạn đôi khi có vẻ "bị mắc kẹt" ở mức 33% - nó đang chờ người lập bản đồ kết thúc.
Trình giảm tốc 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 tất. Bạn có thể thay đổi tham số để có bộ giảm tốc bắt đầu sớm hay muộn.
Tại sao bắt đầu giảm tốc sớm một điều tốt? Bởi vì nó lây lan ra truyền dữ liệu từ những người vẽ bản đồ đến bộ giảm tốc 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 bắt đầu giảm tốc sớm một điều xấu? Bởi vì họ "hog lên" làm giảm các khe 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 giảm hiện nay không thể sử dụng chúng.
Bạn có thể tùy chỉnh khi bộ giảm tốc khởi động bằng cách thay đổi giá trị mặc định là mapred.reduce.slowstart.completed.maps
trong mapred-site.xml
. Giá trị 1.00
sẽ chờ cho tất cả các người lập bản đồ hoàn tất trước khi bắt đầu bộ giảm tốc. Giá trị 0.0
sẽ bắt đầu giảm tốc ngay lập tức. Giá trị 0.5
sẽ bắt đầu giảm khi một nửa số người lập bản đồ hoàn tất. Bạn cũng có thể thay đổi mapred.reduce.slowstart.completed.maps
trên cơ sở từng công việc. Trong phiên bản mới của Hadoop (ít nhất 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.9
nếu hệ thống có nhiều công việc cùng một lúc. Bằng cách này, công việc không tăng tốc khi họ không làm gì ngoài việc sao chép dữ liệu. Nếu bạn chỉ có một công việc chạy cùng một lúc, hãy thực hiện 0.1
có thể sẽ phù hợp.
Tôi hiểu rõ Phần bắt đầu giảm pha với giai đoạn bản đồ và tiếp tục tiêu thụ bản ghi từ bản đồ. Tuy nhiên kể từ khi có phân loại và pha trộn sau giai đoạn bản đồ, tất cả các đầu ra phải được sắp xếp và gửi đến bộ giảm tốc. Vì vậy, một cách hợp lý, bạn có thể tưởng tượng rằng pha giảm bắt đầu chỉ sau giai đoạn bản đồ nhưng thực sự cho các bộ giảm tốc hiệu suất cũng được khởi tạo với những người lập bản đồ.
Phần trăm hiển thị cho pha giảm thực sự là về lượng dữ liệu được sao chép từ đầu ra bản đồ đến các thư mục đầu vào bộ giảm. Để biết khi nào việc sao chép này bắt đầu? Đây là một cấu hình bạn có thể thiết lập như Donald đã trình bày ở trên. Khi tất cả dữ liệu được sao chép sang bộ giảm (nghĩa là giảm 100%), đó là khi bộ giảm tốc bắt đầu hoạt động và do đó có thể đóng băng trong "giảm 100%" nếu mã giảm của bạn là I/O hoặc CPU chuyên sâu.
Giai đoạn giảm có thể bắt đầu lâu trước khi trình giảm tốc được gọi. Ngay sau khi "a" bản đồ kết thúc công việc, dữ liệu được tạo ra trải qua một số sắp xếp và xáo trộn (bao gồm cả cuộc gọi đến bộ kết hợp và phân vùng). Các "giai đoạn" giảm tốc đá trong thời điểm xử lý dữ liệu bản đồ bài đăng được bắt đầu. Khi quá trình xử lý được thực hiện, bạn sẽ thấy tiến trình giảm tỷ lệ phần trăm. Tuy nhiên, không có bộ giảm tốc nào được gọi. 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 tốc mong muốn, bạn có thể muốn thay đổi tham số như được mô tả bởi @ Donald-miner ở trên.
Hãy xem xét một ví dụ WordCount để hiểu rõ hơn cách bản đồ giảm tác vụ hoạt động. Giả sử chúng tôi có một tệp lớn, nói một cuốn tiểu thuyết và nhiệm vụ của chúng tôi là tìm số lần mỗi từ xuất hiện trong tệp. Kể từ khi tập tin là lớn, nó có thể được chia thành các khối khác nhau và nhân rộng 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à giảm. Nhiệm vụ bản đồ lấy làm đầu vào cho mỗi khối và tạo cặp khóa-giá trị trung gian. Trong ví dụ này, vì chúng tôi đếm số lần xuất hiện của 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 ... Các kết quả trung gian của tất cả các nhà lập bản đồ là thông qua một pha trộn sẽ sắp xếp lại kết quả trung gian.
Giả sử rằng đầu ra bản đồ của chúng tôi từ người vẽ bản đồ khác nhau có dạng sau:
Bản đồ 1: - (nghĩa là, 24) (đã, 32) (và, 12)
Map2: - (của tôi, 12) (nghĩa là, 23) (đã, 30)
Bản đồ kết quả đầu ra đều được sắp xếp một cách như vậy mà giá trị khóa tương tự được trao cho các giảm tương tự. Ở đây nó sẽ có nghĩa là các phím tương ứng với, là vv đi cùng một reducer.It là giảm mà sản xuất cuối cùng đầu ra, mà trong trường hợp này sẽ là: - (và, 12) (là, 47) (của tôi, 12) (đã, 62)
Tác vụ giảm tốc chỉ bắt đầu sau completion
của tất cả các người lập bản đồ.
Nhưng việc truyền dữ liệu xảy ra sau each
Bản đồ. Thực ra nó là một hoạt động kéo.
Điều đó có nghĩa, mỗi lần giảm sẽ hỏi mỗi bản đồ nếu họ có một số dữ liệu để lấy lại từ Map.If họ tìm thấy bất kỳ người lập bản đồ nào đã hoàn thành nhiệm vụ của họ, Reducer kéo dữ liệu trung gian.
Dữ liệu trung gian từ Mapper được lưu trữ trong disk
. Và việc chuyển dữ liệu từ Mapper để Giảm xảy ra thông qua Mạng (Data Locality
không được bảo quản trong Giảm pha)
Giảm bắt đầu chỉ sau khi tất cả các mapper đã đánh bắt có nhiệm vụ, giảm phải liên lạc với tất cả các người vẽ bản đồ nên nó phải đợi cho đến khi người lập bản đồ cuối cùng hoàn thành nhiệm vụ task.however của nó bắt đầu truyền dữ liệu đến thời điểm nó đã hoàn thành nhiệm vụ của mình.
Khi Mapper hoàn thành nhiệm vụ của mình thì Reducer bắt đầu công việc của mình để Giảm dữ liệu, đây là công việc Mapreduce.
- 1. Cách bắt đầu học hadoop
- 2. "Bắt đầu từ đầu ra bản đồ" mất rất nhiều thời gian trong tác vụ bản đồ hadoop
- 3. Bắt đầu với MapReduce/Hadoop
- 4. Đầu vào tác vụ so với các nguồn tác vụ
- 5. Làm thế nào để lên lịch cho các tác vụ Bản đồ Hadoop trong cụm nút đa lõi 8?
- 6. Sắp xếp giá trị bộ lặp đầu vào giảm tốc trước khi xử lý trong Hadoop
- 7. Bắt đầu tác vụ nền thời gian dài
- 8. Hadoop - nút tên không bắt đầu lên
- 9. Hoàn tác "Đặt làm trang bắt đầu"
- 10. Làm cách nào để đặt số lượng tác vụ bản đồ trong hadoop 0,20?
- 11. C# bắt đầu một tác vụ được lập lịch
- 12. Trong Hadoop, khung công tác sẽ lưu đầu ra của tác vụ Bản đồ trong một ứng dụng Map-Reduce thông thường ở đâu?
- 13. Nhận ID cố gắng nhiệm vụ cho tác vụ Hadoop hiện đang chạy
- 14. Làm cách nào để gỡ lỗi bản đồ Hadoop giảm
- 15. Làm cách nào để bắt đầu bàn điều khiển IRB từ một tác vụ cào?
- 16. Làm cách nào tôi có thể bắt đầu một cá thể tác vụ tiếp tục?
- 17. Làm thế nào để bắt đầu nhiệm vụ nền chạy dài trong dịch vụ android
- 18. Rx và tác vụ - hủy tác vụ đang chạy khi tác vụ mới được sinh ra?
- 19. Bắt đầu từ mùa xuân <tác vụ: theo lịch-nhiệm vụ>
- 20. Tạo các tệp đầu ra riêng biệt trong Hadoop Streaming
- 21. .Tiếp tục bắt đầu trước khi hoàn thành nhiệm vụ
- 22. phương pháp thiết lập và dọn dẹp của Trình ánh xạ/Giảm tốc trong Hadoop MapReduce
- 23. Bắt đầu dịch vụ nền khi Android bật
- 24. Dịch vụ không bắt đầu
- 25. Giá trị giảm tốc của Hadoop trong bộ nhớ?
- 26. Bản đồ Hadoop Giảm: Thuật toán
- 27. Lỗi khi bắt đầu dịch vụ. Không tìm thấy OracleMTSRecoveryService
- 28. Công việc Hadoop: Tác vụ không báo cáo trạng thái trong 601 giây
- 29. Cách chạy tác vụ khi dịch vụ windows khởi động?
- 30. InstantiationException trong chương trình giảm bản đồ hadoop
bạn có biết nơi tôi có thể đọc thêm về những gì bạn đã đề cập không? – daydreamer
Slowstart là khá kém tài liệu trong quan điểm của tôi .... như là hầu hết các tham số cấu hình tối nghĩa. –
Câu trả lời hay @Donald Miner. Chỉ muốn thêm vào 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. http://hadoop.apache.org/docs/r1.1.2/mapred-default.html – sufinawaz