Thứ Ba, 26 tháng 1, 2016

Big Data #8 – HDFS là gì?



1 Comment

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.

0 nhận xét: