HBase
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> HBase

Điều chỉnh hiệu suất trong MapReduce để cải thiện hiệu suất

Điều chỉnh hiệu suất trong Hadoop giúp tối ưu hóa hiệu suất của cụm Hadoop. Trong bài viết Điều chỉnh hiệu suất MapReduce này, trước tiên bạn sẽ khám phá các cách khác nhau để cải thiện hiệu suất cụm Hadoop và đạt được kết quả tốt nhất từ ​​lập trình MapReduce trong Hadoop.

Sau đó, bài viết sẽ đề cập đến bảy cách hoặc khái niệm quan trọng để Điều chỉnh Hiệu suất Hadoop MapReduce. Những cách này là Điều chỉnh bộ nhớ trong Hadoop, Cải thiện Hiệu suất IO, Tràn đĩa bản đồ trong Hadoop, điều chỉnh các tác vụ trình lập bản đồ và trình thu gọn, ghi kết hợp, sử dụng các phép nối lệch và thực thi theo kiểu suy đoán.

Các kỹ thuật này có thể được sử dụng để thiết lập các cụm Hadoop trong quá trình sản xuất với phần cứng hàng hóa nhằm nâng cao hiệu suất với chi phí vận hành tối thiểu.

Giới thiệu về Hadoop MapReduce Hiệu suất Điều chỉnh

Cài đặt cụm Hadoop trong quá trình sản xuất chỉ là một nửa chiến thắng trong trận chiến. Đối với quản trị viên Hadoop, điều cực kỳ quan trọng là phải điều chỉnh thiết lập cụm Hadoop để đạt được hiệu suất tối đa.

Điều chỉnh hiệu suất Hadoop giúp tối ưu hóa hiệu suất cụm Hadoop và đạt được kết quả tốt nhất trong khi thực hiện các công việc MapReduce trong các công ty Dữ liệu lớn.

Trong quá trình cài đặt Hadoop, cụm Hadoop được định cấu hình với cài đặt cấu hình mặc định.

Điều rất quan trọng đối với quản trị viên Hadoop là phải nắm rõ một số thông số kỹ thuật phần cứng như dung lượng RAM, số lượng đĩa được gắn trên DataNodes, số lõi CPU, số lõi vật lý hoặc ảo, Thẻ NIC, v.v.

Do đó, không có kỹ thuật điều chỉnh hiệu suất duy nhất phù hợp với tất cả các công việc Hadoop vì rất khó đạt được trạng thái cân bằng giữa tất cả các tài nguyên trong khi giải quyết vấn đề dữ liệu lớn.

Chúng tôi có thể chọn các mẹo và thủ thuật điều chỉnh hiệu suất dựa trên lượng dữ liệu được di chuyển và loại công việc Hadoop sẽ được chạy trong quá trình sản xuất. Điều chỉnh hiệu suất tốt nhất và hiệu quả nhất giúp đạt được hiệu suất tối đa.

Để thực hiện tương tự, chúng tôi phải lặp lại quy trình được đề cập bên dưới cho đến khi đạt được đầu ra mong muốn theo cách tối ưu.
Chạy công việc -> Xác định nút cổ chai -> Nút thắt địa chỉ.

Vì vậy, về cơ bản, để điều chỉnh hiệu suất, trước tiên chúng ta phải chạy công việc Hadoop MapReduce, xác định nút cổ chai và sau đó giải quyết vấn đề bằng các phương pháp bên dưới. Chúng tôi phải lặp lại bước trên cho đến khi đạt được mức hiệu suất mong muốn.

Mẹo và Thủ thuật để Điều chỉnh Hiệu suất MapReduce

Các cách được sử dụng để điều chỉnh hiệu suất Hadoop MapReduce có thể được phân loại thành hai loại. Hai loại này là:

1. Điều chỉnh hiệu suất dựa trên thông số thời gian chạy Hadoop

2. Điều chỉnh hiệu suất dành riêng cho ứng dụng Hadoop

Bây giờ chúng ta hãy thảo luận về cách chúng ta có thể cải thiện hiệu suất của cụm Hadoop dựa trên hai danh mục này.

1. Điều chỉnh hiệu suất dựa trên thông số thời gian chạy của Hadoop

Danh mục này đề cập đến việc điều chỉnh các thông số thời gian chạy của Hadoop như điều chỉnh mức sử dụng CPU, mức sử dụng bộ nhớ, mức sử dụng đĩa và mức sử dụng mạng để điều chỉnh hiệu suất. Các kỹ thuật được bao gồm trong danh mục này là:

a. Điều chỉnh bộ nhớ

Bước quan trọng nhất để đảm bảo hiệu suất tối đa của công việc Hadoop là điều chỉnh các thông số cấu hình cho bộ nhớ bằng cách giám sát việc sử dụng bộ nhớ trên máy chủ.

Mỗi công việc MapReduce trong Hadoop thu thập thông tin về các bản ghi đầu vào khác nhau đã đọc, số lượng bản ghi giảm thiểu, số lượng bản ghi được liên kết để thực thi thêm, bộ nhớ hoán đổi, bộ kích thước đống, v.v.

Các tác vụ Hadoop thường không bị ràng buộc bởi CPU. Vì vậy, mối quan tâm hàng đầu là tối ưu hóa việc sử dụng bộ nhớ và tràn ổ đĩa.

Quy tắc ngón tay cái tốt nhất để điều chỉnh bộ nhớ nhằm tối đa hóa hiệu suất là đảm bảo rằng các công việc MapReduce không kích hoạt hoán đổi. Điều đó có nghĩa là sử dụng nhiều bộ nhớ nhất có thể mà không cần kích hoạt hoán đổi.

Các phần mềm như Cloudera Manager, Nagios hoặc Ganglia có thể được sử dụng để theo dõi việc sử dụng bộ nhớ hoán đổi.

Bất cứ khi nào có mức sử dụng bộ nhớ hoán đổi lớn, thì việc sử dụng bộ nhớ phải được tối ưu hóa bằng cách định cấu hình mapred.child.java.opts bằng cách giảm dung lượng RAM được phân bổ cho từng tác vụ trong mapred.child.java.opts .

Chúng tôi có thể điều chỉnh bộ nhớ cho tác vụ bằng cách đặt mapred.child.java.opts thành -Xmx2048M trong mapred-site.xml.

b. Giảm thiểu sự cố tràn đĩa bản đồ

Disk IO là điểm nghẽn hiệu suất trong Apache Hadoop. Có rất nhiều thông số mà chúng tôi có thể điều chỉnh để giảm thiểu sự cố tràn. Chúng tôi có thể điều chỉnh các thông số như:

  • Nén đầu ra của trình liên kết
  • Đảm bảo rằng trình ánh xạ sử dụng 70% bộ nhớ heap cho bộ đệm tràn.

Nhưng bạn có nghĩ rằng thường xuyên đổ xăng có thực sự là một ý kiến ​​hay không?

Chúng tôi khuyên bạn không nên làm tràn nhiều lần vì nếu chúng tôi làm tràn một lần, thì chúng tôi cần đọc lại và viết lại tất cả dữ liệu:gấp 3 lần IO.

c. Điều chỉnh các tác vụ của người lập bản đồ

Chúng ta có thể đặt số lượng nhiệm vụ bản đồ một cách ngầm định. Cách phổ biến và hiệu quả nhất để điều chỉnh hiệu suất Hadoop cho người lập bản đồ là kiểm soát số lượng người lập bản đồ và kích thước của từng công việc.

Trong khi xử lý các tệp lớn, khung công tác chia tệp thành các phần nhỏ hơn để trình ánh xạ có thể chạy song song. Tuy nhiên, việc khởi tạo một công việc lập bản đồ mới thường mất vài giây, đây cũng là một chi phí lớn và phải được giảm thiểu. Vì vậy, các đề xuất tương tự là:

  • Sử dụng lại tác vụ jvm
  • Nhắm mục tiêu cho các nhiệm vụ bản đồ chạy từ 1 đến 3 phút mỗi nhiệm vụ. Vì vậy, nếu thời gian chạy trình lập bản đồ trung bình dưới một phút, hãy tăng kích thước mapred.min.split.size để phân bổ ít người lập bản đồ hơn trong vùng và do đó giảm chi phí khởi tạo trình lập bản đồ.
  • Sử dụng định dạng nhập tệp Kết hợp cho nhiều tệp nhỏ hơn.

2. Điều chỉnh hiệu suất dành riêng cho ứng dụng Hadoop

Các kỹ thuật được bao gồm trong danh mục này là:

a. Giảm thiểu đầu ra của người lập bản đồ

Bằng cách giảm thiểu đầu ra ánh xạ, chúng tôi có thể cải thiện hiệu suất vì đầu ra ánh xạ rất nhạy cảm với IO đĩa, IO mạng và độ nhạy của bộ nhớ trong giai đoạn trộn. Chúng ta có thể đạt được điều này bằng cách:

  • Lọc các bản ghi ở phía ánh xạ thay vì phía rút gọn.
  • Sử dụng dữ liệu tối thiểu để tạo khóa và giá trị đầu ra của trình liên kết bản đồ của chúng tôi trong MapReduce.
  • Nén đầu ra của trình liên kết
b. Cân bằng bộ giảm tốc đang tải

Các nhiệm vụ giảm không cân bằng tạo ra các vấn đề về hiệu suất. Một số bộ giảm tốc lấy phần lớn đầu ra từ trình ánh xạ và chạy rất lâu so với các bộ giảm tốc khác. Chúng tôi có thể cân bằng tải bộ giảm tốc bằng cách:

  • Triển khai một hàm băm tốt hơn trong lớp Phân vùng.
  • Viết công việc tiền xử lý để tách các khóa bằng nhiều đầu ra. Sau đó, sử dụng một công việc thu nhỏ bản đồ khác để xử lý các khóa đặc biệt có thể gây ra sự cố.
c. Giảm dữ liệu trung gian với trình kết hợp trong Hadoop

Hơn nữa, chúng tôi có thể điều chỉnh hiệu suất của cụm Hadoop bằng cách viết một bộ kết hợp. Combiner giảm số lượng dữ liệu được chuyển từ trình ánh xạ sang trình giảm thiểu. Điều này được chứng minh là có lợi vì nó làm giảm tắc nghẽn mạng.

d. Thực thi đầu cơ

Hiệu suất của các công việc MapReduce bị ảnh hưởng nghiêm trọng khi các tác vụ mất nhiều thời gian hơn để hoàn thành việc thực thi. Thực thi đầu cơ trong Hadoop là phương pháp phổ biến để giải quyết vấn đề này bằng cách sao lưu các tác vụ chậm trên các máy thay thế.

Chúng tôi có thể cho phép thực thi suy đoán bằng cách đặt các thông số cấu hình ‘mapreduce.map.tasks.speculation.execution’ ‘mapreduce.reduce.tasks.speculation.execution’ thành sự thật. Điều này sẽ làm giảm thời gian thực hiện công việc.

Tóm tắt

Cuối cùng, chúng tôi đã thấy điều chỉnh Hiệu suất trong Hadoop giúp tối ưu hóa hiệu suất cụm Hadoop. Bài viết giải thích các mẹo và thủ thuật khác nhau để điều chỉnh hiệu suất của cụm Hadoop.

Bài viết đã nêu bật một số thủ thuật hay nhất và hiệu quả nhất để tối đa hóa hiệu suất.

Tuy nhiên, nếu bạn có bất kỳ câu hỏi nào về chủ đề này, vui lòng chia sẻ chúng với chúng tôi trong phần bình luận.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Sử dụng COD và CML để xây dựng các ứng dụng dự đoán dữ liệu kho

  2. Hướng dẫn sử dụng cổng HBase của Apache

  3. 20 Sự khác biệt đáng chú ý giữa Hadoop 2.x và Hadoop 3.x

  4. Lập chỉ mục email bằng Tìm kiếm Cloudera và HBase

  5. Chuyển đổi các ACL của HBase sang chính sách Ranger