Tự học Hadoop - Giờ 2: Tìm hiểu về kiến trúc Hadoop cluster

Tự học Hadoop - Giờ 2: Tìm hiểu về kiến trúc Hadoop cluster

Trong bài này, bạn sẽ được giới thiệu về các xử lý liên quan đến nền tảng Hadoop và cách chúng hoạt động trong Hadoop cluster. Bạn học cách phân biệt giữa các xử lý nút master và nút slave trong kiến trúc cluster master-slave của Hadoop. Bạn cũng tìm hiểu về các phương thức triển khai khác nhau với Hadoop. Bài này cung cấp cho bạn hiểu biết mà bạn cần để triển khai Hadoop trong các bài tiếp theo

Các xử lý trong HDFS Cluster

HDFS bao gồm một tập hợp các xử lý lập trình bằng ngôn ngữ Java quản lý và sắp xếp hệ thống tệp phân tán của Hadoop. Như đã thảo luận, HDFS có thể tồn tại dưới dạng một cluster độc lập, độc lập với các xử lý khác như YARN. HDFS có kiến trúc master-slave, có nghĩa là các xử lý HDFS khác nhau, được gọi là daemon hoặc dịch vụ (service), chạy trên các nút cụm và được phân loại là nút master hoặc nút slave.

Daemon là một loại chương trình chạy trên hệ điều hành Linux hoặc Unix. Daemon chạy dưới dạng background và phản hồi các sự kiện cũng như request của clients. Daemon trong Linux tương đương với các service trong Windows

Trước khi tôi tiếp tục—có lẽ đáng để thảo luận về một số khái niệm chính liên quan đến HDFS, mà tôi sẽ làm ngay bây giờ. 

Kiến trúc Master - Slave Cluster

Master-slave là một phương thức giao tiếp theo đó một xử lý có quyền kiểm soát một hoặc nhiều xử lý khác. Trong một số hệ thống, master được chọn từ một nhóm các xử lý đủ điều kiện trong runtime hoặc trong khi xử lý, trong một số trong các trường hợp khác, chẳng hạn như HDFS, các quy trình master và slave được chỉ định trước, vai trò cụ thể trong suốt thời gian hoạt động của cluster

Tệp, Khối và Siêu dữ liệu

Tôi sẽ trình bày chi tiết hơn về HDFS trong Bài 4, “Tìm hiểu về Hệ thống tệp phân tán Hadoop (HDFS)”. Tuy nhiên, tôi cần giải thích một số khái niệm HDFS ở cấp độ chi tiết trong bài này. Chúng bao gồm các tệp, khối và siêu dữ liệu (metadata). HDFS là một hệ thống tệp ảo trong đó các tệp bao gồm các khối được phân phối trên một hoặc nhiều nút của cluster. Các tệp được phân chia bừa bãi theo kích thước khối được định cấu hình khi tải dữ liệu lên hệ thống tệp, một quá trình được xem như là việc nhập. Sau đó, các khối được phân phối và nhân rộng trên các nút cluster để đạt được khả năng chịu lỗi và các cơ hội bổ sung để xử lý dữ liệu cục bộ (nhớ lại mục tiêu thiết kế là “đưa tính toán vào dữ liệu”).

NameNode

NameNode là xử lý nằm ở Master HDFS quản lý siêu dữ liệu (metadata) hệ thống tệp. NameNode giữ siêu dữ liệu trong bộ nhớ thường trú để phục vụ các yêu cầu đọc và ghi của client một cách hiệu quả. NameNode cũng chịu trách nhiệm đảm bảo độ bền và tính nhất quán của metadata của hệ thống tệp mà nó thực hiện thông qua các chức năng ghi nhật ký—tất cả sẽ được đề cập chi tiết trong Bài 4. Bây giờ, bạn chỉ cần biết rằng NameNode là một quy trình bắt buộc cần thiết để HDFS hoạt động.

Tất cả các xử lý máy chủ Hadoop (daemon) đều hỗ trợ giao diện người dùng web (UI). NameNode hỗ trợ giao diện người dùng trên máy chủ đang chạy trình nền NameNode, như hình

SecondaryNameNode và Standby Namenode

SecondaryNameNode và Standby NameNode là cácxử lý tùy chọn đẩy nhanh quá trình khôi phục metadata hệ thống tệp hoặc cung cấp xử lý chuyển đổi dự phòng trong trường hợp xảy ra lỗi NameNode. Xin nhắc lại, đây là những xử lý mà tôi sẽ trình bày chi tiết trong Bài 4—hiện tại, bạn chỉ cần hiểu rằng chúng là các xử lý daemon của nút master HDFS

DataNode Daemons

DataNode là một daemon slave node HDFS chạy trên một hoặc nhiều nút của cluster HDFS. DataNodes chịu trách nhiệm quản lý bộ nhớ khối và quyền truy cập cho cả việc đọc hoặc ghi dữ liệu cũng như sao chép khối, đây là một phần của xử lý nhập dữ liệu

Tổng quan HDFS Cluster

Một clusster Hadoop điển hình bao gồm một NameNode, một trong số Standby NameNode hoặc SecondaryNameNode—mặc dù những thứ này không bắt buộc—và nhiều DataNode

Tôi sẽ đề cập đến một số chế độ triển khai thay thế sau trong giờ này, trong đó thành phần và vị trí của các dịch vụ có thể khác nhau, nhưng Hình sau thể hiện các daemon tham gia vào một cluster HDFS điển hình

YARN Cluster

YARN chi phối và điều phối việc xử lý dữ liệu trong Hadoop, thường là dữ liệu được lấy ra và ghi vào HDFS. Tôi sẽ cung cấp phần sơ lược về YARN tại đây với mục đích giới thiệu các xử lý liên quan đến YARN cluster. Tuy nhiên, YARN sẽ được đề cập chi tiết hơn nhiều trong Bài 6, "Tìm hiểu về Xử lý dữ liệu trong Hadoop."

Kiến trúc YARN cluster là một khung cluster master-slave giống như HDFS, với ứng dụng nền nút master được gọi là Trình quản lý tài nguyên (ResourceManagers) và một hoặc nhiều trình tiện ích slave được gọi là NodeManagers chạy trên các worker hoặc nút slave trong cluster. Bây giờ hãy giới thiệu những thứ này.

ResourceManager

ResourceManager chịu trách nhiệm cấp tài nguyên cho các ứng dụng chạy trên cluster. Tài nguyên được cấp trong các đơn vị được gọi là bộ chứa (container), là sự kết hợp được xác định trước gồm CPU và bộ nhớ. Việc phân bổ vùng chứa, bao gồm ngưỡng tối thiểu và tối đa, có thể định cấu hình trên cluster. Tôi sẽ đề cập cụ thể đến cấu hình trong Bài 20, “Tìm hiểu cấu hình cluster nâng cao”. Tuy nhiên, các tùy chọn cấu hình và cấu hình nói chung sẽ được đề cập một xuyên suốt.

ResourceManager cũng theo dõi dung lượng khả dụng trên cluster khi các ứng dụng kết thúc và giải phóng tài nguyên dành riêng của chúng cũng như trạng thái của các ứng dụng đang chạy trên cluster. Tương tự như NameNode, ResourceManager phục vụ giao diện người dùng web trên cổng 8088 của máy chủ chạy xử lý nền này, rất hữu ích để hiển thị trạng thái của các ứng dụng đang chạy, hoàn tất hoặc lỗi trên cluster, như thể hiện trong Hình

Các máy client gửi ứng dụng tới ResourceManager, ResourceManager sau đó phân bổ vùng chứa đầu tiên trên một NodeManager có sẵn trong cụm dưới dạng xử lý ủy quyền cho ứng dụng được gọi là ApplicationMaster và sau đó, ApplicationMaster sẽ thương lượng tất cả các vùng chứa tiếp theo cần thiết để chạy ứng dụng. Tôi sẽ thảo luận thêm về quá trình phân bổ và "đàm phán" này sau.

NodeManager Daemons

NodeManager là daemon YARN của nút slave quản lý các vùng chứa (container) trên máy chủ của nút slave. Các vùng chứa thực thi các tác vụ liên quan đến một ứng dụng. Vì cách tiếp cận của Hadoopđể giải quyết các vấn đề lớn là “chia để trị”, nên một vấn đề lớn được phân tách thành một tập hợp các tác vụ, nhiều tác vụ trong số đó có thể chạy song song—nhớ lại khái niệm không chia sẻ gì. Các tác vụ này được chạy trong các vùng chứa (container) trên các máy chủ đang chạy xử lý NodeManager

The ApplicationMaster

Như đã thảo luận, ApplicationMaster là vùng chứa đầu tiên được cấp phát bởi ResourceManager để chạy trên một NodeManager cho một ứng dụng. Công việc của nó là lập kế hoạch cho ứng dụng, bao gồm xác định tài nguyên nào được yêu cầu—thường dựa trên lượng dữ liệu đang được xử lý—và tìm nguồn cung ứng cho các giai đoạn ứng dụng (ví dụ: bản đồ và các giai đoạn rút gọn của ứng dụng MapReduce mà bạn sẽ tìm hiểu về trong các bài sau). ApplicationMaster yêu cầu các tài nguyên này từ ResourceManager thay mặt cho ứng dụng. Trình quản lý tài nguyên cấp tài nguyên trên cùng một hoặc các NodeManager khác cho ApplicationMaster, để sử dụng trong vòng đời của ứng dụng cụ thể. ApplicationMaster cũng theo dõi tiến trình của các tác vụ, các giai đoạn (nhóm tác vụ có thể được thực hiện song song) và các phần phụ thuộc. Thông tin tóm tắt được cung cấp cho ResourceManager để hiển thị trong giao diện người dùng của nó như được hiển thị trước đó

Tổng quan YARN Cluster

Hãy nhớ lại rằng YARN là một cluster độc lập và có thể được triển khai dưới dạng một cluster đầy đủ chức năng mà không cần HDFS. YARN hỗ trợ chế độ triển khai có tính sẵn sàng cao, trong đó ResourceManager có chế độ chờ để sử dụng trong trường hợp xảy ra lỗi hệ thống. Đây là tùy chọn, tuy nhiên. Kiến trúc master-slave YARN và các xử lý cluster được mô tả trong Hình

Kiến trúc cluster Hadoop và tùy chọn triển khai

Bạn đã xem qua thành phần và cấu trúc phân cấp của cả cụm HDFS và YARN. Bây giờ chúng ta sẽ xem xét chúng cùng nhau như một phần của toàn bộ cluster Hadoop

Kiến trúc Hadoop cluster

Khi bạn kết hợp cả hai hệ thống con cốt lõi, bạn có một cụm Hadoop như trong hình. Thông thường, bạn sẽ lưu trữ NameNode và ResourceManager trên các máy chủ riêng biệt. Bạn cũng có thể chọn lưu trữ các xử lý Standby NameNode hoặc ResourceManager—nếu được triển khai—trên các máy chủ riêng biệt.

Lưu ý rằng các xử lý slave notde của Hadoop (DataNode và NodeManager) được đặt cùng vị trí. Điều này giúp tối ưu cho dữ liệu cục bộ

Tùy chọn triển khai

Hadoop hỗ trợ ba chế độ triển khai khác nhau. Chúng ta sẽ thảo luận về những điều này ngay bây giờ

Fully Distributed Mode

Chế độ này triển khai các xử lý nút slave trên các máy chủ khác với các xử lý nút master. Hình trên là một ví dụ về cluster Hadoop được phân phối đầy đủ. Có hoán vị cho chế độ triển khai này; chẳng hạn, một máy chủ có thể chạy cả ứng dụng nền NameNode và ResourceManager với một hoặc nhiều máy chủ chạy cả trình nền DataNode và NodeManager. Chế độ này là chế độ triển khai điển hình cho các hệ thống sản xuất

Pseudo-Distributed Mode

Chế độ này gồm có tất cả các daemon Hadoop, là các xử lý Java, chạy trong các Máy ảo Java (JVM) riêng biệt trên một máy chủ duy nhất để mô phỏng cách hoạt động của một cụm phân tán đầy đủ. Chế độ nàyi rất hữu ích để thử nghiệm khi bạn cần mô phỏng tương tác sẽ xảy ra trong một production cluster điển hình trong khi chỉ sử dụng một máy duy nhất. Nhiều môi trường sandbox hoặc quick-start được cung cấp bởi các nhà phân phối Hadoop thương mại khác nhau là các máy ảo có phiên bản Hadoop chạy ở chế độ giả phân phối. Hình 2.6 cho thấy một ví dụ về cụm Hadoop đang chạy ở chế độ ảo

LocalJobRunner Mode

Chế độ LocalJobRunner chạy tất cả các thành phầnmap-reduce trong một JVM. Tôi sẽ đề cập đến map-reduce trong Bài 7, "Lập trình các ứng dụng MapReduce", nhưng LocalJobRunner cho phép các nhà phát triển map reduce tích hợp với IDE (Môi trường phát triển tích hợp) như Eclipse và để có thể thực hiện các unit test và debug, tracing trong môi trường này. LocalJobRunner sử dụng hệ thống tệp cục bộ thay vì HDFS làm hệ thống tệp của nó.

Tóm tắt

Trong bài này, bạn đã tìm hiểu thêm về các xử lý lõi bao gồm clusterHadoop, daemon (hoặc service) và các xử lý liên quan đến hoạt động của hệ thống con HDFS và YARN. Cluster HDFS quản lý và điều phối hệ thống tệp phân tán của Hadoop và bao gồm xử lý NameNode—quản lý metadata của hệ thống tệp—và một hoặc nhiều xử lý DataNode chạy trên các máy chủ khác nhau—quản lý khối lưu trữ, truy cập và sao chép. Một cluster YARN quản lý lập lịch quy trình cho các ứng dụng chạy trên nền tảng Hadoop bao gồm một quy trình ResourceManager—xử lý này quản lý và phân bổ các tài nguyên xử lý trong toàn cluster—và một hoặc nhiều NodeManager trên các máy chủ khác nhau, thực thi các tác vụ trong một ứng dụng. Quy trình NodeManager cũng có thể lưu trữ quy trình ApplicationMaster theo yêu cầu của ResourceManager, đây là xử lý ủy quyền được tạo để yêu cầu tài nguyên và quản lý quá trình xử lý cho một ứng dụng

Bạn đã học được sự khác biệt giữa các xử lý của nút master và nút slave cũng như cách các xử lý HDFS và YARN của nút slave (tương ứng là DataNode và NodeManager) thường được đặt cùng một vị trí để đạt được vị trí dữ liệu để xử lý nếu có thể. Cuối cùng, bạn đã tìm hiểu về các tùy chọn triển khai khác nhau có sẵn với Hadoop, bao gồm chế độ triển khai  fully distributed (có các xử lý nút master và nút slave trên các máy chủ khác nhau), chế độ triển khai pseudo-distributed (có tất cả các xử lý chạy trên một máy chủ ảo - JVM) và chế độ LocalJobRunner (chạy map-reduce trong một JVM duy nhất sử dụng hệ thống tệp cục bộ để lưu trữ). LocalJobRunner thường được sử dụng để phát triển map-reduce và unit test, trước khi chuyển sang các chế độ khác để thử nghiệm và triển khai tích hợp


Bài viết thuộc các danh mục

Bài viết được gắn thẻ



BÌNH LUẬN (0)

Hãy là người đầu tiên để lại bình luận cho bài viết !!

Hãy đăng nhập để tham gia bình luận. Nếu bạn chưa có tài khoản hãy đăng ký để tham gia bình luận với mình


Bài viết liên quan

Tự học Hadoop - Giờ 1: Bắt đầu với Hadoop

Dữ liệu lớn (Big data) và Hadoop có mối liên kết chặt chẽ với nhau. Ban đầu là một nền tảng tìm kiếm cho đến vô số ứng dụng hiện tại trải dài từ datawarehouse đến event processing đến học máy (machine learning), Hadoop đã tạo ra cuộc cách mạng về dữ liệu sâu sắc. Trong phần này chúng tôi giới thiệu về nền tảng và lịch sử phát triển Hadoop cũng như các khái niệm cốt lõi của Hadoop và các trường hợp sử dụng điển hình

Copyright © 2022. Bảo lưu tất cả quyền