Đỉnh NGUYỄN

life's a journey not a destination

Big Data #8 – HDFS là gì?

3 Comments


HDFS là gì?

HDFS là viết tắt của Hadoop Distributed File System và nó là 1 hệ thống lưu trữ chính được dùng bởi Hadoop. Nó cung cấp truy cập hiệu suất cao đến dữ liệu trên các cụm Hadoop. Nó thường ợc triển khai trên các phần cứng chi phí thấp. Các máy chủ chi phí thấp này rất dễ xảy ra lỗi phần cứng. Vì lý do này mà HDFS được xây dựng để có khả năng chịu lỗi cao. Tốc độ truyền dữ liệu giữa các nodes trong HDFS là rất cao, dẫn đến giảm thiểu nguy cơ lỗi.

HDFS tạo các mảnh nhỏ hơn của dữ liệu lớn và phân tán nó trên các nodes khác nhau. Nó cũng sao chép mỗi miếng dữ liệu nhỏ hơn nhiều lần trên nhiều nodes khác nhau. Do đó khi bất kỳ node nào có dữ liệu lỗi, hệ thống tự động dùng dữ liệu từ 1 node khác và tiếp tục xử lý. Đây là tính năng quan trọng của HDFS.

Kiến trúc của HDFS

Kiến trúc của HDFS là master / slave. Một HDFS cluster luôn gồm 1 NameNode. NameNode này là 1 master server và nó quản lý hệ thống tập tin cũng như điều chỉnh truy cập đến các tập tin khác nhau. Bổ sung cho NameNode có nhiều DataNodes. Luôn có 1 DataNode cho mỗi máy chủ dữ liệu. Trong HDFS, 1 tập tin lớn được chia thành 1 hoặc nhiều khối và các khối này được lưu trong 1 tập các DataNodes.

Tác vụ chính của NameNode là mở, đóng và đổi tên các tập tin, và thư mục và điều chỉnh truy cập đến hệ thống tập tin, trong khi tác vụ chính của DataNode là đọc và ghi vào hệ thống tập tin. DataNode cũng làm nhiệm vụ tạo, xóa, hoặc nhân rộng dữ liệu dựa trên chỉ dẫn từ NameNode.

Trong thực tế, NameNode và DataNode là phần mềm được thiết kế để chạy trên máy chủ, được viết bằng Java.

Kiến trúc HDF

HDFS_Architecture

Chúng ta đã hiểu hoạt động của HDFS dựa trên sơ đồ. Ứng dụng client hoặc HDFS client kết nối đến NameSpace cũng như DataNode.  Client app truy xuất đến DataNode được quy định bởi NameSpace Node. NameSpace Node cho phép Client app kết nối đến DataNode bằng cách cho phép kết nối đến DataNode trực tiếp. Một tập tin dữ liệu lớn được chia thành nhiều khối dữ liệu (giả sử các đoạn dữ liệu là A, B, C, và D). Client app sau đó sẽ ghi các khối dữ liệu trực tiếp lên DataNode. Client app không ghi trực tiếp lên tất cả các node. Nó chỉ ghi lên bất kỳ 1 trong những node và NameNode sẽ quyết định các DataNode nào khác nó sẽ nhân rộng dữ liệu. Trong ví dụ, Client app ghi trực tiếp lên DataNode 1 và 3. Tuy nhiên, các khối dữ liệu được tự động nhân rộng đến các nodes khác. Tất cả thông tin như trong DataNode mà khối dữ liệu được đặt được ghi trở về NameNode.

Tính sẵn sàng cao khi có thảm họa

Nhiều DataNode chứa cùng các khối dữ liệu trong trường hợp bất kỳ DataNode nào gặp thảm họa, toàn bộ xử lý sẽ vẫn tiếp tục, DataNode khác sẽ thay thế vai trò để xử lý khối dữ liệu cụ thể của node bị lỗi. Hệ thống này cung cấp tính chịu lỗi rất cao để đối phó với thảm họa và cung cấp tính sẵn sàng cao.

Nếu bạn chú ý thì chỉ có 1 NameNode duy nhất trong kiến trúc. Nếu node này gặp lỗi thì toàn bộ ứng dụng Hadoop sẽ ngừng vì node này là nơi lưu tất cả siêu dữ liệu. Node này cực kỳ quan trọng, nó thường được nhân rộng  sang các cụm khác. Mặc dù node được nhân rộng này không hoạt động trong kiến trúc, nó chứa tất cả những dữ liệu cần thiết để thực hiện tác vụ của NameNode trong trường hợp NameNode bị lỗi.

Toàn bộ kiến trúc Hadoop được xây dựng để hoạt động thông suốt ngay cả có lỗi node hoặc sự cố phần cứng. Nó được xây dựng trên khái niệm đơn giản rằng dữ liệu là quá lớn và không thể xử lý trên 1 phần cứng duy nhất. Chúng ta cần nhiều phần cứng (giá rẽ) để quản lý dữ liệu lớn và phần cứng gặp lỗi là việc hoàn toàn dễ xảy ra. Để giảm tác động của lỗi phần cứng, kiến trúc Hadoop được xây dựng để khắc phục những hạn chế của lỗi phần cứng.

Advertisements

Author: dinhnn

Senior software developer, a technical leader. You can be reached at via email to dinhnguyenngoc@gmail.com, via my blog at dinhnguyenngoc.wordpress.com, and on Twitter @dinhnguyenngoc.

3 thoughts on “Big Data #8 – HDFS là gì?

  1. Pingback: Big Data – Học những điều cơ bản về Big Data trong 21 ngày – bookmark | Đỉnh Nguyễn's Blog

  2. Cảm ơn vì bài viết. Em có một bài toán đang dự định ứng dụng hadoop nhưng chưa biết phải làm sao. Nội dung bài toán là các sensor liên tục đo và gửi chỉ số thông tin về máy chủ (sensor phân tán ở khắp nơi, thời gian gửi dữ liệu khác nhau, dữ liệu gửi về dạng file). Nhiệm vụ của em là làm sao lưu trữ được loại file lớn này và trả về file theo kết quả tìm kiếm của người dùng. Em dự kiến sử dụng Hadoop HDFS để hỗ trợ nhận, lưu trữ file thì có ổn không? Có tut nào hướng dẫn không ạ?

    • Chào Trường. Bài toán của em có thể dùng Kibana và Elastic search để có thể tìm kiếm tức thời. Nếu lượng dữ liệu > 100TB và nhu cầu phân tích các thuộc tính trong dữ liệu này theo các yêu cầu không biết trước và không tức thời thì em có thể dùng HDFS để lưu và dùng Hadoop để xử lý

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s