Tìm hiểu về Hadoop HDFS

3905

Từ bài viết này trở đi, bạn phải đảm bảo rằng đã cài đặt thành công được cụm Hadoop (Hadoop cluster) trên máy, nếu không sẽ rất khó theo dõi các nội dung tiếp theo. Nếu chưa cài được, hãy xem lại bài viết trước của mình nhé.

I. DFS là gì?

Trước khi tìm hiểu về HDFS, hãy để mình giải thích cho bạn hiểu DFS là gì trước nhé.

DFS là từ viết tắt của Distributed File System (Hệ thống file phân tán), có chức năng quản lý dữ liệu (như file và folder) dựa trên một hệ thống phân tán. Nói cách khác, DFS là hệ thống cho phép bạn lưu trữ, xử lý file trên một cụm các máy thay vì một máy.

II. HDFS là gì?

HDFSHadoop Distributed File System là framework cho phép tổ chức file trên hệ thống phân tán của Hadoop. HDFS mặc định đi theo Hadoop framework, vậy nếu bạn đã cài đặt thành công Hadoop thì cũng có nghĩa là bạn đã cài đặt được HDFS.

HDFS đóng một vai trò quan trọng trong framework Hadoop cũng như trong hệ sinh thái của Hadoop. Cụ thể chúng ta sẽ đi tìm hiểu ở phần ưu điểm của HDFS và các tính năng nổi bật của HDFS dưới đây.

III. Ưu điểm của HDFS

3.1 Cho phép lưu trữ phân tán

HDFS cung cấp cơ chế lưu trữ phân tán. Giả sử bạn có một cụm Hadoop (Hadoop cluster) với 10 máy tính, giờ bạn đẩy vào HDFS một file dữ liệu, thì file này sẽ được chia nhỏ thành nhiều phần và lưu trữ tại nhiều máy trong cụm.

Ngoài ra, HDFS còn nhân bản file của bạn thành nhiều phiên bản khác nhau (số lượng phiên bản có thể cấu hình được), đề phòng trường hợp có một máy trong cụm Hadoop gặp sự cố thì dữ liệu vẫn được toàn vẹn.

Với cơ chế lưu trữ phân tán, dung lượng lưu trữ cũng dễ dàng được mở rộng. Bởi dung lượng lưu trữ của hệ bằng tổng dung lượng lưu trữ của các máy trong hệ. Giả sử mỗi máy trong hệ có dung lượng lưu trữ 1TB, thì với 10 máy có thể lưu trữ 10TB, 100 máy có thể lưu trữ 100TB. Khi bạn hết dung lượng lưu trữ, công việc đơn giản chỉ là bổ sung thêm máy vào hệ.

Yahoo từng sở hữu cụm Hadoop lớn nhất với 4,500 máy, lưu trữ được 455 petabytes dữ liệu trong HDFS.

3.2 Cho phép tính toán phân tán và song song

Giả sử mình có một công việc “khá cồng kềnh” mà một máy tính sẽ phải mất tới 60 phút để xử lý. Nhưng giờ thay vì để một máy tính xử lý, thì mình sẽ cho 10 máy tính xử lý song song, vậy bạn thử đoán xem thời gian sẽ giảm xuống còn bao nhiêu?

Đúng rồi đó, chỉ còn có 6 phút.

Đây cũng chính là cách mà HDFS thực hiện tính toán dữ liệu của bạn. Khi bạn gửi tới HDFS một nhiệm vụ xử lý dữ liệu nào đó, nó chia nhỏ công việc và phân cho các máy trong cụm xử lý song song. Sau khi tất cả các máy trong cụm xử lý xong, nó sẽ tổng hợp lại các kết quả thành một kết quả cuối cùng.

Tip: Thực tế thì HDFS không trực tiếp nhận nhiệm vụ, mà mình chỉ nói vậy cho các bạn dễ hình dung, chi tiết mình sẽ trình bày ở các bài tiếp theo.

Làm sao để gửi một nhiệm vụ (job) vào trong HDFS, mình sẽ trình bày tới các bạn ở những bài viết tiếp theo.

3.3 Có khả năng mở rộng theo chiều ngang

Mở rộng theo chiều dọc (bên trái) – Mở rộng theo chiều ngang (bên phải)

Cuối cùng nhưng không kém phần quan trọng, HDFS cho phép bạn mở rộng hệ thống theo chiều ngang.

Uhm… Để mình mình giải thích cho bạn hiểu thế nào là mở rộng theo chiều ngang và chiều dọc nhé trước đã nhé:

Mở rộng theo chiều dọc

Hay còn được gọi là scale up hay vertical scaling. Nghĩa là bạn sẽ nâng cấp hệ thống bằng cách tăng cấu hình máy tính lên, ví dụ như nâng CPU từ 8 cores lên 16 cores, nâng RAM từ 16GB lên 32GB, ổ cứng từ 1TB lên 4TB chẳng hạn.

Việc mở rộng theo chiều dọc thì khá đơn giản, chỉ là mua thêm phần cứng về thay thế là được. Tuy nhiên có một vài nhược điểm đáng ngại sau:

  • Luôn có một giới hạn giữa phần cứng và hiệu năng xử lý, nghĩa là không phải cứ cấu hình “khủng” là xử lý nhanh, mà sẽ có một giới hạn nào đó mà cho dù bạn có nâng cấp cấu hình khủng tới mấy thì hiệu năng cũng không thay đổi. Vì vậy bạn không thể thực hiện mở rộng theo chiều dọc được mãi.
  • Khi nâng cấp phần cứng, hệ thống buộc phải dừng lại, gây downtime.

Mở rộng theo chiều ngang

Hay còn được gọi là scale out hay horizontal scaling. Nghĩa là thay vì bạn nâng cấp phần cứng, thì bạn mua một cái máy tính mới về và san sẻ công việc với máy hiện tại. Công việc thay vì được xử lý trên một máy, thì sẽ được chia sẻ cho nhiều máy thực hiện. Việc mở rộng theo chiều ngang thường gặp khó khăn trong việc cấu hình các máy sao để chúng có thể phối hợp với nhau và chi phí cao hơn so với mở rộng theo chiều dọc, nhưng đây không phải là vấn đề đáng ngại. Mà mặt khác nó có nhiều ưu điểm đáng chú ý:

  • Không gặp giới hạn về phần cứng như scale up, nhưng vẫn khuyến khích bạn nên mở rộng tỷ lệ với lượng dữ liệu cần xử lý.
  • Khi bổ sung thêm máy, không bị downtime.

Không phải bất kỳ phần mềm nào cũng hỗ trợ scale out, vì vậy việc HDFS hỗ trợ scale out là một ưu điểm đáng quan tâm.

IV. Đặc trưng của HDFS

Một số đặc trưng của HDFS như sau:

Chi phí: Hadoop có thể cài đặt trên các máy tính có cấu hình phần cứng thông dụng tương tự như cấu hình của một chiếc laptop bình thường. Khi có nhu cầu mở rộng (bố sung máy vào hệ), bạn không cần phải chi một số tiền quá lớn, hay nói cách khác thêm một máy vào hệ là rất rẻ.

Có thể lưu trữ bigdata vô tư: Đương nhiên, vai trò của HDFS vốn là để lưu trữ bigdata, vì vậy bạn cứ yên tâm HDFS có thể lưu trữ được một lượng dữ liệu khổng lồ (Terabytes & petabytes dữ liệu) và đa dạng (có cấu trúc, bán cấu trúc, không có cấu trúc).

Dữ liệu có độ tin cậy cao và có khả năng khắc phục sau lỗi tốt: Dữ liệu lưu trữ trong HDFS sẽ được nhân bản thành nhiều phiên bản (mặc định là 3 và có thể cấu hình được). Nghĩa là khi bạn lưu một file nặng 1GB thì HDFS sẽ dành ra 3GB để lưu trữ file đó. Vì vậy mà khi có một máy bị lỗi, thì dữ liệu vẫn còn bản backup tại máy khác và đảm bảo được tính toàn vẹn (độ tin cậy cao). Khi máy bị lỗi được khắc phục, dữ liệu sẽ dễ dàng được khôi phục lại từ các máy khác.

Tính chính xác cao: Tính chính xác thể hiện việc dữ liệu bạn lấy ra có chính xác như những gì bạn đã lưu không. Dữ liệu lưu trữ trong HDFS sẽ thường xuyên được kiểm tra, nếu có phát hiện sai lệch thì sẽ tự động được khôi phục bằng các bản sao.

Có Throughput cao: Throughput là số lượng công việc hoàn thiện trong một đơn vị thời gian. Nó thể hiện tốc độ xử lý dữ liệu, truy cập dữ liệu. Bạn còn nhớ cái ví dụ về 10 máy tính xử lý song song chỉ mất có 6 phút mà mình đề cập ở trên không, đó chính là một ví dụ thể hiện cho tính Throughput cao đó.

Xử lý dữ liệu “tại chỗ”: Cách xử lý dữ liệu truyền thống là dữ liệu cần xử lý sẽ được gửi tới một ứng nào đó trong máy tính để xử lý. Tuy nhiên với đặc thù của big data là khối lượng dữ liệu rất lớn nên việc di chuyển dữ liệu tới ứng dụng để xử lý sẽ tốn nhiều thời gian và tài nguyên máy. Vì vậy thay vì mang dữ liệu tới “chỗ xử lý”, thì HDFS sẽ mang “chỗ xử lý” tới gặp dữ liệu.

V. Tổng kết

Qua bài này bạn đã hiểu thêm về HDFS rồi chứ, nhưng thế vẫn chưa là gì đâu, nó vẫn chỉ là “Phần nổi của tảng băng” thôi. Ở các bài sau mình sẽ trình bày kỹ hơn về kiến trúc của HDFS.

Hẹn gặp lại.