Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 90 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
90
Dung lượng
2,43 MB
Nội dung
ĐẠI HỌC ĐÀ NẴNG TRƢỜNG ĐẠI HỌC BÁCH KHOA PHAN NHỰT TÂN ỨNG DỤNG MƠ HÌNH XỬ LÝ PHÂN TÁN MAPREDUCE ĐỂ GIẢI QUYẾT BÀI TOÁN TSP LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Đà Nẵng – Năm 2018 ĐẠI HỌC ĐÀ NẴNG TRƢỜNG ĐẠI HỌC BÁCH KHOA PHAN NHỰT TÂN ỨNG DỤNG MƠ HÌNH XỬ LÝ PHÂN TÁN MAPREDUCE ĐỂ GIẢI QUYẾT BÀI TOÁN TSP Chuyên ngành: KHOA HỌC MÁY TÍNH Mã số: 60.48.01.01 LUẬN VĂN THẠC SĨ Ngƣời hƣớng dẫn: PGS.TS NGUYỄN TẤN KHÔI Đà Nẵng – Năm 2018 LỜI CAM ĐOAN Tôi xin cam đoan Những nội dung luận văn thực hướng dẫn trực tiếp PGS.TS Nguyễn Tấn Khôi Mọi tham khảo dùng luận văn trích dẫn rõ ràng trung thực tên tác giả, tên cơng trình, thời gian địa điểm công bố Mọi chép không hợp lệ, vi phạm quy chế đào tạo, tơi xin chịu hồn toàn trách nhiệm Tác giả luận văn PHAN NHỰT TÂN MỤC LỤC MỞ ĐẦU 1 Lý chọn đề tài Mục tiêu nhiệm vụ nghiên cứu Đối tượng phạm vi nghiên cứu Phương pháp nghiên cứu Ý nghĩa khoa học thực tiễn luận văn CHƢƠNG - TỔNG QUAN VỀ DỮ LIỆU LỚN VÀ BÀI TOÁN TSP 1.1 Dữ liệu lớn 1.1.1 Đặc trưng liệu lớn khác biệt với liệu truyền thống 1.1.2 Đặc trưng 5V liệu lớn 1.1.3 Sự khác biệt liệu lớn với liệu truyền thống 1.2 Các khái niệm đồ thị 1.2.1 Định nghĩa đồ thị 1.2.2 Đồ thị Hamilton 14 1.3 Bài toán người bán hàng (TSP) 14 1.3.1 Giới thiệu toán người bán hàng (TSP) 16 1.3.2 Mơ tả tốn TSP 16 1.3.3 Các thuật toán giải toán TSP 16 1.4 Kết chương 18 CHƢƠNG - XỬ LÝ PHÂN TÁN HADOOP-MAPREDUCE 19 2.1 Giới thiệu tảng Hadoop 19 2.1.1 Giới thiệu Hadoop 19 2.1.2 Lịch sử Hadoop 19 2.1.3 Các thành phần Hadoop 20 2.1.4 Ứng dụng Hadoop số công ty 21 2.1.5 Cụm máy tính Hadoop(Hadoop cluster) 22 2.2 Hệ thống file phân tán Hadoop( Hadoop Distributed File System) 23 2.2.1 Giới thiệu 23 2.2.2 Kiến trúc HDFS 24 2.3 Mơ hình tính tốn MapReduce 27 2.3.1 Giới thiệu mơ hình tính tốn MapReduce 27 2.3.2 Tổng quan mơ hình tính tốn Mapreduce 28 2.3.3 Cơ chế hoạt động MapReduce 28 2.3.4 Quá trình xử lý MapReduce 29 2.3.5 Hadoop MapReduce 31 2.4 Kết chương 33 CHƢƠNG - PHÂN TÍCH THIẾT KẾ BÀI TỐN TSP DỰA TRÊN MƠ HÌNH XỬ LÝ MAPREDUCE 34 3.1 Bài toán TSP 34 3.2 Phương pháp nhánh cận giải toán người bán hàng 34 3.2.1 Ma trận rút gọn 35 3.2.2 Phân nhánh 36 3.2.3 Chọn cạnh phân nhánh 37 3.2.4 Chọn cạnh cuối 37 3.3 Thiết kế cấu trúc liệu cài đặt thuật toán nhánh cận 37 3.3.1 Thiết kế cấu trúc liệu 37 3.3.2 Hàm rút gọn 38 3.3.3 Thủ tục phân nhánh 40 3.3.4 Thủ tục chọn cạnh phân nhánh 42 3.4 Thiết kế TSP mơ hình MapReduce 49 3.4.1 Bài toán TSP 49 3.4.2 Qui trình xử lí tốn TSP mơ hình Mapreduce 50 3.4.3 Cài đặt chạy toán TSP mơ hình MapReduce 55 3.4.4 Đánh giá kết 56 3.5 Kết chương 58 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 59 TÀI LIỆU THAM KHẢO PHỤ LỤC QUYẾT ĐỊNH GIAO ĐỀ TÀI LUẬN VĂN (bản sao) ỨNG DỤNG MƠ HÌNH XỬ LÝ PHÂN TÁN MAPREDUCE ĐỂ GIẢI QUYẾT BÀI TOÁN TSP Học viên: Phan Nhựt Tân Mã số: 60480101 Khóa: 33 Chuyên ngành: Khoa học máy tính Trƣờng Đại học Bách khoa – ĐHĐN Tóm tắt : Mơ hình xử lý phân tán MapReduce mơ hình dùng để xử lý liệu lớn nhiều cụm máy tính Trong luận văn này, tơi trình bày sở lý thuyết tổng quan mơ hình xử lý phân tán MapReduce, tổng quan liệu lớn, khác biệt liệu lớn liệu truyền thống, tốn TSP(người bán hàng) Tiếp đến, tơi tìm hiểu chi tiết hệ thống phân tán MapReduce, qui trình xử lý tốn mơ hình MapReduce, tìm hiểu hàm Map, hàm Reduce, q trình xử lí tốn TSP (người bán hàng) mơ hình MapReduce Cuối cùng, tơi xây dựng thành cơng chương trình giải tốn TSP mơ hình MapReduce cho thử nghiệm chương trình mơ hình mơ hình xử lý phân tán MapReduce nhiều hình thức khác như: Số lượng đỉnh toán, số lượng máy tính, cụm máy tính tham gia tính tốn Qua kết thử nghiệm cho thấy thời gian thực chương trình nhanh nhiều so với chương trình viết thuật toán xử lý với số đỉnh Điều thêm lần khẳng định việc ứng dụng chế xử lý phân tán MapReduce để giải tốn có liệu lớn( tốn TSP) có hiệu đắn Từ khóa : Xử lý phân tán MapReduce; toán người bán hàng; xử lý song song APPLYING DISTRIBUTED PROCESSING MODEL MAPREDUCE TO TRAVELING SALESMAN PROBLEM Student : Phan Nhut Tan Branch : Computer Science Code : 60480101 DANANG UNIVERSITY OF TECHNOLOGY Course : 33 Summary: Distributed Processing model - MapReduce is a model to solve Big Data in cluster computers In this thesis, I am going to present general theory about Distributed Processing model of MapReduce, the overall about Big Data, the difference between Big Data and Generic Data, TSP problem Furthermore, I am investigating the details in Distributed Processing model of MapReduce, processing to solve a problem in MapReduce model, investigating Map function, Reduce function, processing to solve the problem of TSP basing on MapReduce model Finally, I have successfully set up a program to solve TSP problem in MapReduce model, and run program in both Sequence model, and Distributed Processing model MapReduce in different forms: the quantity peak of problem, the quantity of processor, cluster computer participating in a process Based on experiment, time consuming for program (in Distributed Processing model) is must faster than the program written in Sequence model, with the same quantity peak of problem This experiment is confirming about the efficiency and property in applying Distributed Processing model MapReduce to solve Big Data problems (TSP problem) Keyword: Distributed Processing MapReduces; Sale problem; Parallel Processing DANH MỤC CÁC TỪ VIẾT TẮT Ý nghĩa Từ viết tắt LTĐT Lý thuyết đồ thị TSP Người bán hàng (viết tắt từ tiếng anh) MR MapReduce GFS Google File System HDFS Hadoop Distributed File System NDFS Nutch Distributed File System DANH MỤC CÁC HÌNH Số hiệu Tên hình hình Trang 1.1 Mơ tả liệu lớn 1.2 Các đặc trưng mơ hình liệu lớn 1.3 Mơ hình đồ thị 1.4 Phân loại đồ thị 1.5 Đồ thị G liên thông mạnh đồ thị G’ liên thông yếu 10 1.6 Biểu diễn đồ thị ma trận kề 11 1.7 Biểu diễn đồ thị danh sách cạnh 12 1.8 Biểu diễn đồ thị danh sách kề 13 1.9 Đồ thị Hamilton 14 1.10 Mô tả toán TSP 16 2.1 Cấu trúc thành phần Hadoop 20 2.2 Tổng quan Hadoop cluster 22 2.3 NameNode DataNode HDFS 25 2.4 Quá trình nodes đọc file HDFS 25 2.5 Quá trình nodes ghi file HDFS 26 2.6 Q trình xử lý MapReduce 29 2.7 Mơ hình làm việc công việc MapReduce 30 2.8 Mô hình làm việc hàm Map 31 2.9 Mơ hình làm việc hàm Reduce 31 2.10 Phân nhỏ liệu đầu vào 32 2.11 Sao chép chương trình 32 2.12 Thực hàm Map 32 2.13 Thực thi tác vụ Reduce 33 3.1 Mơ tả tốn TSP 34 3.2 Mơ phân nhánh tốn TSP 35 3.3 Đồ thị trọng số 38 3.4 Mơ hình tốn TSP 49 3.5 Mơ tả tốn TSP 50 3.6 Ma trận trọng số toán TSP 50 3.7 Đồ thị tốn TSP 51 Số hiệu hình Tên hình Trang 3.8 Chia toán TSP thành n thành phần 51 3.9 Giải thành phần riêng biệt toán TSP 52 3.10 Kết hợp thành phần lại với 53 3.11 Hợp tất thành phần để có kết cuối 54 3.12 Giao diện toán TSP Hadoop 55 3.13 Kết thực chương trình tốn TSP Hadoop 55 3.14 Mơ tả thời gian thực tốn 56 3.15 Mô tả khác thời gian thực đầu vào khác với hệ thống gồm một, hai năm cụm 56 3.16 Mô tả khác thời gian thực đầu vào khác với số đỉnh đồ thị gồm 500, 1000 4000 đỉnh 57 3.17 Mô tả khác thời gian thực đầu vào khác với 1, giai đoạn MapReduce 57 MỞ ĐẦU Lý chọn đề tài Trong tin học lý thuyết đồ thị toán Người bán hàng (Travelling Salesman Problem-TSP) tốn kinh điển khó[2][3] Bài tốn có phát biểu đơn giản khó giải trường hợp tổng qt với khơng gian tìm kiếm rộng lớn, khó thuật toán hiệu biết đến có thời gian giải tốn tăng dần theo cấp số nhân n, hay độ phức tạp thuật tốn tăng dần theo hàm mũ[4] Có nhiều cách tiếp cận toán từ đời, sử dụng quy hoạch tuyến tính, thuật toán vét cạn, thuật toán người láng giềng gần nhất, kỹ thuật nhánh cận, dừng lại liệu nhỏ Gần có nhiều thuật tốn đời theo hướng tiếp cận tiến hóa thuật toán di truyền Genetic Algorithm, hay phương pháp tối ưu hóa đàn kiến (Ant Colony Optimization) Để giải toán Người bán hàng (Travelling Salesman Problem-TSP) các thuật toán, kỹ thuật, phương pháp nêu gặp nhiều khó khăn độ phức tạp tính tốn cao, việc giải tốn với tính chất giải thuật số đỉnh lên đến hàng chục ngàn đỉnh gặp phải vấn đề thời gian thực chương trình, tốc độ xử lý, khả lưu trữ nhớ,…Để xử lý liệu có quy mơ lớn, kích thước tốn tăng lên khơng gian tìm kiếm lớn Điều đặt ta phải chia toán cho nhiều xử lý đồng thời tham gia tính tốn, dẫn đến ta phải xây dựng thuật toán song song đa xử lý [1][5][6][7][8] Với phát triển công nghệ đặt cho nhiều thách thức Bởi thời đại mà sống ngành công nghệ máy tính phát triển vũ bão Từ kỷ thứ trước công nguyên, thư viện Alexandria coi nơi chứa đựng toàn kiến thức lồi người Ngày nay, tổng lượng thơng tin tồn giới đủ để chia cho đầu người lượng nhiều gấp 320 lần lượng thông tin mà sử gia tin thư viện Alexandria lưu trữ - ước tính vào khoảng 120 exabyte Nếu tất thông tin ghi lại vào đĩa CD xếp chồng đĩa CD lên nhau, có tới chồng đĩa mà chồng vươn dài chạm tới mặt trăng Sự bùng nổ liệu xuất gần Cách khơng lâu, vào năm 2000, có phần tư lượng thơng tin lưu trữ tồn giới dạng kỹ thuật số Ba phần tư lại người ta lưu giấy tờ, phim, phương tiện analog khác Nhưng lượng liệu kỹ thuật số bùng nổ nhanh – năm lại tăng gấp đôi – cục diện nhanh chóng đảo ngược Ngày nay, 2% tổng lượng thông tin chưa chuyển sang lưu trữ dạng kỹ thuật số Theo tài liệu Intel vào tháng 09/2013, giới tạo petabyte liệu 11 giây, tương đương với đoạn video HD dài 13 năm Nhà bán lẻ online Amazon.com phải xử lí hàng triệu hoạt động ngày, yêu cầu từ khoảng triệu đối tác bán hàng Tương 67 2.2 Chọn v có d[v] nhỏ //v=0 khơng có đường 2.3 Nếu v ≠ thêm v vào S; u:= v Bước 3: In đường tối ưu từ s đến t thông báo vô nghiệm Thời gian thực thuật tốn mơ hình Nếu đồ thị có nhiều đỉnh, cạnh, ta sử dụng danh sách kề kèm trọng số để biểu diễn đồ thị, nhiên tốc độ thuật toán Dijkstra chậm trường hợp xấu nhất, cần n lần cố định nhãn lần tìm đỉnh để cố định nhãn đoạn chương trình với độ phức tạp O(n) Vậy độ phức tạp thuật toán Dijkstra O(n2) Để tăng tốc độ, ta thường sử dụng cấu trúc liệu Heap để lưu đỉnh chưa cố định nhãn Giải tốn tìm đường ngắn với MapReduce Giả sử ta có đồ thị Mô tả đồ thị Số đỉnh đồ thị: 10 Số cạnh đồ thị: 21 Đỉnh bắt đầu (Source Node) đỉnh mà ta tìm đường ngắn từ đỉnh qua tất đỉnh lại Ta khởi tạo danh sách kề nhƣ sau: {Node Number, Node Weight, Node Status} TAB {Adjacent Node, Edge Weight} TAB {Adjacent Node, Edge Weight} Trong đó: Node Weight = đỉnh bắt đầu Node Weight = INFINITY cho tất đỉnh lại Node Status = UNDISCOVERED cho tất đỉnh Adjacent Node: Là đỉnh kề với đỉnh Node Number Edge Weight : Là trọng số cạnh nối đỉnh Node Number Adjacent Node Như vậy, theo đồ thị danh sách kề khởi tạo sau: 68 {1,0,UNDISCOVERED} {2,40}{3,8} {4,10} {2, INFINITY, UNDISCOVERED} {5,6} {7,10} {3, INFINITY, UNDISCOVERED} {2,4} {4,12} {6,2} {4, INFINITY, UNDISCOVERED} {6,1} {5, INFINITY, UNDISCOVERED} {3,2} {6,2} {7,4} {6, INFINITY, UNDISCOVERED} {8,4} {9,3} {7, INFINITY, UNDISCOVERED} {8,20} {10,1} {8, INFINITY, UNDISCOVERED} {5,0} {10,20} {9, INFINITY, UNDISCOVERED} {4,6} {10,2} Danh sách kề trung gian: {Node Number, Node Weight, Node Status, Path} TAB {Adjacent Node, Edge Weight} TAB {Adjacent Node, Edge Weight} Trong đó: Node Number = Lấy từ đỉnh đồ thị Node Weight = cho đỉnh bắt đầu (Source Node) = Trọng số nhỏ từ đỉnh bắt đầu tới đỉnh xét (cho tất đỉnh khác) Node Status = UNDISCOVERED (cho đỉnh chưa xét) = DISCOVERED (cho đỉnh xét) Path = Là đường từ đỉnh Source Node đỉnh xét Adjacent Node: Là đỉnh kề với đỉnh Node Number Edge Weight : Là trọng số cạnh nối đỉnh Node Number Adjacent Node Sự thực hiện: Công việc MapReduce lặp lặp lại khơng cịn phát cặp Key-Value có đỉnh UNDISCOVERED Đầu phép lặp sử dụng làm đầu vào lần lặp Tùy chọn cơng việc MapReduce chạy lần với Reducer để nhận đầu Bƣớc lặp 1: Mapper Output [Trƣớc xếp, gộp nhóm]: {1,0,DISCOVERED,1} {2,40} {3,8} {4,10} {2,40,UNDISCOVERED,1} {3,8,UNDISCOVERED,1} {4,10,UNDISCOVERED,1} {2,INFINITY,UNDISCOVERED} {5,6} {7,10} {3,INFINITY,UNDISCOVERED} {2,4} {4,12} {6,2} 69 {4,INFINITY,UNDISCOVERED} {6,1} {5,INFINITY,UNDISCOVERED} {3,2} {6,2} {7,4} {6,INFINITY,UNDISCOVERED} {8,4} {9,3} {7,INFINITY,UNDISCOVERED} {8,20}{10,1} {8,INFINITY,UNDISCOVERED} {5,0} {10,20} {9,INFINITY,UNDISCOVERED} {4,6} {10,2} Bƣớc lặp 1: Mapper Output [Sau xếp, gộp nhóm]: {1,0,DISCOVERED,1} {2,40} {3,8} {4,10} {2,40,UNDISCOVERED,1} {2,INFINITY,UNDISCOVERED} {5,6} {7,10} {3,8,UNDISCOVERED,1} {3,INFINITY,UNDISCOVERED} {2,4} {4,12}{6,2} {4,10,UNDISCOVERED,1} {4,INFINITY,UNDISCOVERED} {6,1} {5,INFINITY,UNDISCOVERED} {3,2} {6,2} {7,4} {6,INFINITY,UNDISCOVERED} {8,4} {9,3} {7,INFINITY,UNDISCOVERED} {8,20} {10,1} {8,INFINITY,UNDISCOVERED} {5,0} {10,20} {9,INFINITY,UNDISCOVERED} {4,6} {10,2} Bƣớc lặp 1: Reducer Input / Output: Bƣớc lặp 2: Mapper Input: {1,0,DISCOVERED,1} {2,40} {3,8} {4,10} {2,40,UNDISCOVERED,1} {5,6} {7,10} {3,8,UNDISCOVERED,1} {2,4} {4,12} {6,2} {4,10,UNDISCOVERED,1} {6,1} {5,INFINITY,UNDISCOVERED} {3,2} {6,2} {7,4} {6,INFINITY,UNDISCOVERED} {8,4} {9,3} {7,INFINITY,UNDISCOVERED} {8,20} {10,1} {8,INFINITY,UNDISCOVERED} {5,0} {10,20} {9,INFINITY,UNDISCOVERED} {4,6} {10,2} Bƣớc lặp 2: Mapper Output [sau xếp, gộp nhóm]: {1,0,DISCOVERED,1} {2,40} {3,8} {4,10} {2,12,UNDISCOVERED,1-3} 70 {2,40,DISCOVERED,1} {5,6} {7,10} {3,8,DISCOVERED,1} {2,4} {4,12} {6,2} {4,10,DISCOVERED,1} {6,1} {4,20,UNDISCOVERED,1-3} {5,46,UNDISCOVERED,1-2} {5,INFINITY,UNDISCOVERED} {3,2} {6,2} {7,4} {6,10,UNDISCOVERED,1-3} {6,11,UNDISCOVERED,1-4} {6,INFINITY,UNDISCOVERED} {8,4} {9,3} {7,50,UNDISCOVERED,1-2} {7,INFINITY,UNDISCOVERED} {8,20}{10,1} {8,INFINITY,UNDISCOVERED} {5,0} {10,20} {9,INFINITY,UNDISCOVERED} {4,6} {10,2} Bƣớc lặp 2: Reducer Input / Output: Bƣớc lặp 3: Mapper Input: {1,0,DISCOVERED,1} {2,40} {3,8}{4,10} {2,12,UNDISCOVERED,1-3}{5,6} {7,10} {3,8,DISCOVERED,1} {2,4} {4,12}{6,2} {4,10,DISCOVERED,1} {6,1} {5,46,UNDISCOVERED,1-2} {3,2} {6,2} {7,4} {6,10,UNDISCOVERED,1-3} {8,4} {9,3 {7,50,UNDISCOVERED,1-2} {8,20} {10,1} {8,INFINITY,UNDISCOVERED} {5,0} {10,20} {9,INFINITY,UNDISCOVERED} {4,6} {10,2} File Output: {1,0,DISCOVERED,1} {2,40} {3,8} {4,10} {2,12,DISCOVERED,1-3-2} {3,8,DISCOVERED,1-3} {5,6} {7,10} {2,4} {4,12} {6,2} {4,10,DISCOVERED,1-4} {6,1} {5,14,DISCOVERED,1-3-6-8-5} {3,2} {6,2} {7,4} {6,10,DISCOVERED,1-3-6} {8,4} {9,3} {7,18,DISCOVERED,1-3-6-8-5-7} {8,20} {10,1} {8,14,DISCOVERED,1-3-6-8} {5,0} {10,20} 71 {9,13,DISCOVERED,1-3-6-9} {4,6} {10,2} {10,15,DISCOVERED,1-3-6-9-10} {11,INFINITY,UNDISCOVERED} {12,6} {13,2} Quá trình Map cho toán đường ngắn Nếu source node hợp lệ, Node Weight khác INFINITY Node Status khác DISCOVERED: Lấy đường cách gán currentPath += “” chưa có đường Ngược lại currentPath += “-” thêm key vào Cập nhật lại mapper output Nếu value có nội dung: Duyệt qua tất cạnh kề Node Weight Node Weight cũ cộng trọng số cạnh kề Chọn mapper output có key node kề với source node Đánh dấu số lượng Node có trạng thái UNDISCOVERED cần xử lý Ngược lại xuất cặp (key, value) Quá trình Reduce cho tốn đường ngắn Hàm Reduce có nhiệm vụ tổng hợp cặp sau chạy hàm Map Các key giống xếp chạy Reduce Ta thực hàm reduce sau: Khởi tạo newValue Ứng với Key, value giá trị: Lấy liệu cho newValue Cập nhật lại output reduce Kết xuất file output Xuất file Output