Hệ thống file phân tán HDFS

26 88 0
Hệ thống file phân tán HDFS

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

HDFS (Hadoop Distributed File System) là hệ thống quản lý tập tin được thiết kế để tối ưu cho bài toán lưu trữ các tập tin có kích thước lớn hàng GB, thậm chí TB. Đểgiải quyết bài toán này, dữ liệu của các tập tin lớn sẽ được chia nhỏ thành các block(ví dụ 64MB) và phân tán trên các Datanode. Ý tưởng được sử dụng ở đây là “dichuyển tính toán vào trong dữ liệu” thay vì di chuyển dữ liệu để tính toán” như cáchthông thường.

LỜI NÓI ĐẦU Khi việc xử lý tập hợp liệu lớn phức tạp mà ứng dụng xử lý liệu truyền thống không xử lý Cùng v ới thách th ức nh phân tích, thu thập, giám sát liệu, tìm kiếm, chia s ẻ, lưu tr ữ, truy ền nh ận, tr ực quan, truy vấn tính riêng tư Dữ liệu lớn đề cập đến việc vi ệc s d ụng phân tích dự báo, phân tích hành vi người dùng, s ố ph ương pháp phân tích liệu tiên tiến khác trích xuất giá trị từ li ệu mà đ ề c ập đ ến kích thước liệu.Vài nghi ngờ cho số lượng li ệu có s ẵn hi ện thực lớn, khơng phải đặc trưng phù hợp hệ sinh thái liệu Cùng với phát triển mạng máy tính, vi ệc tính tốn, quản lý ngày khơng đơn giản tập trung máy tính đ ơn nh trước Nó địi hỏi hệ thống tính tốn phải kết hợp từ s ố l ượng l ớn máy tính hay cịn có tên khác Hệ phân tán, nhằm ám ch ỉ tương ph ản với hệ tập trung trước Hệ phân tán đóng vai trò quan trọng lĩnh vực phát tri ển c cơng nghệ máy tính, đặc biệt điều kiện phát tri ển bùng nổ mạng máy tính Sự phát triển mạng LAN, WAN cho phép hàng trăm, hàng nghìn hay chí hàng triệu máy tính kết nối với Kết qu ả s ự phát tri ển công nghệ khơng đáng tin cậy mà cịn tạo nên hệ th ống máy tính lớn, kết nối đường kết nối tốc đ ộ cao Chúng t ạo nên mạng máy tính lớn hệ phân tán, ngược với hệ thống tập trung tr ước đây, bao gồm cá máy tính đơn có th ể thi ết bị ều ển đ ầu cu ối (remote teminal) Với mục đích học tập mơn Các hệ thống phân tán, th ời lượng có hạn, nguồn tài liệu khơng nhiều, với đề tài “Tìm hi ểu hệ thống file phân tán Hadoop Distributed File System HDFS”, nhóm mong muốn đưa nhìn tổng quan HDFS với phần: Kiến trúc, Truyền thơng, Định danh, Ti ến trình, Đồng hóa, Quản lý bế tắc, Phục hồi chịu lỗi, An toàn an ninh C ấp phát liệu Hệ thống file phân tán HDFS HỆ THỐNG FILE PHÂN TÁN HDFS Khái niệm 1.1 Giới thiệu Hadoop Hadoop framework nguồn mở viết Java cho phép phát tri ển ứng dụng phân tán có cường độ liệu lớn cách mi ễn phí Nó cho phép ứng dụng làm việc với hàng ngàn node khác hàng petabyte li ệu Hadoop lấy phát triển dựa ý tưởng từ công bố Google v ề mơ hình MapReduce hệ thống file phân tán Google File System (GFS) Apache Hadoop tạo thành phần bao gồm h ệ th ống file phân tán Hadoop Distributed Filesystem (HDFS) layer để tính tốn theo mơ hình xử lý Map Reduce Hình 1: Kiến trúc Hadoop cluster 1.2 Khái niệm HDFS HDFS (Hadoop Distributed File System) hệ thống qu ản lý t ập tin đ ược thi ết kế để tối ưu cho tốn lưu trữ tập tin có kích thước lớn hàng GB, th ậm chí TB Để giải toán này, liệu tập tin l ớn đ ược chia nh ỏ thành block (ví dụ 64MB) phân tán Datanode Ý t ưởng đ ược s Hệ thống file phân tán HDFS dụng “di chuyển tính tốn vào liệu” thay di chuy ển li ệu để tính tốn” cách thông thường So với hệ thống tập tin khác, HDFS khơng tối ưu cho tốn l ưu tr ữ hàng t ỉ tập tin nhỏ với kích thước tập tin vài KB Ưu điểm thi ết kế tập tin lớn giảm tải cho hệ thống quản lý không gian tập tin, gi ảm th ời gian thao tác thư mục hay tìm kiếm tập tin Kiến trúc HDFS trì cấu trúc phân cấp file, th m ục mà file đóng vai trị node HDFS có kiến trúc chủ - tớ (master - slave) Trên cluster chạy HDFS, có hai loại node Namenode Datanode Một cluster có nh ất Namenode (master) - máy chủ quản lý không gian tên hệ thống tập tin điều tiết việc truy xuất tập tin máy khách (client) có m ột hay nhiều Datanode (slave) - chương trình chạy máy chứa thiết bị lưu trữ HDFS tương tác với máy khách qua không gian tên, cho phép l ưu tr ữ d ữ li ệu c người dùng dạng tập tin Hình 2: Kiến trúc HDFS Trong HDFS, file chia làm m ột hay nhi ều block m ỗi block có block ID để nhận diện Các block file (trừ block cu ối cùng) có kích thước kích thước gọi block size c file Hệ thống file phân tán HDFS Mặc định block HDFS có kích thước 64MB Mỗi block file đ ược lưu trữ thành nhiều (replica) khác mục đích an tồn li ệu - Namenode đóng vai trị master, chịu trách nhiệm trì thơng tin v ề c ấu trúc phân cấp file, thư mục hệ thống file metadata khác c h ệ thống file Hai file Namespace image edit log sử dụng để lưu trữ thông tin metadata Namenode biết tất datanodes bao g ồm data blocks v ới file tương ứng, nhiên, khơng lưu trữ khối vị trí cách liên tục Thông tin xây dựng lại lần từ datanodes l ần hệ th ống kh ởi đ ộng lại - Các DataNode chịu trách nhiệm lưu trữ block thật file hệ thống file phân tán lên hệ thống file cục Mỗi block l ưu trữ file riêng biệt hệ thống file cục DataNode Truyền thông 3.1 Giữa Client Namenode Namenode chịu trách nhiệm điều phối thao tác truy cập (đ ọc/ghi d ữ li ệu) client lên hệ thống HDFS Kết nối NameNode client quy định giao thức client ghi lại trong… \ hdfs \ protocol \ ClientProtocol.java Một client thiết lập kết nối đến cổng TCP cấu hình máy NameNode Đây kết nối RPC Giao tiếp Client NameNode s dụng giao thức Client Các chức Giao thức client là: - Tạo mới: tạo file không gian tên Đầu tiên, client g ửi yêu c ầu đến NameNode tạo file entry lên File System Namespace File m ới đ ược t ạo rỗng, tức chưa có block Sau đó, NameNode quy ết đ ịnh danh sách DataNode chứa file cần gửi lại cho client - Nối file: Sau file tạo hoàn thành, có th ể ghi nối file - Đọc: client hệ thống muốn đọc file h ệ th ống HDFS, client thực request (thông qua RPC) đến Namenode để lấy metadata file cần đọc - Thêm block: Thêm block vào file có - Hồn thành (đóng file): Client hoàn tất việc ghi vào file - Báo cáo lỗi: Báo cáo block lỗi phát client - Quản lý thư mục: đổi tên, sửa, xóa Hệ thống file phân tán HDFS 3.2 Giữa Client DataNode Một Client liên lạc trực tiếp với DataNode để truyền liệu (gửi/nhận) cách sử dụng Giao thức truyền liệu, định nghĩa DataTransferProtocol.java Client mở kết nối tới Datanode, thực RPC để yêu cầu nhận block cần đọc đóng kết nối với DataNode Lưu ý với block ta có nhiều DataNode lưu trữ block Client đọc block từ DataNode “gần” Đối với mục đích hiệu suất, giao thức giao thức truy ền tr ực ến ch ứ RPC (gọi thủ tục từ xa) Client đệm liệu block đủ độ dài mặc định (64 MB) tạo sau block truyền đến DataNode Giao thức truyền liệu định nghĩa hoạt động để đọc block (opReadBlock ()), viết khối (opWriteBlock ()), thay th ế block (opReplaceBlock ()), chép block (opCopyBlock ()), đ ể l block kiểm tra lỗi ( opBlockChecksum ()) 3.3 Giữa Namenode Datanode Tất giao thức truyền thông HDFS xếp lớp giao thức TCP/IP Tất thông tin liên lạc Namenode Datanode khởi xướng Datanode, trả lời Namenode DataNodes nói chuyện với NameNode cách sử dụng giao thức DataNode Một tiến trình Gọi thủ tục từ xa (RPC) sử dụng Giao th ức Client Giao th ức Datanode Theo thiết kế, NameNode không bao gi kh ởi tạo b ất kỳ RPC Thay vào đó, đáp ứng yêu cầu RPC DataNodes máy khách cung cấp DataNode gửi thông tin đến NameNode thông qua bốn giao di ện đ ược định nghĩa Giao thức Datanode:  Đăng ký DataNode: DataNode thông báo cho NameNode v ề s ự t ồn t ại c NameNode trả ID đăng ký ID đăng ký tham s ố hàm DataNode khác Đăng ký kích hoạt DataNode khởi tạo, Datanode cũ khởi tạo lại Namenode khởi tạo  DataNode gửi HeartBeats: Định kỳ khoảng th ời gian m giây, m ỗi DataNode gởi đến NameNode thông điệp gọi HeartBeats để xác đ ịnh tình trạng hoạt động DataNode NameNode trả danh sách lệnh định hướng block cho DataNode để thực Các lệnh chủ yếu bao gồm hướng dẫn để chuyển block sang DataNodes khác cho mục đích nhân hướng dẫn để xóa block Hệ thống file phân tán HDFS Nếu NameNode không nhận Heartbeat gởi định kì về, xem nh DataNode chết (dead), không cho tham gia I/O, t ất c ả d ữ li ệu dead node vơ hiệu Node chết làm số block không đủ b ản sao, NameNode kiểm tra điều thêm cần  DataNode gửi báo cáo danh sách block: Định kỳ (tính theo gi ờ) m ỗi DataNode báo cáo cho NameNode biết danh sách tất block mà l ưu trữ, NameNode dựa vào thông tin để cập nhật lại metadata Cứ sau lần cập nhật lại vậy, metadata NameNode đạt tình trạng thống với liệu DataNode Toàn b ộ tr ạng thái metadata tình trạng th ống g ọi m ột checkpoint Metadata trạng thái checkpoint dùng đ ể nhân b ản metadata dùng cho mục đích phục hồi lại NameNode NameNode bị l ỗi  DataNode thông báo nhận block: DataNode báo cáo r ằng nh ận đ ược block từ client (trong trình ghi tập tin) từ m ột DataNode khác (trong nhân bản) Quá trình thực hi ện nh ận block Định danh Trong hệ phân tán nào, định danh ln đóng vai trị quy ết đ ịnh Nó giúp cho client truy cập cách suốt tới h ệ th ống file server Đ ịnh danh để biết quyền thao tác client tồn file Cụ thể, Metadata mà Namenode lưu trữ gồm có: • File System Namespace: hình ảnh thư mục h ệ th ống file t ại m ột thời điểm File System Namespace th ể tất các file, th mục có hệ hống file quan hệ chúng • Thông tin để ánh xạ từ tên file thành danh sách block: v ới m ỗi file, ta có danh sách có thứ tự block file đó, m ỗi Block đ ại di ện b ởi Block ID • Nơi lưu trữ block: block đại diện Block ID Với block ta có danh sách DataNode lưu trữ block Các DataNode chịu trách nhiệm lưu trữ block thật file c hệ thống file phân tán lên hệ thống file cục Mỗi block lưu trữ file riêng biệt hệ thống file c ục b ộ c DataNode Quản lý tiến trình 5.1 Tiến trình đọc HDFS Yêu cầu đọc liệu phục vụ HDFS, NameNode DataNode Chúng ta coi người đọc client (máy khách) Hệ thống file phân tán HDFS Hình 3: Tiến trình đọc HDFS Client bắt đầu tiến trình đọc cách gọi phương thức open() đối tượng FileSystem; đối tượng loại DistributedFileSystem Đối tượng kết nối với namenode sử dụng RPC lấy thơng tin metadata vị trí block file Chú ý rằng, địa ch ỉ ởPlease note s ố block file Trong response(ngược với request) với yêu cầu metadata request, địa DataNodes có block trả lại Một địa DataNodes nhận được, đối tượng kiểu FSDataInputStream trả lại cho client FSDataInputStream bao gồm DFSInputStream quan tâm đến tương tác với DataNode NameNode Trong bước biểu đồ trên, client gọi phương thức read() đựa DFSInputStream để tạo kết nối với DataNode với block file Dữ liệu đọc form dòng nơi mà client gọi ph ương th ức read lặp lại nhiều lần Tiến trình đọc read() thực tiếp tục đạt tời vị trí cuối block Khi đạt tới vị trí cuối block, DFSInputStream đóng k ết n ối chuyển tới vị trí DataNode cho block Khi client hoàn thành tiến trình đọc, gọi phương thức close() Hệ thống file phân tán HDFS 5.2 Tiến trình ghi HDFS Hình 4: Tiến trình ghi HDFS Client bắt đầu tiến trình ghi cách gọi phương thức create() đối tượng DistributedFileSystem mà tạo file bước bi ểu đồ Đối tượng DistributedFileSystem kết nối tới NameNode sử dụng RPC gọi tạo file Tuy nhiên, thao tác tạo file không kết h ợp v ới b ất kỳ block với file Đó trách nhiệm NameNode để xác nhận file (đang đ ược tạo) không tồn client cấp quyền để tạo file Nếu file sẵn sàng tồn client đủ quyền để tạo file mới, lúc client r IOException Nếu không, thao tác thành công, ghi cho file tạo NameNode Khi ghi NameNode tạo, đối tượng ki ểu FSDataOutputStream trả lại cho client Client sử dụng để ghi d ữ li ệu vào HDFS Phương thức ghi liệu gọi (invoked) (bước biểu đồ) FSDataOutputStream bao gồm đối tượng DFSOutputStream mà để ý đến sau kết nối với DataNodes NameNode Trong client tiếp tục ghi liệu, DFSOutputStream tiếp tục tạo gói (packets) với li ệu Những packets xếp vào hàng đợi gọi DataQueue Hệ thống file phân tán HDFS Có nhiều thành phần gọi DataStreamer tiêu thụ DataQueue DataStreamer ln hỏi NameNode vị trí blocks từ chọn DataNodes mong muốn để sử dụng cho việc tái tạo Bây giờ, việc xử lý tái tạo bắt đầu việc tạo đường ống sử dụng DataNodes Trong trường hợp này, chọn nhân rộng level có DataNodes đường ống (pipeline) DataStreamer dẫn packets vào DataNode pipeline Mọi DataNode pipeline lưu packet nhận forward tương tự cho DataNode thứ pipeline Queue khác, ‘Ack Queue’ trì DFSOutputStream để lưu trữ packet chờ acknowledgement (sự công nhận) từ DataNodes 10 Khi acknowledgement cho packet hàng đợi (queue) nh ận từ tất DataNodes pipeline, Nó bị xóa từ ‘Ack Queue’ Nếu xảy lỗi DataNode, packets từ hàng đợi sử dụng để khởi tạo lại thao tác 11 Sau client hồn thành ghi liệu, gọi phương thức close() (bước biểu đồ) Call to close(), kết lại data packets t ới pipeline chờ acknowledgement (sự xác nhận) 12 Khi nhận acknowledgement, NameNode thơng báo ti ến trình ghi hồn tất Đồng hóa hệ thống file phân tán HDFS HDFS cung cấp phương thức để buộc tất đệm đồng hóa với nút liệu thông qua sync() phương thức FSDataOutputStream Sau gọi trở lại thành công từ người sync()bảo vệ HDFS, liệu ghi đến thời điểm tệp trì hiển thị cho tất người đọc Trong trường hợp xảy cố (của máy khách HDFS), liệu khơng bị Thuật tốn Rack-Awareness Hệ thống file phân tán HDFS Hình 5: Mơ hình thuật toán Rack Awareness Cách HDFS chép nhận thức Rack gì? Một lần nữa, NameNode đảm bảo tất không lưu trữ rack rack đơn Nó tn theo Thuật tốn nhận thức Rack Awareness xây dựng để giảm độ trễ cung cấp khả chịu lỗi Xem xét hệ số nhân 3, thuật tốn nhận thức giá nói khối lưu trữ giá địa phương hai lưu giá khác (từ xa) DataNode khác ( từ xa) rack hình Nếu bạn có nhiều sao, phần lại đặt DataNodes ngẫu nhiên cung cấp không hai nằm giá, Đây cách cụm sản xuất Hadoop thực tế trơng Ở đây, có nhiều Rack điền DataNodes: 10 Hệ thống file phân tán HDFS Điều làm đơn giản hoá đảm bảo tính quán liệu cho phép truy cập liệu với thông lượng cao 7.1 Về cấu trúc topology mạng Trong bối cảnh xử lý liệu với kích thước lớn qua mơi trường mạng, việc nhận biết giới hạn băng thông node yếu tố quan trọng để Hadoop đưa định việc phân bố liệu phân tán tính tốn Ý tưởng đo băng thơng hai node hợp lý, nhiên làm điều khó khăn (vì việc đo băng thơng mạng cần thực môi trường “yên tĩnh”, tức thời điểm đo khơng xảy việc trao đổi liệu qua mạng) Vì vậy, Hadoop sử dụng cấu trúc topology mạng cluster để định lượng khả truyền tải liệu hai node Hadoop nhận biết cấu trúc topology mạng cluster qua cấu trúc phân cấp Cấu trúc giúp Hadoop nhận biết “khoảng cách” hai node cluster Trên cấu trúc phân cấp này, bridge đóng vai trị “node trong” để phân chia mạng thành mạng (subnet) node có node cha (cùng nằm mạng con) xem “nằm rack” Hadoop đưa khái niệm “địa mạng” để xác định vị trí tương đối node “Địa mạng” node đường dẫn từ node gốc đến node xác định Ví dụ địa mạng Node hình bên /Swicth 1/Rack 1/ Node Hadoop tính tốn “khoảng cách” hai node đơn giản tổng khoảng cách node đến node cha chung gần Ví dụ theo hình bên dưới, khoảng cách Node Node 2, khoảng cách Node Node Hình 7: Cấu trúc topology mạng Hadoop đưa số giả định sau rack: 12 Hệ thống file phân tán HDFS Băng thông giảm dần theo thứ tự sau đây: Các tiến trình node Các node khác rack Các node nằm không nằm rack Hai node có “khoảng cách” gần có băng thơng hai node lớn Giả định khẳng định lại giả định Khả hai node nằm rack bị lỗi (death) cao so với hai node nằm hai rack khác Điều ứng dụng NameNode thực đặt cho block xuống DataNode 7.2 Săp xếp Block lên DataNode Như ta biết, HDFS, file chia thành nhiều block, block lưu trữ thành N N DataNode khác nhau, N gọi số mức độ chép (replication level) Với file HDFS, ta quy định số replication level khác Chỉ số cao file “an tồn” Do block file lưu trữ nhiều DataNode khác Một vấn đề đặt là: “NameNode chọn DataNode để lưu block?” Ở đây, có cân ba yếu tố: độ tin cậy, băng thông đọc băng thông ghi liệu Ví dụ ta ghi tất block DataNode, băng thơng ghi tối ưu data pile (xem lại trình ghi file) xảy node Tuy nhiên tin cậy tối thiểu (vì DataNode “chết” tất block liệu hết) Một ví dụ khác, ta lưu block lên nhiều DataNode thuộc rack khác Điều làm cho block an tồn, khả node thuộc rack khác “chết” khó xảy Tuy nhiên băng thơng ghi liệu thấp data pile trải nhiều node thuộc rack khác Vì cân yếu tố mang tính chất tương đối, nên xuất nhiều chiến lược cho việc xếp block lên DataNode Từ Hadoop 0.17.0 trở đi, chiến lược cố định theo nguyên tắt “phân tán block khắp cluster” Theo chiến lược này, block liệu đặt node với client (nếu chương trình client ghi liệu thuộc cluster, ngược lại, NameNode chọn ngẫu nhiên DataNode) Bản thứ hai đặt DataNode ngẫu nhiên nằm rack khác với node lưu Bản thứ ba, đặt DataNode nằm rack với node lưu thứ hai Các 13 Hệ thống file phân tán HDFS xa đặt DataNode chọn ngẫu nhiên Nhìn chung, chiến lược đảm bảo cân ba yếu tố độ tin cậy (một block lưu hai rack khác nhau), băng thông ghi (data pile qua hai rack) băng thơng đọc (vì client có hai lựa chọn xem nên đọc rack nào) 7.3 Cân cluster Theo thời gian phân bố block liệu DataNode trở nên cân đối, số node lưu trữ nhiều block liệu số node khác lại Một cluster bị cân ảnh hưởng tới tối ưu hoá MapReduce tạo áp lực lên DataNode lưu trữ nhiều block liệu (lưu lượng truy cập từ client, dung lượng lưu trữ lớn) Vì tốt nên tránh tình trạng cân Một chương trình tên balancer (chương trình chạy daemon NameNode) thực việc cân lại cluster Việc khởi động hay mở chương trình độc lập với HDFS (tức HDFS chạy, ta tự tắt hay mở chương trình này), nhiên thành phần HDFS Balancer định phân tán lại block liệu di chuyển từ DataNode tải sang DataNode trống mà đảm bảo chiến lược xếp block lên DataNode Phục hồi chịu lỗi Lỗi phần tính chất đặc trưng hệ thống phân tán so với hệ thống có máy chủ, lỗi xảy thành phần hệ thống phân tán bị hỏng Trong lỗi hệ thống máy chủ ảnh hưởng đến tồn hệ thống lỗi hệ thống phân tán ảnh hưởng tới số thành phần, ảnh hưởng đến tồn hệ thống Mục tiêu HDFS lưu trữ liệu cách tin cậy có lỗi xảy 8.1 Những lỗi HDFS thường gặp Các loại lỗi mà HDFS thường gặp: NameNode bị lỗi, DataNode bị lỗi, lỗi phần cứng, đĩa lưu metadata bị lỗi phân mảnh mạng 8.1.1 NameNode gặp lỗi Trong kiến trúc HDFS có NameNode Nếu node gặp lỗi tồn ứng dụng Hadoop ngừng node nơi lưu tất siêu liệu Node quan trọng, thường nhân rộng sang cụm khác Mặc dù node nhân rộng không hoạt động kiến trúc, chứa tất liệu cần thiết để thực tác vụ NameNode trường hợp NameNode bị lỗi 14 Hệ thống file phân tán HDFS 8.1.2 DataNode bị lỗi Mọi liệu lưu DataNode hỏng không sử dụng cho NameNode làm cho số lượng nhân nhiều block bị nhỏ hệ số nhân NameNode kiểm tra block định kì tiến hành nhân cho block bị thiếu nhân Việc tái nhân bị gây nhiều nguyên nhân khác nhau: Datanode bị lỗi, nhân bị lỗi, hệ số nhân tăng lên… Ngồi ra, DataNode lỗi thiết bị, lỗi kết nối mạng, lỗi phần mềm, hay nhiều DataNode chứa khối liệu nên nhiều lúc xảy vấn đề lấy liệu, hay khối liệu gặp cố ảnh hưởng đến DataNode 8.1.3 HDFS lỗi phần cứng Một ứng dụng HDFS có hàng nghìn máy chia lưu liệu, lỗi phần cứng thường gặp Hệ thống HDFS chạy cluster với hàng trăm chí hàng nghìn node Các node xây dựng nên từ phần cứng thông thường, giá rẻ, tỷ lệ lỗi cao Chất lượng số lượng thành phần phần cứng tất yếu dẫn đến tỷ lệ xảy lỗi cluster cao Các vấn đề điểm qua lỗi ứng dụng, lỗi hệ điều hành, lỗi đĩa cứng, nhớ, lỗi thiết bị kết nối, lỗi mạng, lỗi nguồn điện… Vì thế, khả phát lỗi, chống chịu lỗi tự động phục hồi phải tích hợp vào hệ thống HDFS 8.1.4 Metadata Disk Failure - Đĩa lưu metadata bị lỗi FsImage (lưu thông tin hệ thống tập tin) Edit Log (lưu lại giao tác hệ thống) cấu trúc liệu trung tâm, xảy lỗi dẫn đến HDFS ngưng hoạt động Vì lí này, NameNode cấu hình để hỗ trợ trì nhiều phiên chép FsImage EditLog, sửa phải đảm bảo đồng thời sửa Thông tin cập nhật vào phiên đồng sang tất phiên khác Điều có làm giảm tốc độ NameNode chút chấp nhận Trong trường hợp NameNode (duy nhất) bị cố cần phải thủ cơng xử lí 8.1.5 Lỗi phân mảnh mạng Mỗi DataNode gửi heartbeat đến NameNode cách định kì Phân mảnh mạng xảy số DataNode kết nối với NameNode NameNode phát nhờ vắng mặt hearbeat, NameNode tiến hành đánh dấu DataNode đưa trạng thái “dead” ngừng chuyển tiếp yêu cầu I/O tới chúng 8.2 Phục hồi chịu lỗi HDFS Tính chịu lỗi hệ thống liên quan mật thiết tới khái niệm hệ thống tin cậy, hệ thống coi đáng tin cậy đáp ứng bốn tiêu chí sau: 15 Hệ thống file phân tán HDFS - Khả sẵn sàng phục vụ hệ thống - Độ tin cậy hệ thống - Độ an toàn hệ thống - Khả bảo trì hệ thống Khả sẵn sàng phục vụ hệ thống thể thời gian đáp ứng yêu cầu dịch vụ, trường hợp lý tưởng phải thực theo thời gian thực Độ tin cậy hệ thống liên quan tới tính xác thơng tin mà khơng phụ thuộc vào yếu tố thời gian Khả bảo trì hệ thống thể khả phục hồi hệ thống sau xảy lỗi, phải thực cách đơn giản thời gian nhanh tối thiểu tổn hại thơng tin Độ an tồn hệ thống thể khả bảo đảm an tồn cho liệu có cố lớn Trong phần này, nhóm tập trung giới thiệu khả sẵn phục vụ HDFS, độ tin cậy HDFS khả phục hồi HDFS, cịn độ an tồn giới thiệu vào phần sau 8.2.1 Tính sẵn sàng cao có cố HDFS Toàn kiến trúc Hadoop xây dựng để hoạt động thơng suốt có lỗi node cố phần cứng Nó xây dựng khái niệm đơn giản liệu lớn xử lý phần cứng Chúng ta cần nhiều phần cứng (giá rẽ) để quản lý liệu lớn phần cứng gặp lỗi việc hoàn toàn dễ xảy Để giảm tác động lỗi phần cứng, kiến trúc Hadoop xây dựng để khắc phục hạn chế lỗi phần cứng Khi NameNode lỗi: NameNode sử dụng điểm lỗi Hadoop 1.x, nơi toàn cụm Hadoop khơng có sẵn NameNode bị hỏng Nói cách khác, tính sẵn sàng cao đàm phán NameNode cần thiết NameNode để hoạt động để phục vụ yêu cầu máy khách Hadoop Để giải vấn đề lỗi đơn điểm khơng thành cơng NameNode, tính HA intorduced Hadoop 2.x nơi có hai NameNode cụm HDFS cấu hình hoạt động / thụ động Do đó, NameNode hoạt động khơng thành cơng, NameNode thụ động khác thay trách nhiệm NameNode không thành công giữ cho HDFS hoạt động Khi DataNode lỗi - tính tồn vẹn thể hiện: Nhiều DataNode chứa khối liệu, trường hợp DataNode gặp cố, toàn xử lý tiếp tục, DataNode khác thay vai 16 Hệ thống file phân tán HDFS trò để xử lý khối liệu cụ thể node bị lỗi Hệ thống cung cấp tính chịu lỗi cao để đối phó với thảm họa cung cấp tính sẵn sàng cao Khi liệu lấy từ DataNode bị hư, HDFS client software tiến hành checksum nội dung file Khi tạo file, HDFS tính checksum block, lưu thành file ẩn riêng biệt Checksum liệu lấy từ DataNode so sánh với file ẩn này, khơng giống xem liệu hư, cần phải lấy từ DataNode khác 8.2.2 Độ tin cậy HDFS thông qua việc nhân liệu HDFS thiết kế để lưu trữ file cực lớn cách tin cậy nhiều máy cụm máy chủ lớn Nó chia file thành chuỗi block, tất block có kích thước trừ block cuối Độ lớn block (mặc định 64MB) số (mặc định 3) thiết lập Các block nhân để chống lỗi theo hệ thống nhân cấu hình Việc lưu để đảm bảo tính chịu lỗi Các file HDFS ghi lần thay đổi Các DataNode gởi nhịp tim (Heartbeat) báo cáo Block (Blockreport) cho NameNode theo định kì Nhận nhịp tim, NameNode biết DataNode hoạt động bình thường, cịn báo cáo Block, bao gồm danh sách tất block tên DataNode đó, giúp cho NameNode định (truy xuất liệu thêm có block khơng đủ sao) Để tăng độ tin cậy (reliability), tính sẵn sàng (availability) tối ưu đường truyền, HDFS lưu block theo kiểu Rack-Aware Hình 8: Nhân liệu HDFS 17 Hệ thống file phân tán HDFS Phương thức nhân bản: Phương pháp nhân HDFS dựa kĩ thuật Hadoop Rack Awareness Trong hầu hết trường hợp với hệ số nhân 3, HDFS đặt nhân DataNode khác rack, DataNode khác khác rack Tỉ lệ toàn rack bị fail thấp nhiều so với Node bị fail Khi DataNode bị fail, NameNode khôi phục block bị cân cách nhân DataNodes rack để có tốc độ cao (băng thơng lớn hơn) Nếu tồn rack bị fail có nhân block rack khác Cụ thể số có lưu nodes thuộc rack, lại lưu node thuộc rack khác NameNode xác định DataNode thuộc rack Nhớ rằng, lỗi rack nhiều so với lỗi node giao tiếp rack khác phải qua switch, tốn thời gian Cách làm cho phép đọc liệu song song từ node khác nhau, lại “mệt” ghi liệu Lựa chọn nhân bản: Để giảm thiểu việc tiêu thụ băng thông độ trễ đọc liệu, HDFS cố gắng tìm nhân mà gần với NameNode Nếu tồn nhân rack với NamdeNode yêu cầu, nhân ưu tiên chọn để thỏa mãn yêu cầu Nếu HDFS trải rộng Data Center, nhân Data Center ưu tiên nhân Data Center khác Nói cách khác, HDFS tạo mảnh nhỏ liệu lớn phân tán nodes khác Nó chép miếng liệu nhỏ nhiều lần nhiều nodes khác Do node có liệu lỗi, hệ thống tự động dùng liệu từ node khác tiếp tục xử lý Đây tính quan trọng HDFS Nhân liệu theo đuổi HDFS để cung cấp khả chịu lỗi Và nhân rộng dẫn đến việc tiêu thụ nhiều khơng gian, người ta ln thêm nhiều nút vào cụm cần Bằng cách này, cụm thực tế, có vấn đề khơng gian trống lý để triển khai HDFS lưu trữ tập liệu khổng lồ Ngồi ra, người ta thay đổi yếu tố nhân liệu để tiết kiệm không gian HDFS sử dụng codec khác cung cấp Hadoop để nén liệu Ngoài ra, tốc độ truyền liệu nodes HDFS cao, dẫn đến giảm thiểu nguy lỗi Nhân metadata NameNode với SecondaryNameNode: 18 Hệ thống file phân tán HDFS Từ kiến trúc trên, ta thấy tầm quan trọng NameNode, lưu giữ tất metadata hệ thống Nếu Namenode gặp phải cố (cả phần cứng hay phần mềm) tất file hệ thống HDFS bị mất, ta khơng có cách để tái cấu trúc lại file từ block lưu DataNode Đó lý có tồn SecondaryNamenode SecondaryNamenode node Hadoop cluster SecondaryNamenode khơng đóng vai trị NameNode, nhiệm vụ SecondaryNamenode lưu trữ lại checkpoint (trạng thái thống metadata) NameNode Khi NameNode gặp cố, checkpoint import vào NameNode NameNode trở lại hoạt động thời điểm SecondaryNamenode tạo checkpoint SecondaryNamenode thực nhiệm vụ thơng qua daemon tên secondarynamenode SecondaryNamenode không cập nhật checkpoint cách tải toàn metadata NameNode Thực chất, SecondaryNamenode tải phần EditLog từ NameNode thực việc “trộn” EditLog vào phiên metadata trước Cấu trúc metadata SecondaryNamenode giống cấu trúc metadata NameNode 8.2.4 Khả phục hồi HDFS Lỗi xảy thời điểm nào, hệ thống đáng tin cậy phải khơng có khả phát lỗi mà cịn phải biết phục hồi sau gặp lỗi, nói cách khác phục hồi biện pháp đưa hệ thống từ trạng thái bị lỗi trở trạng thái bình thường Xóa file khơi phục file xóa: Khi file bị xóa, khơng bị xóa mà thay vào bị đổi tên di chuyển vào thư mục trash File khơi phục lúc file cịn tồn trash Sau hết thời gian trash, HSFS tự động xóa file khỏi hệ thống Việc xóa file giải phóng vùng nhớ liên kết tới file Sẽ có khoảng thời gian trễ từ lúc người dùng xóa file nhớ trống HDFS tăng lên Giảm hệ số nhân bản: Khi hệ số nhân giảm, NameNode xác định nhân thừa để thực xóa bỏ Thơng tin nhận từ tin DataNode DataNode thực xóa bỏ block giải phóng vùng nhớ tương ứng Tuy nhiên có độ trễ thời gian xóa thời gian vùng nhớ trống tăng lên Biện pháp nâng cao tính năng: Chọn gần chương trình để giảm lưu lượng truyền thời gian 19 Hệ thống file phân tán HDFS Nếu không gian trống DataNode giảm xuống mức độ định, liệu DataNode di chuyển sang node khác File có nhiều yêu cầu truy xuất thêm node phù hợp Tạm thời tính chưa có Khi client u cầu tạo file, HDFS client lưu tạm đến độ lớn vượt qua block liên lạc với NameNode NameNode thêm tên file vào file system, cấp cho block đem node ID với block ID thông báo client, client tự đem file lưu vào block định Khi viết liệu vào HDFS, client gởi block lưu tạm sang DataNode (trong danh sách NameNode định) theo khối nhỏ 4KB, DataNode vừa lưu liệu vừa đem liệu gởi sang DataNode thứ 2, đến node cuối An toàn, an ninh 9.1 Chế độ an toàn (Safemode) Khi khởi động NameNode vào trạng thái safemode, dựa Heartbeat Blockreport mà DataNode gởi Block đủ số lượng xem an tồn Nếu có đủ tỉ lệ định (thiết lập được) block an toàn, NameNode khỏi safemode sau 30s Sau đó, block chưa đủ thêm 9.2 Bảo vệ liệu Các tính bảo vệ liệu làm cho liệu đọc cảnh qua mạng phần lại đĩa Hadoop đáp ứng yêu cầu bảo mật tuân thủ cách sử dụng mã hóa liệu suốt (TDE) để mã hóa liệu cho tệp HDFS, với kho lưu trữ quản lý khóa Hadoop mã nguồn mở Ranger (KMS) Ranger cho phép quản trị viên bảo mật quản lý khóa sách ủy quyền cho KMS Hortonworks làm việc rộng rãi với đối tác mã hóa để tích hợp mã hóa HDFS với khung quản lý khóa cấp doanh nghiệp Mã hóa HDFS, kết hợp với sách truy cập KMS Ranger trì, ngăn quản trị viên Linux Hadoop lừa đảo truy cập liệu hỗ trợ phân tách nhiệm vụ cho truy cập mã hóa liệu Dữ liệu HDFS mã hóa cịn lại thực mã hóa đầu cuối liệu đọc từ ghi vào HDFS Mã hóa đầu cuối có nghĩa liệu mã hóa giải mã máy khách HDFS khơng có quyền truy cập vào liệu khóa khơng mã hóa Mã hóa HDFS liên quan đến số yếu tố: 20 Hệ thống file phân tán HDFS Khóa mã hóa : Cấp độ bảo vệ quyền truy cập dựa quyền mới, ngồi quyền HDFS tiêu chuẩn • Vùng mã hóa HDFS : Một thư mục HDFS đặc biệt tất liệu mã hóa ghi giải mã đọc  Mỗi vùng mã hóa liên kết với khóa mã hóa định vùng tạo  Mỗi tệp vùng mã hóa có khóa mã hóa nhất, gọi "khóa mã hóa liệu" (DEK)  HDFS khơng có quyền truy cập vào DEK Mã liệu HDFS thấy luồng byte mã hóa HDFS lưu trữ "khóa mã hóa liệu mã hóa" (EDEK) phần siêu liệu tệp NameNode  Khách hàng giải mã EDEK sử dụng DEK liên quan để mã hóa giải mã liệu trình viết đọc • Ranger Key Management Service (Ranger KMS) : Một dịch vụ quản lý khóa nguồn mở dựa trênKeyProviderAPIcủa Hadoop • Để mã hóa HDFS, Ranger KMS có ba trách nhiệm bản: Cung cấp quyền truy cập vào khóa vùng mã hóa lưu trữ Tạo quản lý khóa vùng mã hóa tạo khóa liệu mã hóa để lưu trữ Hadoop • Kiểm tra tất kiện truy cập Ranger KMS • • Phân quyền: Việc truy cập vào quy trình mã hóa / giải mã khóa thường bị hạn chế người dùng cuối Điều có nghĩa khóa mã hóa lưu trữ xử lý an toàn HDFS, người dùng quản trị HDFS khơng có quyền truy cập vào chúng Việc phân quyền yêu cầu hai loại tài khoản quản trị viên HDFS: Người dùng dịch vụ HDFS: tài khoản cấp hệ thống liên kết với HDFS ( hdfstheo mặc định) Người dùng quản trị HDFS: tài khoản hdfsnhóm siêu liệu, quản trị viên HDFS sử dụng để định cấu hình quản lý HDFS 10 Cấp phát liệu Ứng dụng chạy DHFS không giống ứng dụng khác chỗ cần streaming access HDFS trọng lượng truy xuất cao (high throughput), xử lí liệu theo nhóm khơng hồn tồn tn thủ POSIX Truy cập liệu theo dòng: HDFS thiết kế dành cho ứng dụng dạng xử lý khối (batch processing) Do đó, file HDFS tạo ra, ghi 21 Hệ thống file phân tán HDFS liệu đóng lại khơng thể bị chỉnh sữa Files ứng dụng HDFS tuân thủ write-once-read-many, để đảm bào tính quán (coherency) lượng truy xuất cao Vì lượng liệu lớn nên phần tính toán di chuyển gần nơi liệu lưu để giảm lưu lượng đường truyền Mơ hình liên kết liệu đơn giản: Ghi lần, đọc nhiều lần Điều làm đơn giản hoá đảm bảo tính quán liệu cho phép truy cập liệu với thông lượng cao HDFS thiết kế để di chuyển từ (platform) sang khác Nói cách khác, HDFS di chuyển trình xử lý thay liệu 10.1 Permission HDFS có mơ hình phân quyền tập tin thư mục giống với POSIX (Portable Operating System Interface [for Unix]) Có ba loại quyền truy cập: quyền phép đọc (r), quyền ghi (w), quyền thực thi (x) Quyền phép đọc cho phép người dùng (hoặc ứng dụng) đọc nội dung tập tin hay danh sách nội dung thư mục  Quyền ghi đòi hỏi ghi file, với thư mục, để tạo xóa 37 file/thư mục  Quyền thực thi khơng đươc áp dụng cho file khơng thể thực thi file HDFS (không giống POSIX) Quyền thực thi thư mục yêu cầu người dùng cố gắng truy cập vào file hay thư mục thư mục  Mỗi file thư mục có chủ sở hữu (owner), nhóm (group), chế độ (mode) Mode mô tả cho quyền truy cập owner vào tập tin/thư mục, quyền truy cập thành viên thuộc group vào tập tin/thư mục quyền truy cập những người dùng owner không thuộc group vào tập tin/thư mục Khi truy cập vào HDFS, client đươc nhận diện người dùng (user name) nhóm (group) tiến trình client Các client truy cập vào hệ thống từ xa, điều làm cho client trở thành người sử dụng tùy tiện, đơn giản cách tạo tài khoản hệ thống từ xa Vì vậy, quyền truy cập sử dụng cộng đồng hợp tác người dùng, chế cho việc chia sẻ hệ thống tập tin tránh vơ tình làm mát liệu, khơng phải dành cho việc bảo mật tài nguyên môi trường thù địch Tuy nhiên, bất chấp nhược điểm trên, việc kích hoạt chế độ kiểm tra quyền truy cập có ý nghĩa việc tránh tình cờ sửa đổi xóa phận đáng kể hệ thống tập tin, người dùng công cụ tự động hay 22 Hệ thống file phân tán HDFS chương trình Lưu ý HDFS ta kích hoạt hay tắt chế độ kiểm tra quyền truy cập Khi chế độ kiểm tra quyền truy cập kích hoạt, thao tác truy cập vào file/thư mục điều kiểm tra quyền hạn Trên HDFS cịn có người dùng đặc biệt, super-user Đây user đại diện cho tiến trình NameNode User có quyền hạn tồn cục khơng bị kiểm tra quyền truy cập 10.2 Quản lý hạn ngạch (quotas) HDFS cho phép người quản trị thiết lập hạn ngạch (quotas) cho số lượng tên (file/thư mục) sử dụng dung lượng sử dụng cho thư mục Có hai loại hạn ngạch hạn ngạch tên (name quotas) hạn ngạch dung lượng (space quotas) Hai loại hạn ngạch hoạt động độc lập, việc quản trị thực thi hai loại hạn ngạch lại ảnh hưởng chặt chẽ tới Hạn ngạch tên thư mục giới hạn cứng số lượng file thư mục thư mục bắt nguồn từ thư mục Việc tạo tập tin thư mục thất bại hạn ngạch bị vượt qua Các nỗ lực để thiết lập hạn ngạch thành công thư mục vi phạm hạn ngạch Một thư mục tạo không thiết lập hạn ngạch Hạn ngạch dung lượng thư mục giới hạn cứng số byte sử dụng tập tin thư mục bắt nguồn thư mục Việc cấp phát block cho file thất bại hạn ngạch bị vượt qua Mỗi block file làm tăng dung lượng thư mực đưa tới gần hạn mức Một thư mục tạo khơng có liên quan đến hạn ngạch khơng làm tăng dung lượng thư mục cha Lưu trữ file lớn: HDFS hỗ trợ tập tin lớn, kích thước file lớn so với chuẩn truyền thống file có kích thước hàng GB đến TB (terabyte) trở nên phổ biến Một HDFS xử lí hàng chục triệu tập tin Khi làm việc tập liệu với kích thước nhiều terabyte, người ta lại chọn việc quản lý hàng tỷ file có kích thước hàng KB, chí hệ thống hỗ trợ Điều chúng muốn nói việc phân chia tập liệu thành số lượng file có kích thước lớn tối ưu Hai tác dụng to lớn điều thấy giảm thời gian truy xuất liệu đơn giản hoá việc quản lý tập tin 23 Hệ thống file phân tán HDFS 11 Các giao diện tương tác 11.1 Giao diện command line Đây giao diện đơn giản để tương tác với HDFS HDFS cung cấp shell để thao tác folder, file tạo, xoá, di chuyển, rename, copy…Các shell thao tác HDFS thông qua URI có dạng hdfs:/// 11.2 Giao diện java Hadoop viết Java Vì vậy, tất thao tác tương tác với HDFS thực thông qua Java API Các shell hình thành nên giao diện command line HDFS code từ Java API Thơng qua Java API Hadoop, ta dễ dàng phát triển ứng dụng tương tác với HDFS giống với hệ thống file truyền thống khác 11.3 Giao diện web Đây giao diện cho phép ta dễ dàng nắm bắt tình trạng hoạt động HDFS, biết danh sách node hoạt động, tình trạng đĩa cứng node… Giao diện cho phép ta browse file HDFS download file Tuy nhiên ta tạo thay đổi lên hệ thống (tạo, xoá, cập nhật file/thư mục…) từ giao diện 24 Hệ thống file phân tán HDFS KẾT LUẬN Hadoop Distributed File System(HDFS) hệ thống lưu trữ dùng Hadoop Nó cung cấp truy cập hiệu suất cao đến liệu cụm Hadoop Nó thường triển khai phần cứng chi phí thấp Các máy chủ chi phí thấp dễ xảy lỗi phần cứng Vì lý mà HDFS xây dựng để có khả chịu lỗi cao Tốc độ truyền liệu nodes HDFS cao, dẫn đến giảm thiểu nguy lỗi HDFS tạo mảnh nhỏ liệu lớn phân tán nodes khác Nó chép miếng liệu nhỏ nhiều lần nhiều nodes khác Do node có liệu lỗi, hệ thống tự động dùng liệu từ node khác tiếp tục xử lý Hệ thống cung cấp tính chịu lỗi cao để đối phó với thảm họa cung cấp tính sẵn sàng cao Ứng dụng chạy HDFS khơng giống ứng dụng khác chỗ cần streaming access HDFS trọng lượng truy xuất cao (high throughput), xử lí liệu theo nhóm khơng hồn tồn tn thủ POSIX HDFS hỗ trợ tập tin lớn, từ GB đến TB HDFS xử lí hàng chục triệu tập tin Files ứng dụng HDFS tuân thủ write-once-read-many, để đảm bào tính quán (coherency) lượng truy xuất cao Vì lượng liệu lớn nên phần tính tốn di chuyển gần nơi liệu lưu để giảm lưu lượng đường truyền HDFS thiết kế để di chuyển từ (platform) sang khác Giao tiếp với HDFS thơng qua DFSShell (dùng dịng lệnh), Java API trình duyệt web 25 Hệ thống file phân tán HDFS TÀI LIỆU THAM KHẢO [1] Hadoop The Definitive Guide, Tom White, United States of America, 2015 [2] https://luanbn.wordpress.com/2015/10/18/big-data-part2-tim-hieu-ve-apachehadoop-tiep-hdfs/ [3] https://dongquangphuong.wordpress.com/2014/02/18/hadoop-distributed-filesystem-hdfs/ [4] https://www.edureka.co/blog/apache-hadoop-hdfs-architecture/ 26 ... chất đặc trưng hệ thống phân tán so với hệ thống có máy chủ, lỗi xảy thành phần hệ thống phân tán bị hỏng Trong lỗi hệ thống máy chủ ảnh hưởng đến toàn hệ thống lỗi hệ thống phân tán ảnh hưởng... thật file c hệ thống file phân tán lên hệ thống file cục Mỗi block lưu trữ file riêng biệt hệ thống file c ục b ộ c DataNode Quản lý tiến trình 5.1 Tiến trình đọc HDFS Yêu cầu đọc liệu phục vụ HDFS, ... lỗi HDFS Tính chịu lỗi hệ thống liên quan mật thiết tới khái niệm hệ thống tin cậy, hệ thống coi đáng tin cậy đáp ứng bốn tiêu chí sau: 15 Hệ thống file phân tán HDFS - Khả sẵn sàng phục vụ hệ thống

Ngày đăng: 22/06/2021, 14:03

Từ khóa liên quan

Mục lục

  • LỜI NÓI ĐẦU

  • HỆ THỐNG FILE PHÂN TÁN HDFS

    • 1. Khái niệm

      • 1.1. Giới thiệu về Hadoop

      • 1.2. Khái niệm HDFS

      • 2. Kiến trúc

      • 3. Truyền thông

        • 3.1. Giữa Client và Namenode

        • 3.2. Giữa Client và DataNode

        • 3.3. Giữa Namenode và Datanode

        • 4. Định danh

        • 5. Quản lý tiến trình

          • 5.1. Tiến trình đọc trong HDFS

          • 5.2. Tiến trình ghi trên HDFS

          • 6. Đồng bộ hóa trong hệ thống file phân tán HDFS

          • 7. Quản lý bế tắc

            • 7.1. Về cấu trúc topology của mạng

            • 7.2. Săp xếp bản sao của các Block lên DataNode

            • 7.3. Cân bằng cluster

            • 8. Phục hồi và chịu lỗi

              • 8.1. Những lỗi HDFS thường gặp

                • 8.1.1. NameNode gặp lỗi

                • 8.1.2. DataNode bị lỗi

                • 8.1.3. HDFS lỗi phần cứng

                • 8.1.4. Metadata Disk Failure - Đĩa lưu metadata bị lỗi

                • 8.1.5. Lỗi phân mảnh mạng

                • 8.2. Phục hồi và chịu lỗi của HDFS

                  • 8.2.1. Tính sẵn sàng cao khi có sự cố của HDFS

Tài liệu cùng người dùng

Tài liệu liên quan