Blog này là tất cả về HDFS Erasure Coding. Trong blog này, chúng tôi sẽ thảo luận về khái niệm Mã hóa xóa trong Hadoop , các vấn đề của kế hoạch nhân rộng cũ. Hai thuật toán để mã hóa xóa Hadoop như Thuật toán XOR, Thuật toán Reed-Solomon cũng được thảo luận trong blog này.
Cuối cùng, chúng ta sẽ thấy kiến trúc và lợi thế của mã hóa xóa trong Hadoop HDFS.
Vấn đề với sao chép sơ đồ cũ
Mã hóa HDFS Erasure là một tính năng mới được giới thiệu để giảm chi phí lưu trữ khoảng 50% so với sao chép 3x. Hadoop HDFS sao chép mỗi khối 3 lần cho các mục đích khác nhau. Đây là một dạng dự phòng rất đơn giản để bảo vệ chống lại lỗi nút dữ liệu.
Cùng với những ưu điểm, nó có những nhược điểm khác nhau là nó rất đắt. 3 x sao chép có 200% chi phí trong không gian lưu trữ và các tài nguyên khác. Các tập dữ liệu có hoạt động I / O thấp, các bản sao bổ sung hiếm khi được truy cập trong quá trình hoạt động bình thường nhưng vẫn tiêu tốn các tài nguyên khác.
Đây là lý do mà mã hóa Hadoop Erasure ra đời. Nó cung cấp cùng một mức độ chịu lỗi với dung lượng lưu trữ ít hơn và chi phí lưu trữ 50%.
Khi so sánh sơ đồ lưu trữ khác nhau, một điều quan trọng cần cân nhắc là:
- Độ bền của dữ liệu (số lượng khả năng chịu lỗi đồng thời)
- Hiệu quả lưu trữ
Vì vậy, trong sao chép N-way, có khả năng chịu lỗi N-1 với hiệu suất lưu trữ 1 / n.
Mã hóa xóa HDFS trong Hadoop là gì?
HDFS Erasure Coding sử dụng RAID . RAID thực hiện EC sử dụng tước. Tách lưu trữ dữ liệu một cách hợp lý dưới dạng một khối. Sau đó, lưu trữ các khối này trên đĩa khác. Nó tính toán chẵn lẻ cho mỗi khối và lưu trữ. Điều này được mã hóa. Thông qua tính năng chẵn lẻ, nó sẽ khôi phục lỗi.
Đối với khả năng chịu lỗi, EC mở rộng thông báo với dữ liệu dự phòng. Mã hóa HDFS Erasure sẽ hoạt động trên các ô dữ liệu có kích thước đồng nhất. codec lấy một số ô dữ liệu làm đầu vào. Và sau đó tạo ra các ô chẵn lẻ làm đầu ra.
Toàn bộ quá trình này được gọi là Mã hóa. Chẵn lẻ và ô dữ liệu cùng nhau được gọi là nhóm mã hóa xóa. Quá trình tái tạo lại ô dữ liệu bị mất trên các ô còn lại được gọi là Giải mã.
Hai thuật toán có sẵn cho Mã hóa xóa HDFS như sau:
a) Thuật toán XOR
Đây là cách triển khai đơn giản của mã hóa Hadoop Erasure.
Giả sử các ô dữ liệu X, Y và Z là ô dữ liệu, sau đó ô chẵn lẻ là XOR của ba ô dữ liệu này x ⊕ y ⊕ z vì vậy trong quá trình hoạt động XOR, chỉ một bit chẵn lẻ được tạo ra và nếu bất kỳ bit nào bị mất, nó có thể được khôi phục bởi các ô dữ liệu còn lại và một bit chẵn lẻ.
Nó rất hạn chế vì nó tạo ra 1 bit chẵn lẻ nên hoạt động XOR chỉ có thể chịu được 1 lỗi với kích thước nhóm n.
“ Trong hoạt động XOR, khả năng chịu lỗi 1 và hiệu quả lưu trữ là n-1 / n khi kích thước nhóm là n . ”
b) Thuật toán Reed-Solomon
Reed-Solomon giải quyết hạn chế hoạt động của XOR. Nó sử dụng đại số tuyến tính để tạo ra nhiều ô chẵn lẻ. RS sử dụng hai tham số k và m, k là số ô dữ liệu và m là số ô chẵn lẻ.
RS hoạt động bằng cách nhân k ô dữ liệu với Ma trận Bộ tạo (G), để tạo từ mã mở rộng với k ô dữ liệu và m ô chẵn lẻ. Lỗi lưu trữ có thể được khôi phục bằng phép nhân nghịch đảo của ma trận bộ tạo với các từ mã mở rộng miễn là có k trong số k + m ô.
“Với Reed, Solomon chịu lỗi lên đến m ô và hiệu suất lưu trữ k / k + m trong đó k là ô dữ liệu và m là ô chẵn lẻ. ”
Quyết định thiết kế và kiến trúc
Dải EC có một số ưu điểm:
- Stripping cho phép EC trực tuyến (ghi dữ liệu ngay lập tức ở định dạng EC), tránh giai đoạn chuyển đổi và ngay lập tức tiết kiệm dung lượng lưu trữ.
- Nó phân phối một tệp nhỏ đến nhiều Datanode. Nó loại bỏ việc gộp nhiều tệp vào một nhóm mã hóa duy nhất. Do đó, nó đơn giản hóa hoạt động của tệp, chẳng hạn như xóa và di chuyển giữa các không gian tên được liên kết.
- Để hỗ trợ tốt hơn cho các tệp nhỏ, EC hỗ trợ tước. Trong tương lai, HDFS cũng sẽ hỗ trợ bố cục EC liền kề.
EC đã thêm nhiều thành phần mới là:
- Tiện ích mở rộng NameNode (ECManager ) - Các tệp HDFS sọc được cấu tạo một cách hợp lý từ các nhóm khối. Mỗi trong số đó chứa một số khối bên trong nhất định. Để giảm mức tiêu thụ bộ nhớ của Namenode từ các khối bổ sung này, nó đã giới thiệu một giao thức đặt tên khối phân cấp mới. EC suy ra ID của một nhóm khối từ ID của bất kỳ khối bên trong nào của nó. Điều này cho phép quản lý ở cấp nhóm khối chứ không phải khối.
- Tiện ích mở rộng Máy khách (Máy khách EC) - Máy khách có thể thực hiện song song thao tác đọc và ghi trên nhiều khối nội bộ trong một nhóm khối.
- Tiện ích mở rộng Mã dữ liệu (ECWorker) - DataNode chạy một tác vụ EC worker bổ sung để khôi phục các khối mã hóa bị xóa không thành công. Vì vậy, NameNode phát hiện các khối EC bị lỗi, nút tên cung cấp hướng dẫn khôi phục cho các nút dữ liệu. Sau đó, nó chuyển nhiệm vụ khôi phục dưới dạng phản hồi nhịp tim.
Lợi ích của Erasure Coding
- Tính khả dụng của dữ liệu với dung lượng thấp hơn: HDFS Mã xóa cho phép dữ liệu có sẵn ở dung lượng thấp hơn. Ban đầu, sao chép các khối trong ba bản sao. Vì vậy, không gian lưu trữ của ba bản sao là lớn. Tuy nhiên, giờ đây, mã hóa xóa sẽ lưu trữ dữ liệu lớn dưới dạng bit chẵn lẻ, vì vậy việc lưu trữ sẽ giảm dung lượng.
- Hiệu suất: Do EC lưu trữ dữ liệu dưới dạng chẵn lẻ thay vì 3 bản sao nên nó mang lại hiệu suất tốt hơn.
- Phục hồi nhanh: Nó phát hiện và khôi phục các lỗi khối HDFS cả chủ động (trong nền) và thụ động (trên đường dẫn đọc).
Kết luận
Kết luận, chúng ta có thể nói rằng, mã hóa HDFS Erasure đã giảm chi phí lưu trữ xuống 50%. EC giảm chi phí vì các bit chẵn lẻ. Do đó, các tính năng HDFS này tăng cường chức năng Apache Hadoop.
Nếu bạn có bất kỳ câu hỏi hoặc đề xuất nào liên quan đến Erasure Coding trong HDFS, vui lòng bình luận cho chúng tôi trong phần dưới đây.