Chủ Nhật, 06/09/2026, 15:36 (GMT+0)

HDFS là gì? Cách hệ thống tệp phân tán của Hadoop hoạt động

Quay lại Trang chủ Blog
Trên trang này

HDFS là một trong những thành phần quan trọng của Apache Hadoop, được sử dụng để lưu trữ lượng dữ liệu lớn trên nhiều máy tính thay vì phụ thuộc vào một máy chủ duy nhất. Nhờ khả năng phân tán dữ liệu, sao chép và chịu lỗi, HDFS phù hợp với các hệ thống Big Data cần xử lý tập dữ liệu có quy mô lớn.

HDFS là gì?

HDFS (Hadoop Distributed File System) là hệ thống tệp phân tán của Apache Hadoop. HDFS cho phép một file lớn được chia thành nhiều khối dữ liệu, sau đó phân phối các khối này đến nhiều máy chủ khác nhau trong một cluster.

Thay vì lưu toàn bộ dữ liệu trên một ổ đĩa hoặc máy chủ duy nhất, HDFS sử dụng nhiều node để tạo thành một hệ thống lưu trữ chung.

HDFS được thiết kế với một số mục tiêu chính:

  • Lưu trữ tập dữ liệu có kích thước lớn.
  • Đạt thông lượng đọc dữ liệu cao.
  • Mở rộng bằng cách bổ sung thêm máy chủ.
  • Duy trì khả năng truy cập dữ liệu khi một số node gặp sự cố.
  • Hoạt động trên các máy chủ phổ thông thay vì yêu cầu phần cứng lưu trữ chuyên dụng.

HDFS đặc biệt phù hợp với các workload đọc hoặc xử lý tuần tự lượng dữ liệu lớn. Ngược lại, đây không phải hệ thống được thiết kế cho các tác vụ yêu cầu truy cập ngẫu nhiên với độ trễ cực thấp.

HDFS-la-gi.jpg

Tại sao HDFS được sử dụng trong Big Data?

Một máy chủ luôn có giới hạn về dung lượng ổ đĩa, khả năng xử lý và hiệu suất I/O. Khi lượng dữ liệu tăng từ vài TB lên hàng trăm TB hoặc PB, việc tiếp tục mở rộng một máy chủ trở nên khó khăn và tốn kém.

HDFS giải quyết vấn đề bằng cách scale-out.

Thay vì liên tục nâng cấp một máy chủ mạnh hơn, hệ thống có thể bổ sung thêm các máy vào cluster. Dữ liệu sau đó được phân phối giữa các node.

Ví dụ, thay vì lưu một tập dữ liệu 100 TB trên một máy chủ, HDFS có thể phân phối dữ liệu đó trên hàng chục máy khác nhau.

Cách tiếp cận này vừa tăng khả năng lưu trữ vừa giảm rủi ro phụ thuộc vào một thiết bị duy nhất.

Kiến trúc HDFS và cách HDFS hoạt động

HDFS sử dụng kiến trúc director/worker với hai thành phần chính là NameNode và DataNode.

Có thể hiểu đơn giản:

  • NameNode quản lý thông tin về file và các block dữ liệu.
  • DataNode là nơi trực tiếp lưu trữ các block dữ liệu.

Khi một file được đưa vào HDFS, file sẽ được chia thành nhiều block rồi phân phối tới các DataNode trong cluster.

NameNode

NameNode đóng vai trò quản lý trung tâm của HDFS.

NameNode không trực tiếp lưu dữ liệu của người dùng mà chủ yếu quản lý metadata, bao gồm:

  • File và thư mục trong HDFS;
  • Quyền truy cập file;
  • Vị trí của từng block;
  • Block nào đang được lưu trên DataNode nào.

NameNode cũng quản lý file system namespace, tức cấu trúc file và thư mục của HDFS. Nhờ đó, hệ thống có thể thực hiện các thao tác như mở, đóng hoặc đổi tên file và thư mục.

Dữ liệu thực tế không cần đi qua NameNode mà được lưu trực tiếp trên các DataNode.

DataNode

DataNode là các node chịu trách nhiệm lưu trữ dữ liệu trong HDFS.

Mỗi DataNode lưu các block trên hệ thống file cục bộ của máy và xử lý các tác vụ như:

  • Đọc và ghi dữ liệu;
  • Tạo block;
  • Xóa block;
  • Sao chép block.

Thông thường, một cluster có nhiều DataNode. Các DataNode có thể chạy trên phần cứng phổ thông (commodity hardware), giúp hệ thống dễ dàng mở rộng khi lượng dữ liệu tăng.

HDFS hoạt động như thế nào?

Quá trình hoạt động của HDFS có thể hình dung qua 4 bước chính.

Bước 1: Chia file thành các block

Khi một file được đưa vào HDFS, hệ thống chia file thành nhiều block.

Theo bản gốc, kích thước block mặc định trong Hadoop 2.x là 128 MB. Việc sử dụng block lớn giúp giảm seek time và giảm lượng metadata mà hệ thống phải quản lý.

Bước 2: Phân phối block tới các DataNode

Các block sau đó được phân phối tới nhiều DataNode trong cluster.

Ví dụ, một file được chia thành 3 block:

  • Block 1 → DataNode A;
  • Block 2 → DataNode B;
  • Block 3 → DataNode C.

NameNode ghi lại vị trí của các block để biết dữ liệu của từng file đang nằm ở đâu.

Bước 3: Tạo bản sao dữ liệu

HDFS có thể tạo thêm các bản sao (replica) của block và lưu chúng trên những DataNode khác.

Ví dụ, Block 1 nằm trên DataNode A có thể có thêm bản sao trên DataNode B và DataNode C.

Số lượng bản sao được xác định bởi replication factor. Giá trị này có thể được thiết lập khi file được tạo và thay đổi sau đó.

Nhờ cơ chế replication, nếu một DataNode gặp sự cố, HDFS vẫn có thể sử dụng bản sao của block nằm trên DataNode khác.

Bước 4: NameNode theo dõi DataNode

Các DataNode thường xuyên gửi thông tin về trạng thái của mình cho NameNode thông qua:

  • Heartbeat: Cho NameNode biết DataNode vẫn đang hoạt động.
  • Block report: Cung cấp thông tin về các block mà DataNode đang lưu trữ.

Nếu một DataNode ngừng gửi tín hiệu, HDFS có thể tiếp tục hoạt động với các DataNode còn lại.

hdfs-2.jpg

Data Replication và Rack Awareness

Để tăng độ tin cậy, HDFS có thể lưu các replica của block tại nhiều vị trí khác nhau trong cluster.

NameNode sử dụng Hadoop Rack Awareness để xác định DataNode thuộc rack nào. Thông tin này giúp HDFS phân phối dữ liệu giữa các rack, hạn chế nguy cơ mất dữ liệu nếu toàn bộ một rack gặp sự cố.

Cách tổ chức này cũng cho phép hệ thống tận dụng băng thông từ nhiều rack khi đọc dữ liệu.

Tóm lại, cách HDFS hoạt động có thể hiểu theo một luồng đơn giản:

File → chia thành block → phân phối tới DataNode → tạo replica → NameNode quản lý vị trí và theo dõi các DataNode.

Nhờ kiến trúc này, HDFS có thể lưu trữ dữ liệu lớn trên nhiều máy, hỗ trợ xử lý phân tán và duy trì khả năng hoạt động khi một số node gặp sự cố.

Ưu điểm của HDFS

HDFS mang lại nhiều lợi ích khi triển khai hệ thống xử lý dữ liệu lớn.

  • Khả năng mở rộng tốt: Do sử dụng kiến trúc phân tán, dung lượng HDFS có thể được mở rộng bằng cách bổ sung thêm DataNode.
  • Khả năng chịu lỗi: Các block có thể được sao chép sang nhiều node. Khi một máy gặp lỗi, hệ thống có thể tiếp tục sử dụng bản sao còn lại.
  • Thông lượng cao: HDFS được tối ưu cho việc đọc và xử lý tuần tự các tập dữ liệu lớn.
  • Phù hợp với Big Data: HDFS có thể kết hợp với nhiều công nghệ trong hệ sinh thái Hadoop để xây dựng các pipeline phân tích dữ liệu quy mô lớn.
  • Có thể sử dụng phần cứng phổ thông: Kiến trúc HDFS được xây dựng với giả định rằng lỗi phần cứng có thể xảy ra, vì vậy hệ thống không hoàn toàn phụ thuộc vào các máy chủ lưu trữ đắt tiền.

Hạn chế của HDFS

HDFS cũng không phù hợp với mọi loại ứng dụng. Một số hạn chế đáng chú ý gồm:

  • Không tối ưu cho file nhỏ: Số lượng lớn file nhỏ làm tăng metadata mà NameNode phải quản lý, gây áp lực lên bộ nhớ và hiệu suất hệ thống.
  • Không phù hợp với truy cập độ trễ thấp: HDFS được thiết kế để ưu tiên throughput cao khi xử lý dữ liệu lớn, không tối ưu cho các tác vụ yêu cầu phản hồi gần như tức thời.
  • Khó cập nhật dữ liệu ngẫu nhiên: HDFS phù hợp hơn với mô hình ghi và đọc dữ liệu tuần tự, không lý tưởng khi cần thường xuyên sửa đổi dữ liệu tại nhiều vị trí.
  • Quản trị cluster phức tạp: Việc triển khai và vận hành HDFS đòi hỏi quản lý nhiều node, theo dõi tài nguyên, xử lý lỗi và duy trì các thành phần trong hệ sinh thái Hadoop.

Vì vậy, HDFS phù hợp hơn với lưu trữ và xử lý dữ liệu lớn theo batch thay vì các hệ thống giao dịch nhỏ hoặc ứng dụng yêu cầu độ trễ thấp.

HDFS.jpg

HDFS được sử dụng trong trường hợp nào?

Một số trường hợp sử dụng HDFS phổ biến gồm:

  • Lưu trữ dữ liệu phục vụ Big Data Analytics.
  • Phân tích log từ hệ thống và ứng dụng.
  • Lưu dữ liệu đầu vào cho các pipeline Hadoop hoặc Spark.
  • Xử lý dữ liệu theo batch.
  • Xây dựng hệ thống dữ liệu phân tán on-premises.
  • Lưu dataset lớn phục vụ phân tích hoặc Machine Learning.

Ví dụ, một doanh nghiệp có thể thu thập hàng TB log mỗi ngày từ website, ứng dụng và hệ thống máy chủ. HDFS có thể được sử dụng để phân phối các log này trên nhiều node trước khi dữ liệu được xử lý bởi các công cụ phân tích.

Câu hỏi thường gặp về HDFS

HDFS viết tắt của gì?

HDFS là viết tắt của Hadoop Distributed File System, tức hệ thống tệp phân tán của Hadoop.

HDFS có phải database không?

Không. HDFS là hệ thống lưu trữ file phân tán, không phải hệ quản trị cơ sở dữ liệu.

NameNode có lưu dữ liệu của file không?

NameNode chủ yếu quản lý metadata và thông tin vị trí block. Nội dung dữ liệu thực tế được lưu trên các DataNode.

HDFS có phải Cloud Storage không?

Không. HDFS là distributed file system thường được triển khai như một phần của Hadoop cluster. Cloud Storage hiện đại thường sử dụng kiến trúc Object Storage với cách quản lý và truy cập dữ liệu khác.

Kết luận

HDFS là hệ thống tệp phân tán của Apache Hadoop, cho phép chia dữ liệu thành các block và lưu chúng trên nhiều DataNode trong một cluster. Nhờ replication, khả năng scale-out và chịu lỗi, HDFS trở thành một nền tảng lưu trữ quan trọng cho nhiều hệ thống Big Data. Tuy nhiên, với các kiến trúc cloud hiện đại, doanh nghiệp cũng nên cân nhắc Object Storage khi cần lưu trữ dữ liệu quy mô lớn, linh hoạt và dễ mở rộng.

#Storage
#Storage
Sovereign Cloud không chỉ là đặt máy chủ trong nước. Với bối cảnh pháp lý dữ liệu mới tại Việt Nam, đây đang trở thành bài toán hạ tầng quan trọng cho doanh nghiệp Việt và doanh nghiệp nước ngoài hoạt động tại Việt Nam
Sovereign Cloud - Đám mây chủ quyền là gì? Và vì sao doanh nghiệp hoạt động tại Việt Nam nên quan tâm từ bây giờ?
Tiếp tục đọc