Video: Spark Bài 12: Cài đặt Spark Cluster 2025
Khối lượng dữ liệu khổng lồ là thực tế trong một triển khai Hadoop điển hình làm cho nén một sự cần thiết. Việc nén dữ liệu chắc chắn sẽ giúp bạn tiết kiệm được rất nhiều không gian lưu trữ và chắc chắn sẽ tăng tốc độ di chuyển dữ liệu đó trong toàn bộ cluster của bạn. Không có gì đáng ngạc nhiên, một số chương trình nén có sẵn, được gọi là codec, được đưa ra cho bạn để xem xét.
Trong triển khai Hadoop, bạn đang xử lý (có thể) với một số lượng lớn các nút nô lệ cá nhân, mỗi cái đều có một số ổ đĩa lớn. Không hiếm khi một nút nô lệ riêng lẻ có trên 45TB không gian lưu trữ thô có sẵn cho HDFS.
Trước tiên, một số thuật ngữ cơ bản: Acodec, là dạng rút gọn của máy nén o mpressor / dec , là công nghệ (phần mềm hoặc phần cứng, hoặc cả hai) để nén và giải nén dữ liệu; đó là việc thực hiện một thuật giải nén / giải mã. Độ nén có thể nén
là một khái niệm quan trọng trong ngữ cảnh Hadoop. Cách Hadoop hoạt động là các tệp tin được chia ra nếu chúng lớn hơn cài đặt kích thước khối của tệp và chia tách tệp riêng lẻ có thể được xử lý song song bằng các trình ánh xạ khác nhau.
Khả năng nén nén chỉ là một yếu tố cho các tập tin văn bản. Đối với các tệp nhị phân, codec nén Hadoop nén dữ liệu trong một bộ chứa mã nhị phân, tùy thuộc vào loại tệp (ví dụ: tệp Trình tự dạng, Avro hoặc ProtocolBuffer).
Phát biểu về hiệu suất, có chi phí (về xử lý tài nguyên và thời gian) liên quan đến nén dữ liệu đang được ghi vào cụm Hadoop của bạn.
Với máy tính, cũng như cuộc sống, không có gì là miễn phí. Khi nén dữ liệu, bạn đang trao đổi các chu trình xử lý cho không gian đĩa. Và khi dữ liệu đó đang được đọc, có một chi phí liên quan đến giải nén dữ liệu là tốt. Hãy chắc chắn cân nhắc những ưu điểm của việc tiết kiệm lưu trữ so với hiệu suất bổ sung trên không.
Nếu tệp tin đầu vào cho một công việc MapReduce chứa dữ liệu nén, thời gian cần để đọc dữ liệu đó từ HDFS sẽ giảm và hiệu năng công việc được tăng cường. Dữ liệu đầu vào được giải nén tự động khi nó được đọc bởi MapReduce.
Phần mở rộng tên tệp đầu vào xác định codec được hỗ trợ được sử dụng để tự động giải nén dữ liệu. Ví dụ, a. phần mở rộng gz xác định tệp là tệp gzip nén.
Cũng có thể hữu ích để nén đầu ra trung gian của giai đoạn bản đồ trong dòng xử lý MapReduce. Bởi vì đầu ra chức năng của bản đồ được ghi vào đĩa và được vận chuyển qua mạng tới các tác vụ giảm, nén dữ liệu đầu ra có thể dẫn đến cải tiến hiệu suất đáng kể.
Và nếu bạn muốn lưu trữ sản lượng MapReduce làm tệp lịch sử để sử dụng trong tương lai, nén dữ liệu này có thể làm giảm đáng kể lượng không gian cần thiết trong HDFS.
Có rất nhiều thuật toán và công cụ nén khác nhau, và đặc điểm và điểm mạnh của chúng khác nhau. Thu nhập thương mại phổ biến nhất là giữa các tỷ số nén (mức độ nén tập tin) và tốc độ nén / giải nén. Khuôn khổ Hadoop hỗ trợ một số codec. Khung này minh bạch nén và giải nén hầu hết các định dạng tập tin đầu vào và đầu ra.
Danh sách sau đây xác định một số codec phổ biến được hỗ trợ bởi khung Hadoop. Hãy chắc chắn chọn codec phù hợp nhất với nhu cầu của trường hợp sử dụng cụ thể của bạn (ví dụ với khối lượng công việc mà tốc độ xử lý là quan trọng, chọn codec có tốc độ giải nén cao):
Gzip:
tiện ích đã được thông qua bởi dự án GNU, Gzip (viết tắt của GNU zip) tạo các tệp nén có tệp. gz mở rộng. Bạn có thể sử dụng lệnh gunzip để giải nén các tệp đã được tạo ra bởi một số tiện ích nén, bao gồm Gzip.
Bzip2:
-
Từ quan điểm sử dụng, Bzip2 và Gzip tương tự. Bzip2 tạo ra một tỷ lệ nén tốt hơn Gzip, nhưng nó chậm hơn nhiều. Trong thực tế, trong tất cả các codec nén có sẵn trong Hadoop, Bzip2 là do chậm nhất. Nếu bạn đang thiết lập một kho lưu trữ mà bạn hiếm khi cần phải truy vấn và không gian có phí bảo hiểm cao thì có lẽ Bzip2 sẽ đáng để xem xét.
-
Snappy: Codec Snappy từ Google cung cấp tỉ lệ nén vừa phải, nhưng tốc độ nén và giải nén nhanh. (Trong thực tế, nó có tốc độ giải nén nhanh nhất, làm cho nó rất mong muốn cho các bộ dữ liệu có thể được truy vấn thường xuyên.)
Codec Snappy được tích hợp vào Hadoop Common, một tập hợp các tiện ích phổ biến hỗ trợ các tiểu dự án khác của Hadoop. Bạn có thể sử dụng Snappy như một add-on cho các phiên bản mới hơn của Hadoop mà vẫn chưa hỗ trợ codec Snappy.
-
LZO: Tương tự như Snappy, LZO (viết tắt của Lempel-Ziv-Oberhumer, bộ ba của các nhà khoa học máy tính đã đưa ra thuật toán) cung cấp tỉ lệ nén khiêm tốn nhưng tốc độ nén và giải nén nhanh. LZO được cấp phép theo Giấy phép Công cộng GNU (GPL).
LZO hỗ trợ khả năng nén có thể chèn được, cho phép xử lý song song các tập tin nén được chia nhỏ bởi các công việc MapReduce của bạn. LZO cần phải tạo ra một chỉ mục khi nén một tệp tin, bởi vì với các khối nén có độ dài biến, một chỉ mục được yêu cầu phải nói với người lập bản đồ nơi nó có thể chia tệp nén một cách an toàn. LZO chỉ thực sự là mong muốn nếu bạn cần phải nén các tập tin văn bản.
-
Bộ mã hoá Hadoop Codec Codec
Tệp mở rộng
Mức độ nén | Tốc độ nén | Gzip | . gz | Không |
---|---|---|---|---|
Trung bình | Trung bình | Bzip2 | . bz2 | Có |
Cao | Chậm | Snappy | . nhanh | Không |
Trung bình | Nhanh | LZO | . lso | Không, trừ khi được lập chỉ mục |
Trung bình | Nhanh | Tất cả các thuật toán nén phải tạo ra sự cân bằng giữa mức độ nén và tốc độ nén mà chúng có thể đạt được. Các codec được liệt kê cung cấp cho bạn một số kiểm soát những gì cân bằng giữa tỷ lệ nén và tốc độ nên được ở thời gian nén. | Ví dụ: Gzip cho phép bạn điều chỉnh tốc độ nén bằng cách chỉ định số nguyên âm (hoặc từ khóa), trong đó -1 cho biết mức nén nhanh nhất, và -9 cho biết mức nén thấp nhất. Mức nén mặc định là -6. |