HDFS là gì? Tìm hiểu về cấu trúc và đặc điểm của HDFS
Ở bài viết trước, các kiến thức về BigData, công nghệ Hadoop, MapReduce,... Tiếp nối phần kiến thức đã cung cấp ở phần trước, tiếp theo đây ITNavi sẽ giới thiệu thêm kiến thức về một hệ thống quan trọng khác trong Hadoop đó là HDFS. Vậy, định nghĩa HDFS là gì? HDSF sở hữu đặc điểm gì và cấu trúc ra sao? Tất cả đều sẽ được ITNavi bật mí trong bài viết sau đây. Hãy theo dõi nhé!
Định nghĩa HDFS là gì?
Khi dữ liệu người dùng ngày càng lớn và kích thước của các file dữ liệu ngày càng vượt quá giới hạn lưu trữ. Lúc này, nhu cầu phân chia dữ liệu ra các ổ cứng trên nhiều máy tính sẽ rất cần thiết. Và HDFS đã ra đời để hỗ trợ giải quyết triệt để được vấn đề này. Vậy, định nghĩa HDFS là gì?
HDFS (tên viết tắt của từ Hadoop Distributed File System” là một hệ thống lưu dữ dữ dữ liệu được sử dụng bởi Hadoop. Chức năng của hệ thống này là cung cấp khả năng truy cập với hiệu suất cao đến với các dữ liệu nằm trên các cụm của Hadoop.
Khái niệm HDFS là gì?
Thông thường, HDFS sẽ sử dụng cũng như triển khai trên các phần cứng với chi phí vừa phải, bởi các máy chủ sẽ rất dễ phát sinh các lỗi phần cứng. Đây là lý do mà HDFS được lập trình và được xây dựng nhằm mục đích chịu lỗi cao để giảm rủi ro cũng như giảm thiểu được quá trình phát sinh lỗi.
HDFS tạo ra các mảnh nhỏ hơn của dữ liệu lớn rồi phân tán chúng lên các nodes khác nhau. Từ đó, sao chép mỗi miếng dữ liệu nhỏ hơn trên nhiều nodes khác. Do vậy, khi node bất kỳ có dữ liệu bị lỗi thì hệ thống sẽ tự động sử dụng dữ liệu từ 1 node khác rồi tiếp tục xử lý. Đây là một trong những tính năng đặc biệt quan trọng của HDFS.
Top những việc làm hot nhất hiện nay
Việc làm Python lương cao chế độ hấp dẫn
Ưu điểm nổi bật của HDFS là gì?
Hiện nay, HDFS là một trong những hệ thống được các lập trình viên sử dụng rất phổ biến. Lý do là vì?
- HDFS cho phép dữ liệu có thể phân tán: Điều này có thể hiểu như sau: Nếu như có một cụm Hadoop mà trong đó bao gồm 20 máy tính thì bạn chỉ cần đưa một file dữ liệu vào HDFS. Khi đó, thì file sẽ tự động được chia nhỏ thành nhiều phần rồi được lưu trữ ở 20 máy tính đó.
- HDFS cho phép tính toán và phân tán song song: Thay vì chỉ sử dụng một máy để xử lý công việc, thì với HDFS thì bạn có thể để các máy hoạt động song song để xử lý chung một công việc để tiết kiệm thời gian.
- HDFS cho phép nhân bản các file: Đặc điểm này sẽ giúp bạn đề phòng được các trường hợp một máy tính trong cụm Hadoop phát sinh sự cố thì dữ liệu sẽ được backup lại mà không bị mất.
- HDFS có thể mở rộng theo chiều dọc: Lúc này, bạn sẽ có nhiệm vụ nâng cấp cho các hệ thống bằng cách tăng cấu hình cho máy tính lên. Tính năng này còn được gọi là Scale Up hay Vertical scaling.
HDFS có những ưu điểm gì?
- HDFS sở hữu khả năng mở rộng hệ thống theo chiều ngang: Đặc điểm này có nghĩa rằng, bạn không cần phải nâng cấp cho phần cứng mà chỉ cần mua thêm một chiếc máy tính mới để chia sẻ với chiếc máy hiện tại là được.
HDFS có khả năng giải quyết những vấn đề nào?
Có 3 vấn đề mà khi sử dụng HDFS bạn đều có thể giải quyết một cách triệt để là:
Thứ 1: Lỗi phần cứng thường xuyên xảy ra
HDFS được tích hợp với hệ thống phát hiện ra lỗi, tự động khôi phục lỗi và chống chịu lỗi. Các tính năng này sẽ giúp bạn giảm rủi ro xuống mức thấp nhất khi một hệ thống phát sinh lỗi phần cứng quá bất ngờ.
Thứ 2: Phân chia tập dữ liệu thành tập dữ liệu có dung lượng ít hơn
Vấn đề tiếp theo mà HDFS có thể giúp các lập trình viên giải quyết được triệt để nhất đó chính là phân chia dữ liệu. Cụ thể:; HDFS sẽ hỗ trợ chia các tập dữ liệu hàng trăm Terabyte thành những tập dữ liệu có dung lượng ít hơn.
Quá trình phân chia đều thực hiện trên hệ thống máy tính. Điều này sẽ giúp cho các Developer có thể quản lý dễ dàng hơn, giúp cho hệ thống giảm thiểu được thời gian truy xuất dữ liệu và đơn giản hóa quá trình quản lý cho tập tin.
Thứ 3: Được thiết kế đặc biệt cho các ứng dụng xử lý dạng khối
Các file khi được tạo ra trên hệ thống HDFS đều sẽ được ghi, đóng lại và không thể chỉnh sửa được nữa. Điều này sẽ giúp bảo mật, đảm bảo tính nhất quán cho các tập tin của dữ liệu.
Bạn đọc tham khảo thêm: API là gì? Các khái niệm liên quan đến API không nên bỏ qua
Kiến trúc của HDFS là gì?
Tiếp theo, cùng tìm hiểu về kiến trúc của HDFS để hiểu rõ hơn về quá trình hoạt động của hệ thống này nhé!
Kiến trúc của HDFS là master / slave, một HDFS Cluster sẽ luôn bao gồm 1 NameNode. NameNode này là 1 master server và nó có nhiệm vụ quản lý cho hệ thống tập tin và điều chỉnh các truy cập đến những tập tin khác.
Từ đó, bổ sung cho NameNode để có nhiều DataNodes. Bạn nên chú ý rằng, sẽ luôn có 1 DataNode dành riêng cho các máy chủ dữ liệu. Trong một HDFS, 1 tập tin lớn sẽ được chia thành 1 hoặc nhiều khối, những khối này đều sẽ được lưu trữ trong 1 tập các DataNodes.
Kiến trúc của HDFS
NameNode có tác vụ chính là đóng, mở và đổi tên cho các tập tin, thư mục. Ngoài ra, nó còn điều chỉnh cho các truy cập đến hệ thống tập tin. Trong khi đó, DataNode có tác vụ là ghi, đọc vào hệ thống tập tin; nó còn có nhiệm vụ tạo, xóa, nhân rộng các dữ liệu dựa trên chỉ dẫn của NameNode. Lưu ý: NameNode và DataNode đều là phần mềm được thiết kế nhằm mục đích chạy trên máy chủ và chúng được viết bằng Java. Quá trình hoạt động của NameNode và DataNode như sau:- NameNode: Có trách nhiệm điều phối cho các thao tác truy cập của client với hệ thống HDFS. Bởi vì các DataNode là nơi lưu trữ thật sự các block của các file trên HDFS nên chúng là nơi đáp ứng các truy cập này. NameNode sẽ thực hiện nhiệm vụ của nó thông qua daemon tên namemode chạy trên port 8021.
- DataNode: DataNode server sẽ chạy một daemon datanode trên port 8022, theo định kỳ thì mỗi DataNode sẽ có nhiệm vụ báo cáo cho Namenode biết được danh sách tất cả các block mà nó đang lưu trữ. Để NameNode có thể dựa vào nó để cập nhật lại các metadata trong nó.
Mỗi một metadata ở trạng thái checkpoint đều sẽ được sử dụng cho mục đích nhân bản metadata với mục đích phục hồi lại NameNode nếu như NameNode xuất hiện lỗi.
Đọc file trên HDFS: Khi các máy con client gửi yêu cầu đọc đến NameNode, khi đó NameNode nhận được phải sẽ thực hiện các tác vụ để kiểm tra xem file có tồn tại không, file có bị lỗi hoặc bị nhiễm virus không?
Nếu như file không có vấn đề thì NameNode sẽ gửi các danh sách của các Block của file cùng với địa chỉ của các DataNode.
Sau đó, hệ thống sẽ mở kết nối với DataNode rồi thực hiện chức năng RPC để nhận được các dữ liệu cần đọc, rồi đóng kết nối với DataNode còn lại.
Khi đó, các client đọc các block của file liên tục và lặp lại cho đến block cuối của file. Tiếp theo, lập trình viên sẽ sử dụng một tập tin API của Hadoop để có thể tương tác trực tiếp được với HDFS. Những tập API sẽ có chức năng giấu đi các NameNode để giúp kết nối với các DataNode để nhận được dữ liệu.
HDFS là một hệ thống quan trọng trong Hadoop
Cách ghi file trên HDFS: Tương tự quá trình đọc file, tuy nhiên quá trình này thì các client sẽ gửi đến cho các NameNode một file entry (đây là file chưa có bất kỳ block nào bên trong). Những file client sẽ thực hiện chia file dữ liệu thành các block và mỗi block đều sẽ được đóng gói thành packet.
Tiếp theo, Client sẽ gửi Packet cho DataNode thứ nhất, sau khi được lưu xong thì DataNode đầu tiên lại gửi tiếp packet cho DataNode thứ hai để sao lưu. Quá trình này sẽ tiếp diễn cho đến các DataNode cuối cùng nhận được packet và sao lưu nó. Thì nó sẽ lại gửi thông báo cho client là đã lưu thành công. Từ đó, client sẽ thực hiện hành động để babos cáo cho NameNode biết rồi cập nhật lại toàn bộ danh sách các block mà file đã ghi lại.
Tổng kết
Trên đây là toàn bộ kiến thức trọng tâm liên quan đến HDFS mà ITNavi muốn gửi đến bạn đọc. Hy vọng rằng, với thông tin trên thì bạn đã hiểu rõ HDFS là gì cũng như biết được đặc điểm và cấu trúc của nó. Chúc bạn sớm thành công trên con đường chinh phục hệ thống này.
ITNavi - Nền tảng kết nối việc làm IT
Nguồn: HDFS là gì? Tìm hiểu về cấu trúc và đặc điểm của HDFS