Trong bài viết Thực thi đầu cơ MapReduce này, bạn sẽ khám phá chi tiết về thực thi suy đoán Hadoop. Bạn sẽ tìm hiểu thực thi suy đoán là gì, nhu cầu của nó là gì, cách chúng tôi có thể bật và tắt nó.
Bài báo cũng giải thích liệu nó có lợi hay không và nó hoạt động như thế nào.
Thực thi đầu cơ trong Hadoop là gì?
Mô hình MapReduce trong khuôn khổ Hadoop chia các công việc thành các tác vụ độc lập và chạy các tác vụ này song song để giảm thời gian thực hiện công việc tổng thể.
Điều này làm cho thời gian thực hiện công việc trở nên nhạy cảm đối với các tác vụ chạy chậm vì chỉ một tác vụ chậm có thể khiến toàn bộ thời gian thực hiện công việc kéo dài hơn dự kiến. Khi bất kỳ công việc nào bao gồm hàng nghìn hoặc hàng trăm nhiệm vụ thì khả năng xảy ra một số nhiệm vụ không giống nhau là rất thực tế.
Các tác vụ có thể bị chậm vì nhiều lý do khác nhau, chẳng hạn như định cấu hình sai phần mềm hoặc xuống cấp phần cứng. Nhưng khó phát hiện ra nguyên nhân khiến công việc chạy chậm là do công việc vẫn hoàn thành xuất sắc dù mất nhiều thời gian hơn dự kiến.
Khung công tác Hadoop không cố gắng chẩn đoán hoặc khắc phục các tác vụ chạy chậm. Khuôn khổ cố gắng phát hiện tác vụ đang chạy chậm hơn tốc độ mong đợi và khởi chạy một tác vụ khác, tác vụ tương đương như một bản sao lưu.
Tác vụ sao lưu được gọi là tác vụ suy đoán và quá trình này được gọi là thực thi suy đoán trong Hadoop.
Nhu cầu thực thi suy đoán trong Hadoop là gì?
Trong khuôn khổ Hadoop, tệp đầu vào được phân vùng thành nhiều khối và các khối đó được lưu trữ trên các nút khác nhau trong cụm Hadoop.
Khi công việc MapReduce được trình bởi khách hàng thì nó sẽ tính toán số lượng InputSplits và chạy bao nhiêu ánh xạ bằng số lượng InputSplit. Các trình lập bản đồ này (tác vụ bản đồ) chạy song song trên DataNodes, nơi chứa dữ liệu phân tách.
Bây giờ, Điều gì sẽ xảy ra nếu một số DataNode trong cụm Hadoop không thực thi các tác vụ nhanh như các DataNodes khác do lỗi phần cứng hoặc sự cố mạng.
Vì vậy, các tác vụ bản đồ chạy trên các DataNodes đó sẽ chậm hơn so với các tác vụ bản đồ đang chạy trên các DataNodes khác. Bộ giảm tốc chỉ có thể bắt đầu thực thi khi có các đầu ra trung gian của tất cả các trình ánh xạ.
Do đó, càng ít tác vụ bản đồ chạy chậm sẽ làm chậm quá trình thực thi Công cụ giảm tốc.
Nếu Bộ giảm tốc đang chạy trên nút chậm hơn, thì điều đó cũng sẽ làm chậm kết quả cuối cùng của công việc tổng thể.
Vì vậy, để bảo vệ khỏi các tác vụ chạy chậm như vậy, khuôn khổ Hadoop bắt đầu tác vụ tương tự trên nút khác. Tối ưu hóa này bởi khung Hadoop được gọi là thực thi tác vụ mang tính đầu cơ.
Cách thực thi đầu cơ hoạt động trong Hadoop?
Việc thực thi suy đoán không khởi chạy hai tác vụ trùng lặp của mọi tác vụ độc lập của một công việc vào cùng một thời điểm để chúng có thể chạy đua lẫn nhau. Nếu khung làm như vậy, thì nó sẽ dẫn đến việc lãng phí tài nguyên cụm.
Thay vào đó, bộ lập lịch trình theo dõi tiến trình của tất cả các tác vụ cùng loại (chẳng hạn như lập bản đồ và thu gọn) trong một công việc và chỉ khởi chạy các bản sao suy đoán cho các tỷ lệ nhỏ chạy chậm hơn mức trung bình.
Khi nhiệm vụ được hoàn thành thành công, thì mọi tác vụ trùng lặp đang chạy sẽ bị loại bỏ vì chúng không còn được yêu cầu nữa.
Vì vậy, trong trường hợp nếu nhiệm vụ ban đầu hoàn thành trước tác vụ suy đoán, thì tác vụ suy đoán sẽ bị giết. Nếu tác vụ suy đoán kết thúc trước tác vụ ban đầu, thì tác vụ gốc sẽ bị hủy.
Lưu ý rằng thực thi suy đoán là tối ưu hóa. Nó không phải là một tính năng để làm cho các công việc MapReduce chạy một cách đáng tin cậy hơn.
Làm cách nào để định cấu hình thực thi suy đoán trong Hadoop?
Theo mặc định, thực thi Suy đoán được bật cho tác vụ Bản đồ cũng như cho các tác vụ thu gọn. Thuộc tính của nó được đặt trong mapred-site.xml tệp cấu hình.
- mapreduce.map.speculation :Nếu thuộc tính này được đặt thành true, thì việc thực thi suy đoán của tác vụ bản đồ sẽ được kích hoạt. Theo mặc định, đó là sự thật.
- mapreduce.reduce.speculation :Nếu thuộc tính này được đặt thành true, thì quá trình thực thi suy đoán của tác vụ giảm được kích hoạt. Theo mặc định, đó là sự thật.
Tại sao bạn lại muốn tắt thực thi suy đoán?
Mục tiêu chính của việc thực thi đầu cơ là giảm thời gian thực hiện công việc. Nhưng điều này sẽ phải trả giá bằng hiệu quả của cụm Hadoop.
Trên một cụm Hadoop bận rộn, điều này có thể làm giảm thông lượng tổng thể vì các tác vụ dư thừa đang được thực thi để giảm thời gian thực thi cho một công việc.
Vì lý do này, một số quản trị viên cụm tắt thực thi suy đoán trên cụm Hadoop và yêu cầu người dùng bật rõ ràng nó cho các công việc riêng lẻ.
Chúng tôi có thể tắt nó cho các tác vụ giảm vì bất kỳ tác vụ giảm trùng lặp nào đều yêu cầu tìm nạp các đầu ra của trình liên kết giống như tác vụ ban đầu, điều này sẽ làm tăng đáng kể lưu lượng mạng trên cụm.
Thực hiện đầu cơ có lợi không?
Thực thi đầu cơ trong Hadoop có lợi trong một số trường hợp vì trong cụm Hadoop có hàng trăm hoặc hàng nghìn nút, các vấn đề như tắc nghẽn mạng hoặc lỗi phần cứng là phổ biến.
Vì vậy, chạy các tác vụ song song hoặc trùng lặp sẽ tốt hơn. Nhưng trong trường hợp, nếu hai nhiệm vụ trùng lặp của mọi nhiệm vụ độc lập của một công việc được khởi chạy cùng một lúc, thì đó sẽ là một sự lãng phí tài nguyên cụm.
Tóm tắt
Tôi hy vọng sau khi đọc bài viết này, bạn đã hiểu rõ ràng thực thi suy đoán trong Hadoop là gì và tại sao nó lại cần thiết. Bạn cũng đã thấy cách chúng tôi có thể vô hiệu hóa nó cho các tác vụ bản đồ và giảm các tác vụ riêng lẻ.