Mục lục:
- Để hiểu cách thức hoạt động của NameNode, bạn nên xem xét cách thức hoạt động của nó. Bởi vì mục đích của NameNode là để thông báo cho các ứng dụng về khối lượng khối dữ liệu mà họ cần để xử lý và để theo dõi vị trí chính xác nơi chúng được lưu trữ, nó cần tất cả các vị trí chặn và các ánh xạ khối-đến-tệp có sẵn trong RAM.
- Để tạo các tệp tin mới trong HDFS, quá trình sau sẽ phải diễn ra:
- Để đọc các tập tin từ HDFS, tiến trình sau sẽ phải diễn ra:
- Theo thời gian, với sự kết hợp của các mẫu dữ liệu không đồng đều (ở đó một số nút nô lệ có thể có nhiều dữ liệu hơn) hoặc các lỗi của nút, dữ liệu có thể sẽ phân bố không đồng đều trên các kệ và các nút nô lệ trong cụm Hadoop của bạn.
- Vì bản chất nhiệm vụ quan trọng của nó, máy chủ chủ chạy daemon NameNode yêu cầu các yêu cầu phần cứng khác biệt rõ rệt hơn so với máy chủ cho nút nô lệ. Hầu hết các thành phần cấp doanh nghiệp cần được sử dụng để giảm thiểu khả năng bị mất điện. Ngoài ra, bạn cần đủ bộ nhớ RAM để tải vào bộ nhớ tất cả dữ liệu siêu dữ liệu và vị trí về tất cả các khối dữ liệu được lưu trữ trong HDFS.
Video: Bigdata 2025
NameNode đóng vai trò là sổ địa chỉ cho Hệ thống tệp phân phối Hadoop (HDFS) bởi vì nó không biết chỉ có khối tạo thành các tập tin cá nhân mà còn là nơi mà mỗi khối và các bản sao của chúng được lưu trữ. Khi người dùng lưu trữ một tệp tin trong HDFS, tệp tin được chia thành các khối dữ liệu và ba bản sao của các khối dữ liệu này được lưu trữ trong các nút nô lệ trong toàn bộ cụm Hadoop.
Đó là rất nhiều khối dữ liệu để theo dõi. Như bạn có thể mong đợi, biết nơi mà cơ thể được chôn cất làm cho NameNode là một thành phần quan trọng trong một cụm Hadoop. Nếu NameNode không có sẵn, các ứng dụng không thể truy cập bất kỳ dữ liệu nào được lưu trữ trong HDFS.
Nếu bạn nhìn vào hình dưới đây, bạn có thể thấy daemon NameNode đang chạy trên một máy chủ nút chủ. Tất cả các thông tin lập bản đồ xử lý các khối dữ liệu và các tệp tương ứng của chúng được lưu trữ trong một tệp có tên.
HDFS là một hệ thống tệp nhật ký, có nghĩa là bất kỳ thay đổi dữ liệu nào được ghi lại trong một tạp chí chỉnh sửa theo dõi các sự kiện kể từ điểm kiểm soát 999 cuối cùng - lần cuối cùng khi nhật ký chỉnh sửa được hợp nhất với. Trong HDFS, tạp chí chỉnh sửa được duy trì trong tệp có tên tên đó được lưu trữ trên NameNode.
Để hiểu cách thức hoạt động của NameNode, bạn nên xem xét cách thức hoạt động của nó. Bởi vì mục đích của NameNode là để thông báo cho các ứng dụng về khối lượng khối dữ liệu mà họ cần để xử lý và để theo dõi vị trí chính xác nơi chúng được lưu trữ, nó cần tất cả các vị trí chặn và các ánh xạ khối-đến-tệp có sẵn trong RAM.
Đây là các bước mà NameNode mất. Để tải tất cả thông tin mà NameNode cần sau khi khởi động, sẽ xảy ra:
-
NameNode tải tệp và đóng lại các thay đổi đã ghi lại để cập nhật siêu dữ liệu khối đã có trong bộ nhớ.
-
Daemon của DataNode gửi báo cáo khối NameNode.
-
Đối với mỗi nút slave, có một báo cáo khối liệt kê tất cả các khối dữ liệu được lưu giữ ở đó và mô tả sức khoẻ của mỗi.
Sau khi quá trình khởi động hoàn tất, NameNode có một bức tranh hoàn chỉnh về tất cả dữ liệu được lưu trữ trong HDFS và nó đã sẵn sàng để nhận các yêu cầu ứng dụng từ các máy khách Hadoop.
Khi các tệp dữ liệu được thêm vào và gỡ bỏ dựa trên các yêu cầu của khách hàng, các thay đổi được ghi vào khối lượng đĩa của các nút nô lệ, nhật ký cập nhật được thực hiện cho tệp, và những thay đổi được phản ánh trong các vị trí khối và siêu dữ liệu được lưu trữ trong bộ nhớ của NameNode.
Trong suốt cuộc đời của cụm, các daemon của DataNode gửi các xung nhịp tim NameNode (một tín hiệu nhanh) cứ ba giây một lần, cho thấy chúng đang hoạt động.(Giá trị mặc định này có thể được cấu hình). Mỗi sáu giờ (một lần nữa, một mặc định có thể định cấu hình), các DataNodes gửi NameNode một báo cáo khối phác thảo các khối tập tin nào trên các nút của chúng. Bằng cách này, NameNode luôn có chế độ xem hiện tại về các tài nguyên có sẵn trong cluster.
Viết dữ liệu
Để tạo các tệp tin mới trong HDFS, quá trình sau sẽ phải diễn ra:
Máy khách gửi yêu cầu đến NameNode để tạo một tệp tin mới.
-
NameNode xác định số lượng khối cần thiết, và client được cấp
lease để tạo các khối tin mới trong cluster. Là một phần của hợp đồng cho thuê này, khách hàng có một thời gian để hoàn thành nhiệm vụ tạo. (Hạn chế thời gian này đảm bảo không gian lưu trữ không được thực hiện bởi các ứng dụng khách không thành công) Khách hàng sau đó sẽ viết các bản sao đầu tiên của khối tệp tin tới các nút nô lệ sử dụng hợp đồng được NamesNode chỉ định.
-
NameNode xử lý các yêu cầu ghi và xác định nơi các khối tập tin và các bản sao của chúng cần phải được viết, cân bằng tính sẵn có và hiệu năng. Bản sao đầu tiên của một khối tập tin được viết trong một ngăn, và bản sao thứ hai và thứ ba được viết trên một giá khác với bản sao đầu tiên, nhưng ở các nút nô lệ khác nhau trong cùng một giá. Sự sắp xếp này giảm thiểu lưu lượng mạng trong khi đảm bảo rằng không có khối dữ liệu nào có cùng độ trễ.
Khi mỗi khối được ghi vào HDFS, một quy trình đặc biệt ghi các bản sao còn lại vào các nút nô lệ khác được xác định bởi NameNode.
-
Sau khi các daemon của DataNode thừa nhận các bản sao khối tập tin đã được tạo, ứng dụng khách đóng tệp và thông báo cho NameNode, sau đó đóng hợp đồng thuê mở.
-
Đọc dữ liệu
Để đọc các tập tin từ HDFS, tiến trình sau sẽ phải diễn ra:
Máy khách gửi yêu cầu đến NameNode cho một tệp tin.
-
NameNode xác định khối nào có liên quan và chọn, dựa trên khoảng cách chung giữa các khối với nhau và cho khách hàng, con đường truy cập hiệu quả nhất.
Máy khách sau đó truy cập vào các khối sử dụng các địa chỉ được cung cấp bởi NameNode.
-
Cân bằng dữ liệu trong cụm Hadoop
Theo thời gian, với sự kết hợp của các mẫu dữ liệu không đồng đều (ở đó một số nút nô lệ có thể có nhiều dữ liệu hơn) hoặc các lỗi của nút, dữ liệu có thể sẽ phân bố không đồng đều trên các kệ và các nút nô lệ trong cụm Hadoop của bạn.
Sự phân bố không đồng đều này có thể gây ảnh hưởng bất lợi đến hiệu suất bởi vì nhu cầu về các nút nô lệ cá nhân sẽ không cân bằng; các nút có ít dữ liệu sẽ không được sử dụng đầy đủ; và các nút với nhiều khối sẽ bị lạm dụng. (Lưu ý: Việc sử dụng và sử dụng quá mức dựa trên hoạt động của đĩa, chứ không phải trên CPU hoặc RAM) HDFS bao gồm một tiện ích cân bằng để phân phối lại các khối từ các nút nô lệ đã sử dụng quá mức sang các nút còn lại khối trên nô lệ khác nhau nút và kệ. Quản trị viên Hadoop nên thường xuyên kiểm tra sức khoẻ của HDFS và nếu dữ liệu phân phối không đồng đều, họ nên gọi tiện ích cân bằng.
Thiết kế máy chủ chủ NameNode