1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo bttl thuộc nghiên cứu hadoop ứng dụng xử lý song song bài toán đếm từ

26 0 0

Đ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

Nội dung

Cung cấp 3 giải pháp : ✓ Sharing File Across banch office : người dùng đi ở site nào cũng có thể truy cập các thư mục trên, và họ lưu dữ liệu trên các thư mục này thì dữ liệu sẽ được rep

lOMoARcPSD|39270902 TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI TT SAU ĐẠI HỌC BÁO CÁO BTTL THUỘC HỌC PHẦN: HỆ THỐNG PHÂN TÁN TÊN ĐỀ TÀI: NGHIÊN CỨU HADOOP ỨNG DỤNG XỬ LÝ SONG SONG BÀI TOÁN ĐẾM TỪ GVHD : TS Đỗ Mạnh Hùng K10 Đợt 2 Khóa : Hệ thống thông tin Đỗ Mạnh Quang Chuyên ngành : Chu Trọng Sơn Nguyễn Trọng Tuyển Học viên : HÀ NỘI, THÁNG 07 NĂM 2021 Downloaded by SAU DO (saudinh3@gmail.com) lOMoARcPSD|39270902 MỤC LỤC I GIỚI THIỆU VỀ HỆ THỐNG PHÂN TÁN 3 PHẦN 1 TỔNG QUAN VỀ HỆ THỐNG PHÂN TÁN 3 PHẦN 2 GIẢI PHÁP HỆ PHÂN TÁN HADOOP 4 II HỆ THỐNG PHÂN TÁN HADOOP 5 PHẦN 3 KIẾN TRÚC HADOOP 5 PHẦN 4 HADOOP MAPREDUCE 5 A Mô hình Hadoop MapReduce 5 B Thuật toán MapReduce 7 PHẦN 5 HADOOP DISTRIBUTED FILE SYSTEM (HDFS) 12 C Đặc điểm của HDFS 12 D Kiến trúc HDFS 12 E Đọc file trên HDFS 14 F Ghi file trên HDFS 15 PHẦN 6 MÔ HÌNH THAY THẾ KHI GẶP SỰ CỐ (HA) 16 G NameNode Availability 17 H Kiến trúc HDFS HA 17 PHẦN 7 KIẾN TRÚC HOẠT ĐỘNG XỬ LÝ PHÂN TÁN HADOOP 18 I Tiến trình 1: 18 J Tiến trình 2: 18 K Tiến trình 3: 19 III ỨNG DỤNG BÀI TOÁN ĐẾM TỪ 20 PHẦN 8 THIẾT LẬP HỆ THỐNG HADOOP 20 PHẦN 9 XỬ LÝ PHÂN TÁN TRÊN HADOOP 21 IV KẾT LUẬN 23 V TÀI LIỆU THAM KHẢO 24 VI PHỤ LỤC 25 2 Downloaded by SAU DO (saudinh3@gmail.com) lOMoARcPSD|39270902 I GIỚI THIỆU VỀ HỆ THỐNG PHÂN TÁN PHẦN 1 TỔNG QUAN VỀ HỆ THỐNG PHÂN TÁN Hệ Thống Tập Tin Phân Tán (Distributed File System) là một giải pháp cho phép người quản trị tập trung các dữ liệu nằm rời rạc trên các file server về một thư mục chung và thực hiện các tính năng replicate nhằm đảm bảo dữ liệu luôn sẵn sang khi có sự cố về file server Bao gồm 2 tính năng : DFS Namespace và DFS Replication Cung cấp 3 giải pháp : ✓ Sharing File Across banch office : người dùng đi ở site nào cũng có thể truy cập các thư mục trên, và họ lưu dữ liệu trên các thư mục này thì dữ liệu sẽ được replicate qua các site khác, nhờ vào DFS Replication ✓ Data collection : dữ liệu của các file server ở chi nhánh sẽ được replicate tới văn phòng chính hoặc data center, điều này giúp tập trung các dữ liệu về một nơi duy nhất Sau đó người quản trị ở văn phòng chính sẽ dùng các giải pháp backup để sao lưu toàn bộ dữ liệu ✓ Data distribution : kết hợp DFS Namespace và DFS Replication cho các thư mục như Software, Trainning, Document, Project Người dùng sẽ dễ dàng truy cập và tăng độ sẵn sàng khi có sự cố xảy ra (nhờ vào tính năng DFS Replication), khi người dùng không truy cập được tới DFS Server trong Site của họ, thì hệ thống sẽ tự redirect người dùng qua DFS Server của Site khác Dữ liệu vẫn đầy đủ Hình 1: Mô tả hệ thống phân tán 3 Downloaded by SAU DO (saudinh3@gmail.com) lOMoARcPSD|39270902 PHẦN 2 GIẢI PHÁP HỆ PHÂN TÁN HADOOP Hadoop là một khuôn khổ cho phép xử lý phân tán các tập dữ liệu lớn trên các cụm máy tính bằng cách sử dụng các mô hình lập trình đơn giản Hadoop được thiết kế để mở rộng quy mô từ các máy chủ đơn lẻ lên hàng nghìn máy, mỗi máy đều cung cấp khả năng tính toán và lưu trữ cục bộ Thay vì dựa vào phần cứng để cung cấp tính khả dụng cao, bản thân thư viện được thiết kế để phát hiện và xử lý các lỗi ở lớp ứng dụng, do đó, việc cung cấp dịch vụ có tính khả dụng cao trên đầu một cụm máy tính, mỗi máy tính đều có thể dễ bị lỗi Hadoop bao gồm các thành phần sau: • Hadoop Common : Các tiện ích phổ biến hỗ trợ các mô-đun Hadoop khác • Hệ thống tệp phân tán Hadoop (HDFS) : Hệ thống tệp phân tán cung cấp quyền truy cập thông lượng cao vào dữ liệu ứng dụng • Hadoop YARN : Một khuôn khổ để lập lịch công việc và quản lý tài nguyên cụm • Hadoop MapReduce : Một hệ thống dựa trên YARN để xử lý song song các tập dữ liệu lớn • Hadoop Ozone : Một kho lưu trữ đối tượng cho Hadoop Hình 2: Lịch sử phát triển của Hadoop 4 Downloaded by SAU DO (saudinh3@gmail.com) lOMoARcPSD|39270902 II HỆ THỐNG PHÂN TÁN HADOOP PHẦN 3 KIẾN TRÚC HADOOP Hadoop gồm 4 module chính: • Hadoop Common: Đây là các thư viện và tiện ích cần thiết của Java để các module khác sử dụng Những thư viện này cung cấp hệ thống file và lớp OS trừu tượng, đồng thời chứa các mã lệnh Java để khởi động Hadoop • Hadoop YARN: Đây là framework để quản lý tiến trình và tài nguyên của các cluster • Hadoop Distributed File System (HDFS): Đây là hệ thống file phân tán cung cấp truy cập thông lượng cao cho ứng dụng khai thác dữ liệu • Hadoop MapReduce: Đây là hệ thống dựa trên YARN dùng để xử lý song song các tập dữ liệu lớn Hình 3: Kiến trúc Hadoop v1.0 và v2.0 PHẦN 4 HADOOP MAPREDUCE A Mô hình Hadoop MapReduce Hadoop MapReduce : là một đơn vị của công việc mà client muốn được thực hiện: nó bao gồm dữ liệu đầu vào, chương trình MapReduce, và thông tin cấu hình Hadoop chạy các công việc (job) này bằng cách chia nó thành các nhiệm vụ (task), trong đó có hai kiểu chính là : các nhiệm vụ map (map task) và các nhiệm vụ reduce (reduce task) 5 Downloaded by SAU DO (saudinh3@gmail.com) lOMoARcPSD|39270902 Có hai loại node điều kiển quá trình thực hiện công việc (job): một jobtracker và một số tasktracker Jobtracker kết hợp tất cả các công việc trên hệ thống bằng cách lập lịch công việc chạy trên các tasktracker Tasktracker chạy các nhiệm vụ (task) và gửi báo cáo thực hiện cho jobtracker, cái lưu giữ các bản ghi về quá trình xử lý tổng thể cho mỗi công việc (job) Hadoop chia đầu vào cho mỗi công việc MapReduce vào các mảnh (piece) có kích thước cố định gọi là các input split hoặc là các split Hadoop tạo ra một task map cho mỗi split, cái chạy mỗi nhiệm vụ map do người sử dụng định nghĩa cho mỗi bản ghi (record) trong split Có rất nhiều các split , điều này có nghĩa là thời gian xử lý mỗi split nhỏ hơn so với thời gian xử lý toàn bộ đầu vào Vì vậy, nếu chúng ta xử lý các split một cách song song, thì quá trình xử lý sẽ tốt hơn cân bằng tải, nếu các split nhỏ, khi đó một chiếc máy tính nhanh có thể xử lý tương đương nhiều split trong quá trình thực hiện công việc hơn là một máy tính chậm Ngay cả khi các máy tính giống hệt nhau, việc xử lý không thành công hay các công việc khác đang chạy đồng thời làm cho cần bằng tải như mong muốn, và chất lượng của cân bằng tải tăng như là chia các splits thành các hạt mịn hơn Mặt khác, nếu chia tách quá nhỏ, sau đó chi phí cho việc quản lý các split và của tạo ra các map task bắt đầu chiếm rất nhiều tổng thời gian của quá trình xử lý công việc Đối với hầu hết công việc, kích thước split tốt nhất thường là kích thước của một block của HDFS, mặc định là 64MB, mặc dù nó có thể thay đổi được cho mỗi cluster ( cho tất cả các file mới được tạo ra) hoặc định rõ khi mỗi file được tạo ra Hadoop làm tốt nhất các công việc của nó chạy các map task trên một node khi mà dữ liệu đầu vào của nó cư trú ngay trong HDFS Nó được gọi là tối ưu hóa dữ liệu địa phương Bây giờ chúng ta sẽ làm rõ tại sao kích thước split tối ưu lại bằng kích thước của block: nó là kích thước lớn nhất của một đầu vào mà có thể được đảm bảo để được lưu trên một node đơn Nếu split được chia thành 2 block, nó sẽ không chắc là bất cứ node HDFS nào lưu trữ cả hai block, vì vậy một số split phải được chuyển trên mạng đến node chạy map tast, như vậy rõ ràng là sẽ ít hiệu quả hơn việc chạy toàn bộ map task sử dụng dữ liệu cục bộ Các map task ghi đầu ra của chúng trên đĩa cục bộ, không phải là vào HDFS Tại sao lại như vậy? Đầu ra của map là đầu ra trung gian, nó được xử lý bởi reduce task để tạo ra đầu ra cuối cùng , và một khi công việc được hoàn thành đầu ra của map có thể được bỏ đi Vì vậy việc lưu trữ nó trong HDFS, với các nhân bản, là không cần thiết Nếu các node chạy maptask bị lỗi trước khi đầu ra map đã được sử dụng bởi một reduce task, khi đó Hadoop sẽ tự động chạy lại map task trên một node khác để tạo ra một đầu ra map Khi “chạy Hadoop” có nghĩa là chạy một tập các trình nền - daemon, hoặc các chương trình thường trú, trên các máy chủ khác nhau trên mạng của bạn Những trình 6 Downloaded by SAU DO (saudinh3@gmail.com) lOMoARcPSD|39270902 nền có vai trò cụ thể, một số chỉ tồn tại trên một máy chủ, một số có thể tồn tại trên nhiều máy chủ Các daemon bao gồm: • NameNode • DataNode • SecondaryNameNode • JobTracker • TaskTracker Hình 4: Hoạt động của Hadoop MapReduce B Thuật toán MapReduce Giới thiệu: • Sáng lập: Các kỹ sư Google • Khái niệm: MapReduce là một mô hình lập trình và triển khai các vấn để xử lý trong Dữ liệu lớn Sử dụng thuật toán xử lý phân tán, song song trên một cụm các máy tính • Chương trình MapReduce bao gồm 2 phần chính : Map & Reduce 7 Downloaded by SAU DO (saudinh3@gmail.com) lOMoARcPSD|39270902 • Hệ thống MapReduce (còn gọi là Cơ sở hạ tầng MapReduce) phối hợp xử lý bằng cách sắp xếp các máy chủ phân tán, chạy song song các tác vụ khác nhau, quản lý tất cả các giao tiếp và truyền dữ liệu giữa các phần khác nhau của hệ thống và hỗ trợ đề phòng sự cố và khả năng chịu lỗi • Một số dự án phát triển : Apache Hadoop (open source), Apache Mahout (ASF) Chương trình MapReduce(Programming model) • input data tương ứng với keyi / valuei & output data tương ứng với keyo / valueo • function map (in_key, in_value) -> list(out_key, intermediate_value): - Xử lý cặp keyi / valuei - Đưa ra tập hợp các cặp trung gian • function reduce (out_key, list(intermediate_value)) -> list(out_value): - Kết hợp tất cả các giá trị trung gian cho một key cụ thể - Tạo ra một tập hợp các keyo / valueo được hợp nhất (thường chỉ là một) Hình 5 Mô tả chương trình MapReduce 8 Downloaded by SAU DO (saudinh3@gmail.com) lOMoARcPSD|39270902 Hệ thống MapReduce (MapReduce System) • Map: Mỗi node(máy tính) worker áp dụng hàm Map() cho dữ liệu cục bộ và ghi đầu ra vào bộ lưu trữ tạm thời Node master đảm bảo rằng chỉ một bản sao của dữ liệu input được xử lý • Shuffle : các node worker phân phối lại dữ liệu dựa trên các key output (được tạo bởi hàm Map()), sao cho tất cả dữ liệu thuộc về một key được đặt trên cùng một node worker • Reduce : các node worker thực hiện xử lý song song từng nhóm dữ liệu output trên mỗi key Hình 6: Mô tả kiến trúc MapReduce Ví dụ bài toán wordcount: Nào chúng ta cùng đến với ví dụ kinh điển trong bài toán xử lý phân tán, song song đó là WordCount • Ý tưởng thực hiện : - Chia file cần xử lý thành các phần nhỏ để xử lý - Xử lý các phần nhỏ được lưu phân tán độc lập trên các node và song song trên một cụm - Tổng hợp các kết quả thu được để đưa ra kết quả cuối cùng 9 Downloaded by SAU DO (saudinh3@gmail.com) lOMoARcPSD|39270902 Hình 7: Mô tả quá trình xử lý bài toán word count Mã giải thuật toán : function map(String input_key, String input_value): // input_key: document name // input_value: document contents for each word w in input_value: EmitIntermediate(w, "1"); function reduce(String output_key, Iterator intermediate_values): // output_key: a word // output_values: a list of counts int result = 0; for each v in intermediate_values: result += ParseInt(v); Emit(AsString(result)); 10 Downloaded by SAU DO (saudinh3@gmail.com) lOMoARcPSD|39270902 PHẦN 5 HADOOP DISTRIBUTED FILE SYSTEM (HDFS) Khi kích thước của tập dữ liệu vượt quá khả năng lưu trữ của một máy tính, tất yếu sẽ dẫn đến nhu cầu phân chia dữ liệu lên trên nhiều máy tính Các hệ thống tập tin quản lý việc lưu trữ dữ liệu trên một mạng nhiều máy tính gọi là hệ thống tập tin phân tán HDFS ra đời trên nhu cầu lưu trữ giữ liệu của Nutch, một dự án Search Engine nguồn mở, và phát triển để đáp ứng các đòi hỏi về lưu trữ và xử lý của các hệ thống xử lý dữ liệu lớn với các đặc thù riêng Do đó, các nhà phát triển HDFS đã xem xét lại các kiến trúc phân tán trước đây và nhận ra các sự khác biệt trong mục tiêu của HDFS so với các hệ thống file phân tán truyền thống án C Đặc điểm của HDFS • HDFS sẽ chạy trên các cluster có hàng trăm thậm chí hàng ngàn node Các phần cứng này được xây dựng nên từ các phần cứng thông thường, giá rẻ, tỷ lệ lỗi cao Do chất lượng phần cứng như vậy sẽ dẫn đến tỷ lệ lỗi cao trên cluster Vì thế khả năng phát hiện lỗi, chống chịu lỗi, tự phục hồi phải được tích hợp vào trong hệ thống HDFS • Kích thước file sẽ lớn hơn nhiều so với chuẩn truyền thống, các file có kích thước hàng GB sẽ trở nên phổ biến Khi làm việc với dữ liệu có kích cỡ nhiều TB, thì ít khi nào người ta lại chọn việc quản lý hàng tỷ file có kích thước KB Việc chia dữ liệu thành một ít file có kích cỡ lớn sẽ tối ưu hơn, do việc này giúp giảm thời gian truy xuất dữ liệu và đơn giản hóa việc quản lý tập tin • HDFS không phải là một hệ thống file dành cho các mục đích chung HDFS được thiết kế dành cho các ứng dụng dạng xử lý khối (batch processing) Do đó, các file trên HDFS một khi được tạo ra, ghi dữ liệu và đóng lại thì không thể bị chỉnh sữa được nữa Điều này làm đơn giản hoá đảm bảo tính nhất quán của dữ liệu và cho phép truy cập dữ liệu với thông lượng cao D Kiến trúc HDFS Giống như các hệ thống file khác, HDFS duy trì một cấu trúc cây phân cấp các file, thư mục mà các file sẽ đóng vai trò là các node lá Trong HDFS, mỗi file sẽ được chia ra làm một hay nhiều block và mỗi block này sẽ có một block ID để nhận diện Các block của cùng một file (trừ block cuối cùng) sẽ có cùng kích thước và kích thước này được gọi là block size của file đó Mỗi block của file sẽ được lưu trữ thành ra nhiều bản sao (replica) khác nhau vì mục đích an toàn dữ liệu 12 Downloaded by SAU DO (saudinh3@gmail.com) lOMoARcPSD|39270902 HDFS có một kiến trúc master/slave Trên một cluster chạy HDFS, có hai loại node là Namenode và Datanode Một cluster có duy nhất một Namenode và có một hay nhiều Datanode Namenode đóng vai trò là master, chịu trách nhiệm duy trì thông tin về cấu trúc cây phân cấp các file, thư mục của hệ thống file và các metadata khác của hệ thống file Cụ thể, các Metadata mà Namenode lưu trữ gồm có: • File System Namespace: là hình ảnh cây thư mục của hệ thống file tại một thời điểm nào đó File System Namespace thể hiện tất các các file, thư mục có trên hệ hống file và quan hệ giữa chúng • Thông tin để ánh xạ từ tên file ra thành danh sách các block: với mỗi file, ta có một danh sách có thứ tự các block của file đó, mỗi Block đại diện bởi Block ID • Nơi lưu trữ các block: các block được đại diện một Block ID Với mỗi block ta có một danh sách các DataNode lưu trữ các bản sao của block đó Các DataNode sẽ chịu trách nhiệm lưu trữ các block thật sự của từng file của hệ thống file phân tán lên hệ thống file cục bộ của nó Mỗi một block sẽ được lưu trữ như là một file riêng biệt trên hệ thống file cục bộ của DataNode Hình 10: Kiến trúc HDFS 13 Downloaded by SAU DO (saudinh3@gmail.com) lOMoARcPSD|39270902 Namenode sẽ chịu trách nhiệm điều phối các thao tác truy cập (đọc/ghi dữ liệu) của client lên hệ thống HDFS Và tất nhiên, do các DataNode là nơi thật sự lưu trữ các block của các file trên HDFS, nên chúng sẽ là nơi trực tiếp đáp ứng các thao tác truy cập này Chẳng hạn như khi client của hệ thống muốn đọc một file trên hệ thống HDFS, client này sẽ thực hiện một request (thông qua RPC) đến Namenode để lấy các metadata của file cần đọc Từ metadata này nó sẽ biết được danh sách các block của file và vị trí của các DataNode chứa các bản sao của từng block Client sẽ truy cập vào các DataNode để thực hiện các request đọc các block Namenode thực hiện nhiệm vụ của nó thông qua một daemon tên namenode chạy trên port 8021 Mỗi DataNode server sẽ chạy một daemon datanode trên port 8022 Định kỳ, mỗi DataNode sẽ báo cáo cho NameNode biết về danh sách tất cả các block mà nó đang lưu trữ, NameNode sẽ dựa vào những thông tin này để cập nhật lại các metadata trong nó Cứ sau mỗi lần cập nhật lại như vậy, metadata trên NameNode sẽ đạt được tình trạng thống nhất với dữ liệu trên các DataNode Toàn bộ trạng thái của metadata khi đang ở tình trạng thống nhất này được gọi là một checkpoint Metadata ở trạng thái checkpoint sẽ được dùng để nhân bản metadata dùng cho mục đích phục hồi lại NameNode nếu NameNode bị lỗi Hình 11: Mô phỏng HDFS E Đọc file trên HDFS Đầu tiên, client sẽ mở file cần đọc bằng cách gửi yêu cầu đọc file đến NameNode Sau đó NameNode sẽ thực hiện một số kiểm tra xem file được yêu cầu đọc có tồn tại không, hoặc file cần đọc có đang ở trạng thái “khoẻ mạnh” hay không Nếu mọi thứ đều ổn, NameNode sẽ gửi danh sách các block (đại diện bởi Block ID) của file cùng với địa chỉ các DataNode chứa các bản sao của block này 14 Downloaded by SAU DO (saudinh3@gmail.com) lOMoARcPSD|39270902 Tiếp theo, client sẽ mở các kết nối tới DataNode, thực hiện một RPC để yêu cầu nhận block cần đọc và đóng kết nối với DataNode Lưu ý là với mỗi block ta có thể có nhiều DataNode lưu trữ các bản sao của block đó Client sẽ chỉ đọc bản sao của block từ DataNode “gần” nhất Client sẽ thực hiện việc đọc các block lặp đi lăp lại cho đến khi block cuối cùng của file được đọc xong Quá trình client đọc dữ liệu từ HDFS sẽ transparent với người dùng hoặc chương trình ứng dụng client, người dùng sẽ dùng một tập API của Hadoop để tương tác với HDFS, các API này che giấu đi quá trình liên lạc với NameNode và kết nối các DataNode để nhận dữ liệu Hình 12: Mô tả quá trình đọc file trên HDFS F Ghi file trên HDFS Đầu tiên, client sẽ gửi yêu cầu đến NameNode tạo một file entry lên File System Namespace File mới được tạo sẽ rỗng, tức chưa có một block nào Sau đó, NameNode sẽ quyết định danh sách các DataNode sẽ chứa các bản sao của file cần gì và gửi lại cho client Client sẽ chia file cần gì ra thành các block, và với mỗi block client sẽ đóng gói thành một packet Lưu ý là mỗi block sẽ được lưu ra thành nhiều bản sao trên các DataNode khác nhau (tuỳ vào chỉ số độ nhân bản của file) Client gửi packet cho DataNode thứ nhất, DataNode thứ nhất sau khi nhận được packet sẽ tiến hành lưu lại bản sao thứ nhất của block Tiếp theo DataNode thứ nhất sẽ gửi packet này cho DataNode thứ hai để lưu ra bản sao thứ hai của block Tương tự DataNode thứ hai sẽ gửi packet cho DataNode thứ ba Cứ như vậy, các DataNode cũng lưu các bản sao của một block sẽ hình thành một ống dẫn dữ liệu data pipe 15 Downloaded by SAU DO (saudinh3@gmail.com) lOMoARcPSD|39270902 Sau khi DataNode cuối cùng nhận thành được packet, nó sẽ gửi lại cho DataNode thứ hai một gói xác nhận rằng đã lưu thành công Và gói thứ hai lại gửi gói xác nhận tình trạng thành công của hai DataNode về DataNode thứ nhất Client sẽ nhận được các báo cáo xác nhận từ DataNode thứ nhất cho tình trạng thành công của tất cả DataNode trên data pipe Nếu có bất kỳ một DataNode nào bị lỗi trong quá trình ghi dữ liệu, client sẽ tiến hành xác nhận lại các DataNode đã lưu thành công bản sao của block và thực hiện một hành vi ghi lại block lên trên DataNode bị lỗi Sau khi tất cả các block của file đều đã đươc ghi lên các DataNode, client sẽ thực hiên một thông điệp báo cho NameNode nhằm cập nhật lại danh sách các block của file vừa tạo Thông tin Mapping từ Block ID sang danh sách các DataNode lưu trữ sẽ được NameNode tự động cập nhật bằng các định kỳ các DataNode sẽ gửi báo cáo cho NameNode danh sách các block mà nó quản lý Hình 13: Mô tả quá trình ghi file trên HDFS PHẦN 6 MÔ HÌNH THAY THẾ KHI GẶP SỰ CỐ (HA) Giới thiệu về High Availability Cluster: Khái niệm Cluster có tính sẵn sàng cao (High Availability Cluster) đã được giới thiệu trong Hadoop 2.x để giải quyết vấn đề thất bại duy nhất trong Hadoop 1.x Như bạn đã biết từ bài viết trước của tôi là Kiến trúc HDFS tuân theo Cấu trúc liên kết Master / Slave trong đó NameNode hoạt động như một trình nền chính và chịu trách nhiệm quản lý các nút phụ khác được gọi là DataNodes 16 Downloaded by SAU DO (saudinh3@gmail.com) lOMoARcPSD|39270902 Master Daemon hoặc NameNode duy nhất này trở thành nút cổ chai Mặc dù, việc giới thiệu NameNode thứ cấp đã ngăn chúng ta khỏi mất dữ liệu và giảm tải một số gánh nặng của NameNode, nhưng nó không giải quyết được vấn đề về tính khả dụng của NameNode G NameNode Availability Nếu bạn xem xét cấu hình tiêu chuẩn của HDFS cluster, NameNode sẽ trở thành một điểm lỗi duy nhất Điều này xảy ra vì thời điểm NameNode không khả dụng, toàn bộ cluster sẽ không khả dụng cho đến khi ai đó khởi động lại NameNode hoặc mang đến một cái mới Các lý do không sẵn sàng của NameNode có thể là: • Một sự kiện được lên kế hoạch như công việc bảo trì như đã nâng cấp phần mềm hoặc phần cứng • NameNode cũng có thể là do một sự kiện ngoài ý muốn khi NameNode gặp sự cố vì một số lý do nào đó Trong mỗi trường hợp trên, chúng ta có thời gian chết (Down time) mà chúng ta không thể sử dụng HDFS Cluster, chính vì thế đây là một thách thức lớn H Kiến trúc HDFS HA Chúng ta hãy hiểu rằng HDFS HA Architecture đã giải quyết vấn đề quan trọng này về tính khả dụng của NameNode: Kiến trúc HA đã giải quyết vấn đề về tính khả dụng của NameNode bằng cách cho phép chúng ta có hai NameNode trong cấu hình active/passive Vì vậy, chúng tôi có hai NameNodes đang chạy cùng một lúc trong High Availability cluster: • Active NameNode • Standby/Passive NameNode Nếu một NameNode bị hỏng, NameNode khác có thể đảm nhận trách nhiệm và do đó, giảm thời gian Down time NameNode dự phòng phục vụ mục đích (không giống như NameNode phụ) kết hợp các khả năng chuyển đổi dự phòng cho cụm Hadoop Do đó, với StandbyNode, chúng ta có thể có chuyển đổi dự phòng tự động bất cứ khi nào một NameNode gặp sự cố (sự kiện ngoài dự kiến) hoặc chúng ta có thể có tự chuyển đổi dự phòng (được khởi tạo thủ công) trong thời gian bảo trì 17 Downloaded by SAU DO (saudinh3@gmail.com) lOMoARcPSD|39270902 Hình 14: Kiến trúc HDFS HA PHẦN 7 KIẾN TRÚC HOẠT ĐỘNG XỬ LÝ PHÂN TÁN HADOOP I Tiến trình 1: • Một user hay một ứng dụng có thể submit một job lên Hadoop (hadoop job client) với yêu cầu xử lý cùng các thông tin cơ bản: • Truyền dữ liệu lên server(input) để bắt đầu phân tán dữ liệu và đưa ra kết quả (output) • Các dữ liệu được chạy thông qua 2 hàm chính là map và reduce - Map: sẽ quét qua toàn bộ dữ liệu và phân tán chúng ra thành các dữ liệu con - Reduce: sẽ thu thập các dữ liệu con lại và sắp xếp lại chúng • Các thiết lập cụ thể liên quan đến job thông qua các thông số truyền vào J Tiến trình 2: • Hadoop job client submit job (file jar, file thực thi) và bắt đầu lập lịch làm việc(JobTracker) đưa job vào hàng đợi • Sau khi tiếp nhận yêu cầu từ JobTracker, server cha(master) sẽ phân chia công việc cho các server con(slave) Các server con sẽ thực hiện các job được giao và trả kết quả cho server cha 18 Downloaded by SAU DO (saudinh3@gmail.com) lOMoARcPSD|39270902 K Tiến trình 3: • TaskTrackers dùng để kiểm tra đảm bảo các MapReduce hoạt động bình thường và kiểm tra kết quả nhận được (quá trình output) • Khi “chạy Hadoop” có nghĩa là chạy một tập các trình nền - daemon, hoặc các chương trình thường trú, trên các máy chủ khác nhau trên mạng của bạn Những trình nền có vai trò cụ thể, một số chỉ tồn tại trên một máy chủ, một số có thể tồn tại trên nhiều máy chủ Hình 15: Kiến trúc hoạt động của Hadoop 19 Downloaded by SAU DO (saudinh3@gmail.com) lOMoARcPSD|39270902 III ỨNG DỤNG BÀI TOÁN ĐẾM TỪ PHẦN 8 THIẾT LẬP HỆ THỐNG HADOOP Môi trường: • VMware Workstation Pro 15.5 • VMmaster: 192.168.10.100 • VMslave1: 192.168.10.101 • VMslave2: 192.168.10.102 • Cấu hình máy ảo: - Operating System: 64-bit OS, Centos7 minimal • apache-hadoop-2.7.7 • java-jdk8 • Cấu hình Laptop : - Core i5-7200U CPU @ 2.5GHZ 2.71 GHZ - RAM: 8GB - Operating System: 64-bit OS, Windows 10 Pro Hình 16: Mô tả sơ đồ hệ thống phân tán Hadoop 20 Downloaded by SAU DO (saudinh3@gmail.com)

Ngày đăng: 27/03/2024, 15:57

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w