HBase
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> HBase

Hướng dẫn HDFS - Giới thiệu đầy đủ về HDFS cho người mới bắt đầu

Muốn biết cách Hadoop lưu trữ lượng lớn dữ liệu theo cách đáng tin cậy và có khả năng chịu lỗi?

Trong hướng dẫn HDFS này, chúng ta sẽ thảo luận về một trong những thành phần cốt lõi của Hadoop, đó là Hệ thống tệp phân tán Hadoop (HDFS).

Đầu tiên, chúng ta sẽ thấy phần giới thiệu về Hệ thống tệp phân tán. Sau đó, chúng ta sẽ nghiên cứu Hệ thống tệp phân tán Hadoop. Bài viết giải thích lý do sử dụng HDFS, kiến ​​trúc HDFS và các khối trong HDFS.

Bài viết cũng giới thiệu một số tính năng của Hadoop HDFS. Ngoài ra, bạn sẽ biết về thông báo nhịp tim trong Hadoop HDFS.

Hướng dẫn HDFS này cung cấp hướng dẫn giới thiệu đầy đủ về Hadoop HDFS lưu trữ đáng tin cậy nhất.

Trước tiên, chúng ta hãy bắt đầu với phần giới thiệu về Hệ thống tệp phân tán.

Hệ thống tệp phân tán

Khi tập dữ liệu vượt quá khả năng lưu trữ của một máy, thì bắt buộc phải phân vùng tập dữ liệu trên một số máy riêng biệt. Hệ thống tệp quản lý dữ liệu trên mạng máy được gọi là hệ thống tệp phân tán .

Hệ thống tệp phân tán là hệ thống tệp cho phép chúng tôi lưu trữ dữ liệu trên nhiều máy hoặc nút trong một cụm và cho phép nhiều người dùng truy cập dữ liệu.

Vì DFS dựa trên mạng nên tất cả các phức tạp của lập trình mạng đều bắt đầu, làm cho hệ thống tệp phân tán phức tạp hơn hệ thống tệp thông thường. Một trong những thách thức lớn nhất trong DFS là chịu được lỗi của nút mà không bị mất dữ liệu.

Hadoop đi kèm với một hệ thống tệp phân tán được gọi là Hệ thống tệp phân tán Hadoop để lưu trữ lượng lớn dữ liệu đồng thời cung cấp khả năng chịu lỗi và tính sẵn sàng cao.

Bạn muốn biết HDFS? Bây giờ, hãy bắt đầu với hướng dẫn HDFS.

Hướng dẫn HDFS - Giới thiệu

Hadoop Distributed FileSystem (HDFS) là một hệ thống tệp phân tán dựa trên java được sử dụng trong Hadoop để lưu trữ một lượng lớn dữ liệu có cấu trúc hoặc phi cấu trúc, có kích thước từ GigaBytes đến PetaBytes, trên một nhóm phần cứng hàng hóa. Đây là kho lưu trữ đáng tin cậy nhất được biết đến cho đến nay trên hành tinh.

Trong HDFS, dữ liệu được lưu trữ ở nhiều vị trí, vì vậy nếu bất kỳ máy nào bị lỗi, thì dữ liệu có thể được tìm nạp từ máy khác có chứa bản sao dữ liệu. Do đó, nó có khả năng chịu lỗi cao và đảm bảo không mất dữ liệu ngay cả trong trường hợp lỗi phần cứng.

Nó là thành phần chính của Hadoop, cùng với MapReduce, YARN và các tiện ích phổ biến khác.

Nó tuân theo Viết-Một lần-Đọc-Nhiều triết lý đơn giản hóa đồng tiền dữ liệu và cho phép truy cập thông lượng cao.

Tại sao sử dụng HDFS?

Trong thế giới CNTT ngày nay, gần 75% dữ liệu của thế giới nằm trong Hadoop HDFS. Đó là do lý do sau:

  • HDFS lưu trữ dữ liệu trên phần cứng hàng hóa do đó không cần các máy cao cấp để lưu trữ dữ liệu lớn. Do đó, cung cấp dung lượng lưu trữ tiết kiệm để lưu trữ dữ liệu lớn.
  • HDFS tuân theo kiểu xử lý dữ liệu hiệu quả nhất là kiểu Ghi-Một lần-Đọc-Nhiều lần. Tập dữ liệu được tạo từ nhiều nguồn khác nhau được sao chép, và sau đó các phân tích khác nhau được thực hiện trên tập dữ liệu đó theo thời gian. Vì vậy, tốt nhất là xử lý hàng loạt.
  • HDFS có thể lưu trữ dữ liệu ở bất kỳ kích thước nào được tạo từ bất kỳ nguồn nào ở bất kỳ định dạng nào, có cấu trúc hoặc không có cấu trúc.
  • Mô hình ghi-một-đọc-nhiều của nó giúp giảm bớt các yêu cầu kiểm soát đồng thời. Dữ liệu có thể được truy cập nhiều lần mà không gặp bất kỳ vấn đề gì liên quan đến đồng tiền dữ liệu.
  • HDFS hoạt động dựa trên giả định cục bộ dữ liệu rằng việc di chuyển phép tính sang dữ liệu dễ dàng và nhanh hơn nhiều so với việc chuyển dữ liệu sang đơn vị tính toán. HDFS tạo điều kiện cho việc định vị logic xử lý gần dữ liệu hơn là di chuyển dữ liệu đến không gian ứng dụng. Do đó, điều này làm giảm tắc nghẽn mạng và thời gian quay vòng tổng thể.

Vì vậy, tiếp tục trong hướng dẫn HDFS này, chúng ta hãy chuyển sang Kiến trúc HDFS.

Kiến trúc HDFS

Hadoop DFS theo sau master-slave ngành kiến ​​​​trúc. HDFS bao gồm hai loại nút là nút chính và nút phụ. Nút chính quản lý không gian tên hệ thống tệp, nghĩa là, nó lưu trữ siêu dữ liệu về các khối tệp.

Các nút phụ lưu trữ dữ liệu người dùng và chịu trách nhiệm xử lý dữ liệu dựa trên lệnh từ nút chính.

HDFS Master

Master in HDFS là trung tâm của Hadoop HDFS. Chúng là những máy cao cấp lưu trữ siêu dữ liệu liên quan đến tất cả các tệp được lưu trữ trong HDFS. Nó quản lý và duy trì không gian tên hệ thống tệp và cung cấp hướng dẫn cho các nút phụ.

NameNode là nút chính trong Hadoop HDFS.

HDFS Slave

Slave Nodes chịu trách nhiệm lưu trữ dữ liệu kinh doanh thực tế. Chúng là các máy cấu hình bình thường (phần cứng hàng hóa) lưu trữ và xử lý các tập dữ liệu theo lệnh từ nút chính.

Mã dữ liệu là các nút nô lệ trong Hadoop HDFS.

Mã tên HDFS

NameNode là nút chính. Nó quản lý các hoạt động của không gian tên hệ thống tệp như mở / đóng, đổi tên tệp và thư mục. NameNode ánh xạ các khối dữ liệu tới DataNodes và ghi lại từng thay đổi được thực hiện đối với không gian tên hệ thống tệp.

Mã dữ liệu HDFS

DataNodes là các nút phụ xử lý các yêu cầu đọc / ghi từ các máy khách HDFS. DataNodes tạo, xóa và sao chép các khối dữ liệu theo hướng dẫn từ nút tên quản lý.

Bạn đang thắc mắc về cách dữ liệu được lưu trữ trong HDFS?

Các khối trong HDFS

HDFS chia các tệp thành các khối có kích thước khối được gọi là khối dữ liệu. Các khối này được lưu trữ trên nhiều DataNode trong cụm. Kích thước khối mặc định là 128 MB. Chúng tôi có thể định cấu hình kích thước khối mặc định, tùy thuộc vào cấu hình cụm.

Đối với cụm máy cao cấp, kích thước khối có thể được giữ lớn (như 256 Mb trở lên). Đối với cụm máy có cấu hình như RAM 8Gb, kích thước khối có thể được giữ nhỏ hơn (như 64 Mb).

Ngoài ra, HDFS tạo bản sao của các khối dựa trên yếu tố sao chép (một số xác định tổng số bản sao của một khối tệp). Theo mặc định, hệ số sao chép là 3. Điều đó có nghĩa là 3 bản sao của mỗi khối được tạo và lưu trữ trên nhiều nút.

Nếu bất kỳ Mã dữ liệu nào không thành công, thì khối sẽ được tìm nạp từ Mã dữ liệu khác có chứa bản sao của một khối. Điều này làm cho khả năng chịu lỗi HDFS.

Bạn đã nghĩ cách NameNode phát hiện ra lỗi DataNode chưa?

Lỗi mã dữ liệu

Tất cả các DataNode trong Hadoop HDFS liên tục gửi một tin nhắn nhịp tim nhỏ (tín hiệu) đến NameNode để cho biết “Tôi còn sống” sau mỗi 3 giây.

Nếu NameNode không nhận được thông báo nhịp tim từ bất kỳ DataNode cụ thể nào trong hơn 10 phút, thì nó coi DataNode đó là đã chết và bắt đầu tạo bản sao của các khối có sẵn trên DataNode đó.

NameNode hướng dẫn các DataNode chứa một bản sao của dữ liệu đó sao chép dữ liệu đó trên các DataNode khác để cân bằng việc sao chép. Bằng cách này, NameNode phát hiện ra lỗi DataNode.

Bạn muốn biết cách NameNode đặt các bản sao trên các DataNode khác nhau? Hãy cùng chúng tôi khám phá nhận thức về giá đỡ trong HDFS để có câu trả lời cho câu hỏi trên.

Nhận thức về Rack trong HDFS

Hadoop HDFS lưu trữ dữ liệu trên toàn bộ cụm phần cứng hàng hóa. Để cung cấp khả năng chịu lỗi, các bản sao của các khối được tạo và lưu trữ trên các Mã dữ liệu khác nhau.

NameNode đặt bản sao của các khối trên nhiều DataNode bằng cách tuân theo thuật toán Rack Awareness để đảm bảo không mất dữ liệu ngay cả khi DataNode hoặc toàn bộ rack bị hỏng. NameNode đặt bản sao đầu tiên trên DataNode gần nhất.

Nó lưu trữ bản sao thứ hai trên các DataNode khác nhau trên cùng một giá và bản sao thứ ba trên các DataNode khác nhau trên một giá khác.

Nếu hệ số sao chép là 2, thì nó sẽ đặt bản sao thứ hai trên một DataNode khác trên một giá đỡ khác để nếu một giá hoàn chỉnh bị hỏng, thì hệ thống cũng sẽ rất sẵn sàng.

Mục đích chính của chính sách bố trí bản sao nhận biết giá đỡ là cải thiện khả năng chịu lỗi, độ tin cậy của dữ liệu và tính khả dụng.

Tiếp theo trong hướng dẫn HDFS, chúng ta sẽ thảo luận một số tính năng chính của Hadoop HDFS.

Các tính năng quan trọng của Hadoop HDFS

1. Tính khả dụng cao

Nó là một hệ thống tệp có tính khả dụng cao. Trong hệ thống tệp này, dữ liệu được sao chép giữa các nút trong cụm Hadoop bằng cách tạo bản sao của các khối trên các nô lệ khác có trong cụm HDFS. Vì vậy, bất cứ khi nào người dùng muốn truy cập dữ liệu này, họ có thể truy cập dữ liệu của họ từ các nô lệ, chứa các khối của nó.

2. Khả năng chịu lỗi

Khả năng chịu lỗi trong Hadoop HDFS là độ bền hoạt động của hệ thống trong điều kiện không thuận lợi. Nó có khả năng chịu lỗi cao. Khung Hadoop chia dữ liệu thành các khối.

Sau đó, nó tạo ra nhiều bản sao của các khối trên các máy khác nhau trong cụm. Vì vậy, khi bất kỳ máy nào trong cụm gặp sự cố, thì một máy khách có thể dễ dàng truy cập dữ liệu của họ từ máy khác, máy này chứa cùng một bản sao của các khối dữ liệu.

3. Độ tin cậy cao

HDFS cung cấp khả năng lưu trữ dữ liệu đáng tin cậy. Nó có thể lưu trữ dữ liệu trong phạm vi 100 petabyte. HDFS lưu trữ dữ liệu một cách đáng tin cậy trên một cụm. Nó chia dữ liệu thành các khối. Sau đó, khung công tác Hadoop lưu trữ các khối này trên các nút có trong cụm.

HDFS cũng lưu trữ dữ liệu một cách đáng tin cậy bằng cách tạo một bản sao của mỗi và mọi khối có trong cụm. Do đó cung cấp khả năng chịu lỗi.

4. Nhân rộng

Sao chép dữ liệu là một tính năng độc đáo của HDFS. Replication giải quyết vấn đề mất dữ liệu trong một điều kiện không thuận lợi như lỗi phần cứng, sự cố của các nút, v.v. HDFS duy trì quá trình sao chép trong một khoảng thời gian đều đặn.

Nó cũng tiếp tục tạo các bản sao của dữ liệu người dùng trên các máy khác nhau có trong cụm. Vì vậy, khi bất kỳ nút nào gặp sự cố, người dùng có thể truy cập dữ liệu từ các máy khác. Do đó, không có khả năng mất dữ liệu người dùng.

5. Khả năng mở rộng

Nó lưu trữ dữ liệu trên nhiều nút trong cụm. Vì vậy, bất cứ khi nào yêu cầu tăng lên, bạn có thể mở rộng cụm. Hai cơ chế khả năng mở rộng có sẵn trong HDFS:Khả năng mở rộng theo chiều dọc và chiều ngang.

6. Bộ nhớ phân tán

Các tính năng HDFS đạt được thông qua lưu trữ phân tán và nhân rộng. Nó lưu trữ dữ liệu theo cách phân tán trên các nút. Trong Hadoop, dữ liệu được chia thành các khối và được lưu trữ trên các nút có trong cụm.

Sau đó, nó tạo ra bản sao của mỗi khối và lưu trữ trên các nút khác. Khi một máy trong cụm gặp sự cố, chúng tôi có thể dễ dàng truy cập dữ liệu của mình từ các nút khác chứa bản sao của nó.

Tiếp theo trong hướng dẫn HDFS, chúng ta sẽ thảo luận về một số thao tác HDFS hữu ích.

Hoạt động HDFS

Hadoop HDFS có nhiều điểm tương đồng với hệ thống tệp Linux. Chúng tôi có thể thực hiện hầu như tất cả các thao tác có thể làm với hệ thống tệp cục bộ như tạo thư mục, sao chép tệp, thay đổi quyền, v.v.

Nó cũng cung cấp các quyền truy cập khác nhau như đọc, ghi và thực thi cho người dùng, nhóm và những người khác.

1. Đọc thao tác

Khi máy khách HDFS muốn đọc bất kỳ tệp nào từ HDFS, trước tiên máy khách tương tác với NameNode. NameNode là nơi duy nhất lưu trữ siêu dữ liệu. NameNode chỉ định địa chỉ của các nô lệ nơi dữ liệu được lưu trữ. Sau đó, khách hàng tương tác với các Mã dữ liệu được chỉ định và đọc dữ liệu từ đó.

Ứng dụng khách HDFS tương tác với API hệ thống tệp phân tán. Sau đó, nó sẽ gửi yêu cầu đến NameNode để gửi vị trí khối. Đầu tiên NameNode kiểm tra xem máy khách có đủ đặc quyền để truy cập dữ liệu hay không? Sau đó, NameNode sẽ chia sẻ địa chỉ mà tại đó dữ liệu được lưu trữ trong DataNode.

NameNode cung cấp mã thông báo cho máy khách, mã này hiển thị cho DataNode để đọc tệp cho mục đích bảo mật. Khi khách hàng truy cập DataNode để đọc tệp, sau khi kiểm tra mã thông báo, DataNode cho phép khách hàng đọc khối cụ thể đó.

Sau khi máy khách đó mở luồng đầu vào và bắt đầu đọc dữ liệu từ các Mã dữ liệu được chỉ định. Do đó, theo cách này, máy khách đọc dữ liệu trực tiếp từ DataNode.

2. Thao tác viết

Để ghi một tệp, trước tiên máy khách tương tác với NameNode. HDFS NameNode cung cấp địa chỉ của DataNode mà trên đó máy khách phải ghi dữ liệu.

Khi máy khách hoàn thành việc ghi khối, DataNode bắt đầu sao chép khối thành một DataNode khác. Sau đó, nó sao chép khối sang DataNode thứ ba. Khi nó tạo ra bản sao được yêu cầu, nó sẽ gửi một xác nhận cuối cùng đến máy khách. Xác thực giống như thao tác đọc.

Máy khách chỉ gửi 1 bản sao dữ liệu bất kể yếu tố sao chép của chúng tôi, trong khi DataNodes sao chép các khối. Việc ghi tệp không tốn kém vì nó ghi nhiều khối song song nhiều khối trên một số DataNode.

Tóm tắt

Trong phần kết luận của hướng dẫn HDFS, chúng ta có thể nói rằng Hadoop HDFS lưu trữ dữ liệu theo cách phân tán trên cụm phần cứng hàng hóa.

Hadoop HDFS là một hệ thống lưu trữ có độ tin cậy cao, khả năng chịu lỗi và khả dụng cao được biết đến cho đến nay. Nó tuân theo kiến ​​trúc master-slave trong đó NameNode là nút chính và DataNodes là các nút phụ.

Ngoài ra, HDFS chia tệp đầu vào của khách hàng thành các khối có kích thước 128 MB, chúng tôi có thể định cấu hình theo yêu cầu của mình. Nó cũng lưu trữ các bản sao của các khối để cung cấp khả năng chịu lỗi.

NameNode tuân theo chính sách nhận thức về giá đỡ để đặt các bản sao trên DataNode để đảm bảo rằng không có dữ liệu nào bị mất trong quá trình máy hoặc lỗi phần cứng. Ngoài ra, các DataNodes sẽ gửi một thông báo về nhịp tim đến NameNode để đảm bảo rằng chúng vẫn còn sống.

Trong quá trình đọc hoặc ghi tệp, ứng dụng khách tương tác với NameNode trước tiên.

Hadoop HDFS là hệ thống lưu trữ có thể mở rộng, đáng tin cậy, phân tán, chịu được lỗi và khả dụng cao để lưu trữ dữ liệu lớn.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Spark trên HBase với Spark shell

  2. Cách Scaling thực sự hoạt động trong Apache HBase

  3. Xây dựng quy trình có thể mở rộng bằng NiFi, Kafka và HBase trên CDP

  4. Bên trong Hỗ trợ mới của Apache HBase cho MOB

  5. HBase znodes là gì?