Luận văn thạc sĩ nghiên cứu ứng dụng mô hình mapreduce để giải quyết bài toán đồ thị

85 126 0
Luận văn thạc sĩ nghiên cứu ứng dụng mô hình mapreduce để giải quyết bài toán đồ thị

Đ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

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA PHAODAVANH HONGSOUVANH NGHIÊN CỨU ỨNG DỤNG MƠ HÌNH MAPREDUCE ĐỂ GIẢI QUYẾT BÀI TOÁN ĐỒ THỊ Chuyên ngành: Khoa học máy tính Mã ngành: 60.48.01.01 LUẬN VĂN THẠC SĨ NGƯỜI HƯỚNG DẪN KHOA HỌC PGS.TS Nguễn Tấn Khôi ĐÀ NẴNG – Năm 2017 i 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 tồn trách nhiệm Tác giả luận văn PHAODAVANH HONGSOUVANH ii LỜI CẢM ƠN Trong q trình thực đề tài, tơi gặp nhiều khó khăn phát sinh mà khơng có giúp đỡ, động viên gia đình, thầy giáo, bạn bè đồng nghiệp tơi khó hồn thành luận văn Lời xin gửi lời cảm ơn chân thành đến quý thầy cô giáo, Khoa chuyên ngành Công nghệ thơng tin, Trường Đại học Bách khoa tận tình giảng dạy, truyền đạt kiến thức, kinh nghiệm quý báu suốt thời gian theo học chương trình Các kiến thức, kinh nghiệm quý báu thầy giáo khơng giúp cá nhân tơi hồn thiện hệ thống kiến thức học tập mà giúp tơi ứng dụng kiến thức cơng việc Đặc biệt, xin gởi lời cảm ơn chân thành sâu sắc đến thầy giáo PGS.TS Nguyễn Tấn Khơi, người Thầy tận tình hướng dẫn tạo điều kiện tốt để tơi hồn thành luận văn Tôi xin bày tỏ tình cảm với gia đình, đồng nghiệp, bạn bè tạo điều kiện để tơi dành thời gian cho khóa học Xin chân thành cảm ơn người bạn lớp cao học K32, gần năm qua ln ln động viên, khích lệ hỗ trợ tơi q trình học tập Tuy có nhiều cố gắng, chắn luận văn không tránh khỏi thiếu sót định Tơi mong nhận ý kiến đóng góp q báu thầy giáo bạn để luận văn ngày hoàn thiện Trân trọng cảm ơn! Đà Nẵng, Ngày 16 Tháng 01 Năm 2018 Tác giả PHAODAVANH Hongsouvanh iii MỤC LỤC LỜI CAM ĐOAN…………………………………… ……………….…………………….i LỜI CẢM ƠN …………………… ………………….……………………… …… ……ii MỤC LỤC………………….……………………………………………….…… ………iii DANH MỤC CÁC TỪ VIẾT TẮT…………… ………………………… … ….………vi DANH MỤC CÁC BẢNG……………………………………… ……….……….……….vii DANH MỤC CÁC HÌNH………………………………………….…….….……… ……viii LỜI CAM ĐOAN i LỜI CẢM ƠN ii DANH MỤC CÁC TỪ VIẾT TẮT vi DANH MỤC CÁC BẢNG vii DANH MỤC CÁC HÌNH ẢNH viii MỞ ĐẦU 1 Tính cấp chọn đề tài Mục tiêu nhiệm vụ nghiên cứu 2.1 Mục tiêu 2.2 Nhiệm vụ Đối tượng phạm vi nghiên cứu 3.1 Đối tượng nghiên cứu đề tài 3.2 Phạm vi nghiên cứu đề tài Phương pháp nghiên cứu 4.1 Nghiên cứu lý thuyết 4.2 Nghiên cứu thực nghiệm Cấu trúc luận văn Ý nghĩa khoa học thực tiễn đề tài CHƯƠNG 1: CƠ SỞ LÝ THUYẾT iv 1.1 Nền tảng tính tốn với Hadoop 1.1.1 Hệ thống tập tin phân tán Hadoop 1.1.2 Các thành phần Hadoop 1.1.3 Nguyên tắc hoạt động Hadoop MapReduce 1.1.4 Các tiến trình tảng Hadoop 1.1.5 Tổng quan Hadoop cluster 1.1.6 Hadoop Distributed File System (HDFS) 11 Mô hình xử lý phân tán MapReduce 14 1.2 1.2.1 Tổng quan mơ hình xử lý phân tán Mapreduce 14 1.2.2 Cơ chế hoạt động MapReduce 14 1.2.3 Quá trình xử lý MapReduce 15 1.2.4 Hadoop MapReduce 18 1.2.5 MapReduce không dùng vào việc 20 Lý thuyết đồ thị 20 1.3 1.3.1 Giới thiệu 21 1.3.2 Các khái niệm 21 1.3.3 Cách biểu diễn đồ thị 22 1.3.4 Duyệt đồ thị 26 1.3.5 Tính liên thông đồ thị 29 1.4 Kết luận chương 30 CHƯƠNG MƠ HÌNH XỬ LÝ PHÂN TÁN MAPREDUCE VÀ HADOOP 31 Xây dựng chương trình MapReduce Job 31 2.1 2.1.1 Các kiểu liệu mà Hadoop hỗ trợ 31 2.1.2 Hàm Mapper 32 2.1.3 Hàm Reducer 33 Đầu vào đàu Hadoop 34 2.2 2.2.1 Dữ liệu đầu vào 34 2.2.2 Dữ liệu đầu 36 Tập tin 37 2.3 2.4 Kết luận chương 37 CHƯƠNG PHÂN TÍCH THIẾT KẾ BÀI TỐN ĐỒ THỊ DỰA TRÊN MƠ HÌNH PHÂN TÁN MAPREDUCE 39 Ứng dụng MapReduce giải toán khung nhỏ 39 3.1 3.1.1 Giới thiệu toán 39 3.1.2 Tổng quan 39 3.1.3 Giải thuật khung nhỏ 40 v 3.1.4 Thuật toán Kruskal 41 3.1.5 Giải toán Cây khung nhỏ với MapReduce 45 Ứng dụng MapReduce giải tốn tìm đường ngắn (Shortest 3.2 Path) 46 3.2.1 Phát biểu toán 47 3.2.2 Thuật toán Dijkstra 47 3.2.3 Thời gian thực thuật toán 48 3.2.4 Giải toán Đường ngắn với MapReduce 49 Ứng dụng MapReduce giải toán luồng cực đại mạng 54 3.3 3.3.1 Mạng 54 3.3.2 Giới thiệu toán 55 3.3.3 Giới thiệu thuật toán Ford – Fulkerson 56 3.3.4 Giải toán Luồng cực đại mạng với MapReduce 56 Thử nghiệm đánh giá kết 57 3.4 3.4.1 Thử nghiệm hệ thống 57 3.4.2 Đánh giá kết thử nghiệm 63 3.5 Kết luận chương 65 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 66 Kết luận 66 Hướng phát triển 66 DANH MỤC TÀI LIỆU THAM KHẢO 68 PHỤ LỤC 70 vi DANH MỤC CÁC TỪ VIẾT TẮT Từ viết tắt Ý nghĩa LTĐT Lý thuyết đồ thị BFS Duyệt theo chiều rộng >> Viết tắt từ tiếng Anh DFS Duyệt theo chiều sâu>> Viết tắt từ tiếng Anh MR MapReduce MST Minimum Spanning Tree GFS Google File System HDFS Hadoop Distributed File System NDFS Nutch Distributed File System OSDI Operating System Design and Implementation RPC Remote Perceduce Call vii DANH MỤC CÁC BẢNG Số hiệu bảng Tên bảng Trang Bảng 1.1 Các thành phần Hadoop Bảng 2.1 Danh sách kiểu liệu Hadoop 32 Bảng 2.2 Bảng 2.3 Một số lớp thực mapper định nghĩa trước Hadoop Danh sách reducer triển khai cung cấp Hadoop 33 34 viii DANH MỤC CÁC HÌNH ẢNH Ký hiệu Tên hình ảnh Trang Hình 1.1 Cấu trúc thành phần Hadoop Hình 1.2 Tổng quan Hadoop cluster 10 Hình 1.3 NameNode DataNode HDFS 13 Hình 1.4 Quá trình xử lý MapReduce 15 Hình 1.5 Mơ hình làm việc cơng việc MapReduce 16 Hình 1.6 Hàm Map 17 Hình 1.7 Hàm Reduce 17 Hình 1.8 Phân nhỏ liệu đầu vào 18 Hình 1.9 Sao chép chương trình 18 Hình 1.10 Thực hàm Map 19 Hình 1.11 Thực thi tác vụ Reduce 19 Hình 1.12 Mơ hình đồ thị 21 Hình 1.13 Phân loại đồ thị 21 Hình 1.14 Biểu diễn đồ thị ma trận kề 23 Hình 1.15 Biểu diễn đồ thị danh sách cạnh 24 Hình 1.16 Biểu diễn đồ thị danh sách kề 26 Hình 1.17 Đồ thị vơ hướng, đồ thị có hướng 26 Hình 1.18 Cây BFS 28 Hình 1.19 Đồ thị G liên thơng mạnh, đồ thị G’ liên thơng yếu 20 Hình 2.1 Biểu đồ phân cấp trình MapReduce 31 Hình 3.1 Cây khung nhỏ đồ thị phẳng 39 Hình 3.2 Đồ thị G 44 ix Hình 3.3 Kết đồ thị G sau dùng thuật tốn Kruskal 45 Hình 3.4 Mơ tả đồ thị 48 Hình 3.5 Xuất liệu Đầu 53 Hình 3.6 Mạng với khả thơng qua (đỉnh đỉnh phát, đỉnh đỉnh thu) luồng với giá trị 54 Hình 3.7 Giao diện chương trình MST 57 Hình 3.8 Thiết kế đồ thị 57 Hình 3.9 Ma trận trọng số nút 58 Hình 3.10 Giao diện console chạy MapReduce 58 Hình 3.11 Kết sau chạy xong MapReduce 59 Hình 3.12 Xuất liệu Đầu 59 Hình 3.13 Giao diện chương trình Dijkstra 60 Hình 3.14 Sau chạy demo 62 Hình 3.15 Kết chạy chương trình 62 Hình 3.16 Mơ tả thời gian thực thuật tốn 63 Hình 3.17 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 63 Mô tả khác thời gian thực đầu vào Hình 3.18 khác với số đỉnh đồ thị gồm 500, 1000 64 4000 đỉnh Hình 3.19 Mơ tả khác thời gian thực đầu vào khác với 1, giai đoạn MapReduce 64 61 Giao diện chương trình cho phép người dùng chọn thao tác cần thực vẽ đồ thị , tìm đường đồ thị, xây dựng ma trận trọng số đồ thị Xem lại đồ thị lập Lưu ma trận Thêm đỉnh Mở file ma trận tạo đồ thị (xóa) Di chuyển đỉnh Liên kết đỉnh Cho ví dụ ma trận trọng số sau: 122 182 171 161 283 233 345 543 832 847 672 655 752 748 62 Hình 3.14 sau chạy demo Click Run step để xem chương trình chạy bước Trong ví dụ cho chương trình chạy từ đỉnh số đỉnh đầu đỉnh số đỉnh cuối, chương trình tìm đường ngắn nhất(có chi phí nhất) Hình 3.14 Hình 3.15 Kết chạy chương trình Sau chạy chương trinh kết xuất số đỉnh phần Log Path hình 3.15 63 3.4.2 Đánh giá kết thử nghiệm So sánh hệ thống xử lý trước với thuật toán song song để kiểm tra khác biệt kết có kết luận tối ưu hóa đạt sử dụng thuật tốn Thời gian thực 1500 1000 500 0 500 1000 1500 2000 2500 3000 Hình 3.16 Mơ tả thời gian thực thuật tốn Hình 3.16 mơ tả thời gian thực thuật tốn có số đỉnh khác biểu diễn ba đường khác biểu diễn giai đoạn map 1, Chi phí hệ thống lớn thuật toán thực cố mạng xảy dẫn đến làm tăng thời gian cần thiết để q trình tính tốn hồn thành Hơn nữa, Hadoop không thiết kế để xử lý số lượng lớn giao tiếp Thời gian thực máy, mà cho lượng lớn giao dịch đơn lẻ 2600 2400 2200 2000 1800 1600 1400 1200 1000 800 600 400 200 One Two Five 25 50 75 100 125 150 Số máy tham gia tính tốn Hình 3.17 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 Thời gian thực 64 1600 1400 1200 1000 800 600 400 200 500 1000 4000 25 50 75 100 125 150 Số máy tham gia tính tốn Hình 3.18 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 1600 Thời gian thực 1400 1200 1000 800 600 400 200 0 25 50 75 100 125 150 Số máy tham gia tính tốn Hình 3.19 Mơ tả khác thời gian thực đầu vào khác với 1, giai đoạn MapReduce Hình 3.19 Mơ tả hoạt động thuật toán số giai đoạn MapReduce tăng Nhìn vào biểu đồ ta biết số giai đoạn tăng thời gian thực thuật toán tăng Số đỉnh cho hàm Mapper số lượng máy cụm mang lại kết tốt với hiệu suất tối ưu Tuy nhiên, hệ thống song song, chạy với số lượng đỉnh lớn cho hệ thống làm cho hệ thống hiệu với xử lý tải lớn nhiều so với hệ thống Hệ thống xử lý nhiều đỉnh hệ thống song song xử lý đơn với khả tính tốn bị giới hạn Khi hệ thống song song thực cụm lớn, khả tính tốn lớn nhiều hệ thống thực tính tốn tốt 65 Mục đích thực nghiệm để so sánh thời gian thực chương trình hai thuật tốn: thuật toán xử lý theo kiểu truyền thống thuật tốn xử lý song song theo mơ hình Mapreduce Với liệu sinh từ chương trình sinh liệu ngẫu nhiên sinh liệu với số đỉnh khoảng 100000 đỉnh Kết thực nghiệm cho thấy chương trình chạy cho kết đắn Với liệu 100000 đỉnh chương trình viết MapReduce chạy máy cho thời gian thực khoảng 36 giây Đây kết bước đầu 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 mơ hình xử lý phân tán MapReduce để giải tốn đồ thị có liệu lớn có hiệu đắn 3.5 Kết luận chương Chương trình bày số toán đồ thị Cây khung nhỏ nhất, tìm đường ngắn nhất, luồng cực đại mạng Xây dựng giải thuật giải toán hệ thống MapReduce, triển khai demo chương trình MST môi trường máy Ubuntu 12.04 với công cụ triển khai VMware, Eclipse, Plugin cho Hadoop Eclipse đánh giá kết đạt liệu thử nghiệm 66 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Kết luận Hiện cơng nghệ máy tính phát triển vũ bão Số lượng người sử dụng máy tính tài nguyên trực tuyến để xử lý ngày tăng nhanh dẫn đến khối lượng liệu số phồng to với tốc độ chóng mặt Khi khối lượng liệu hệ thống gia tăng tới mức độ định việc hệ thống phải đối mặt với thách thức làm để lưu trữ, phân tích xử lý liệu Việc lưu trữ xử lý liệu phân tán mơ hình xử lý phân tán MapReduce lĩnh vực khơng có tiềm đáng để nghiên cứu Trải qua q trình làm việc nghiêm túc, bước đầu chúng tơi thu số kết định Khái quát kiến thức LTĐT, tảng tính tốn phân tán với Hadoop Nêu phương pháp giải số toán đồ thị theo mơ hình MapReduce Tập trung nghiên cứu, xây dựng số toán thuật toán LTĐT theo mơ hình MapReduce nhằm giải tốn tìm khung nhỏ đồ thị vơ hướng, tìm đường ngắn đồ thị, tìm luồng cực đại mạng Luận văn nghiên cứu kết hợp LTĐT mơ hình xử lý phân tán MapReduce tảng Hadoop nhận dạng toán thực tế để đưa giải tốn đồ thị có kích thước liệu lớn Chương trình thể bước xử lý Hadoop MapReduce Luận văn cài đặt thành cơng chương trình đạt kết ban đầu Xuất thông tin mà hệ thống MapReduce xử lý Khẳng định lần chế xử lý phân tán MapReduce quan tâm, phát triển liên tục nhằm nghiên cứu, giải số tốn có kích thước liệu lớn sống Hướng phát triển Trên sở kết nghiên cứu trình bày luận văn, chúng tơi nhận thấy số vấn đề cần tiếp tục nghiên cứu để có kết tốt như: Sẽ phát triển thêm với nguồn tài nguyên lớn hơn, đánh giá việc xử lý toán với nhiều nút Thực liệu đầu vào với data lớn nhiều Tiếp tục phát triển ứng dụng khoa học với hệ thống MapReduce Đưa ứng dụng vào thực tế để triển khai tính tốn có hiệu 67 Trong q trình làm luận văn, dù cố gắng nghiên cứu tìm hiểu kiến thức để thực tốt đề tài Tuy nhiên thời gian nghiên cứu trình độ thân có hạn nên khơng thể tránh khỏi thiếu sót Rất mong nhận góp ý quý Thầy, Cô giáo, đồng nghiệp, bạn bè quan tâm đến đề tài đưa để nội dung nghiên cứu hoàn thiện 68 DANH MỤC TÀI LIỆU THAM KHẢO Tài liệu tiếng Việt [1] Đoàn Văn Ban, Nguyễn Mậu Hân, Xử lý song song phân tán, NXB KH&KT, 2009 [2] Lê Huy Thập, Cơ sở lý thuyết song song, NXB Thông tin truyền thông, 2011 [3] Trương Văn Hiệu (2011), “Nghiên cứu giải thuật song song hệ thống xử lý đồ họa GPU đa lõi”, luận văn thạc sĩ, trường Đại học Đà Nẵng [4] Trần Thanh Liêm (2015), “Ứng dụng mơ hình MapReduce phân tích xử lý malware”, Trung tâm Thông tin - Học liệu, Ðại học Ðà Nẵng [5] Hồ Sĩ Đàm (chủ biên), Đỗ Đức Đơng, Lê Minh Hồng, Nguyễn Thanh Hùng (2009), Tài liệu giáo khoa chuyên Tin (bộ tập), NXB Giáo dục [6] Hồ Sĩ Đàm, Trần Đỗ Hùng (2006), Chuyên đề bồi dưỡng học sinh giỏi Tin học trung học phổ thông Ứng dụng Lý thuyết đồ thị, NXB GD [7] Lê Minh Hoàng (2005), “Giải thuật lập trình”, Đại học sư phạm Hà Nội [8] Nguyễn Xuân My (chủ biên), Hồ Sĩ Đàm, Trần Đỗ Hùng, Lê Sĩ Quang (2002), Một số vấn đề chọn lọc mơn Tin học,Tập1, NXB GD [9] Kenneth H.Rosen, Tốn rời rạc ứng dụng tin học, NXB Khoa học Kỹ thuật [10] Nguyễn Ðức Nghia., “Cấu trúc liệu giải thuật,” Nhà Xuất Bản KHKT Hà Nội,(2013) Tài liệu tiếng Anh [11] Jeffrey Dean Sanjay Ghemawat, MapReduce: Simplified Data Processing onLarge Clusters, Google, Inc, 2004 [12] William Gropp et al, MPICH2 User’s Guide Version 1.0.6 ,Mathematics and ComputerScience Division, Argonne National Laboratory, 2007 [13] Ananth Grama, Anshul Gupta, Geogre Karipys - Addison Wesley Introduction to Parallel Computing, - 2008 [14] Srinath Perera Thilina Gunarathne, Hadoop MapReduce Cookbook, 2013 69 [15] Hadoop MapReduce v2 Cookbook Second Edition, Thilina Gunarathne, 2015 [16] Chuck Lam, Hadoop in Action, 2010 Tài liệu Internet [17] http://hadoop.apache.org/ [18] http://www.ibm.com/developerworks/vn/library/java/201301/j-javadev2-15/ [19] https://sites.google.com/site/chapterhut/hoc-tap/mon-hoc/map-reduce [20] http://www.pcworld.com.vn/articles/cong-nghe/ung-dung/2010/09/1220629/xu-ly-dulieu-phan-tan-voi-mapreduce/ [21] http://blog.impiyush.com/2013/11/hadoop-220-installation-steps-for.html [22] http://kipalog.impiyush.com/posts/Map-Reduce [23] http://hadooptutorial.info/mapreduce-programming model/#MapReduce_Programming_Model_in_Java [24] http://tiasang.com.vn/-khoa-hoc-cong-nghe/thoi-cua-du-lieu-lon-639 [25] https://www.academia.edu/16675938/Bigdata_Hadoop_và_ứng_dụng [26] https://github.com/felix-halim/maxflow-mapreduce [27] https://ahoop.wordpress.com /2012/03/06/ [28] https://www.slideshare.net/babyinternet/hadoop-35146463 70 PHỤ LỤC  Hàm Map cho toán Cây khung nhỏ public static class MSTMapper extends Mapper { public void map(Object key, Text value, Context context) throws IOException, InterruptedException { Text srcDestPair = new Text(); String []đầu vàoTokens = value.toString().split("\t"); String weight = đầu vàoTokens[0] ; int wt = Integer.parseInt(weight); IntWritable iwWeight = new IntWritable(wt); srcDestPair.set(đầu vàoTokens[1] + ":" +đầu vàoTokens[2]); context.write(iwWeight,srcDestPair); } }  Hàm Reduce cho toán Cây khung nhỏ static class MSTReducer extends Reducer { Map node_AssociatedSet= new HashMap(); public void reduce(IntWritable,đầu vàoKey, Iterable values, Context context) throws IOException, Inter ruptedException { String strKey = new String(); strKey += đầu vàoKey; Text đầu raKey = new Text(strKey); for (Text val : values) { boolean ignoreEdgeSameSet1 = false; boolean ignoreEdgeSameSet2 = false; boolean ignoreEdgeSameSet3 = false; Set nodesSet = new HashSet(); String[] srcDest = val.toString().split(":"); String src = srcDest[0]; String dest = srcDest[1]; ignoreEdgeSameSet1 = isSameSet(src, dest); nodesSet.add(src); 71 nodesSet.add(dest); ignoreEdgeSameSet2 = unionSet(nodesSet, src, dest); ignoreEdgeSameSet3 = unionSet(nodesSet, dest, src); if (!ignoreEdgeSameSet1 && !ignoreEdgeSameSet2 && !ignoreEdgeSa meSet3) { long weight = Long.parseLong(đầu raKey.toString()); context.getCounter(MSTCounters.totalWeight).increment(weight); context.write(đầu raKey, val); } } }  Hàm map cho tốn tìm đường ngắn public class AlgorithmMapper extends MapReduceBase implements Mapper { private static final String DISCOVERED = "DISCOVERED"; private static final String UNDISCOVERED = "UNDISCOVERED"; private static final String INFINITY = "INFINITY"; private static final int MINIMUM_SOURCE_NODE_TOKENS = 3; private static final int MAXIMUM_SOURCE_NODE_TOKENS = 4; public static final int INDEX_SOURCE_NODE_NUMBER = 0; public static final int INDEX_SOURCE_NODE_WEIGHT = 1; private static final int INDEX_SOURCE_NODE_STATUS = 2; private static final int INDEX_SOURCE_NODE_PATH = 3; private Text emptyText = new Text(); @Override public void map(Text key, Text value, Đầu raCollector đầu ra, Reporter reporter) throws IOException { String[] sourceNodeDetails = key.toString().substring(1, key.toString().length() - 1).split(","); if (sourceNodeDetails.length >= MINIMUM_SOURCE_NODE_TOKENS &&!sourceNodeDetails[INDEX_SOURCE_NODE_WEIGHT].equalsIgnoreCase(INFINITY ) &&!sourceNodeDetails[INDEX_SOURCE_NODE_STATUS].equalsIgnoreCase(DISCOVER ED)) { String currentPath = ""; if (sourceNodeDetails.length == MAXIMUM_SOURCE_NODE_TOKENS) 72 { currentPath = sourceNodeDetails[INDEX_SOURCE_NODE_PATH]; } currentPath += (currentPath.length() == ? "" : "-") + sourceNodeDetails[INDEX_SOURCE_NODE_NUMBER]; đầu ra.collect(new Text("{" + sourceNodeDetails[INDEX_SOURCE_NODE_NUMBER] + "," + sourceNodeDetails[INDEX_SOURCE_NODE_WEIGHT] + "," + DISCOVERED + "," + currentPath + "}"), value); if (value.toString().trim().length() > 0) { String[] tokens = value.toString().trim().split("\t"); String[][] adjacentNodeDetails = new String[tokens.length][2]; for (int index = 0; index < tokens.length; index++) { adjacentNodeDetails[index] = tokens[index].substring(1, tokens[index].length() - 1).split(","); } int sourceNodeWeight = Integer.parseInt(sourceNodeDetails[INDEX_SOURCE_NODE_WEIGHT]); for (int index = 0; index < tokens.length; index++) { int number = sourceNodeWeight + Integer.parseInt(adjacentNodeDetails[index][1]); đầu ra.collect(new Text("{" + adjacentNodeDetails[index][0] + "," + Integer.toString(number) + "," + UNDISCOVERED + "," + currentPath + "}"), emptyText); reporter.incrCounter(AlgorithmDriver.CUSTOM_COUNTERS, AlgorithmDriver.NUMBER_OF_UNDISCOVERED_NODES_TO_BE_PROCESSED, 1); } } } else { đầu ra.collect(key, value); } }  Hàm Reduce cho toán đường ngắn nhất: public class AlgorithmReducer extends MapReduceBase implements 73 Reducer { @Override public void reduce(Text key, Iterator values, Đầu raCollector đầu ra, Reporter reporter) throws IOException { int index = 0; String newValue = ""; while (values.hasNext()) { if (index > 0) { newValue += "\t"; } newValue += values.next().toString(); } đầu ra.collect(key, new Text(newValue)); }  Hàm Map toán luồng cực đại mạng: public static class MapBFS extends Mapper { IntWritable id = new IntWritable(); Vertex v = new Vertex(); public void map(IntWritable id, Vertex u, Context context) throws IOException, InterruptedException { if (u.distance -u.distance) throw new RuntimeException("Noded = "+u.distance + " vd = " + v.distance); u.distance = v.distance; } else { u.distance = Math.max(u.distance, v.distance); } } else { if (v.distance == Vertex.MAX_DIST){ } else if (v.distance >= 0){ throw new RuntimeException("HERE"); } else { if (u.distance > -v.distance) throw new RuntimeException("Noded = "+u.distance + " vd = " + v.distance); } } u.addAllCon(v); } if (u.distance < Vertex.MAX_DIST) context.getCounter("bfs","VISITED").increment(1); context.write(id, u); context.getCounter("bfs","N").increment(1); context.getCounter("bfs","E").increment(u.nE); } } 75 ... hướng ứng dụng MapReduce để giải tốn đồ thị, tơi đề xuất chọn đề tài luận văn cao học: Nghiên cứu ứng dụng mơ hình MapReduce để giải tốn đồ thị 2 Mục tiêu nhiệm vụ nghiên cứu 2.1 Mục tiêu Nghiên. .. khai mơ hình hệ thống 3.2 Phạm vi nghiên cứu đề tài - Mơ hình xử lý phân tán MapReduce tảng hadoop - Ứng dụng mô hình MapReduce để giải số tốn đồ thị Phương pháp nghiên cứu 4.1 Nghiên cứu lý thuyết... 19 Hình 1.12 Mơ hình đồ thị 21 Hình 1.13 Phân loại đồ thị 21 Hình 1.14 Biểu diễn đồ thị ma trận kề 23 Hình 1.15 Biểu diễn đồ thị danh sách cạnh 24 Hình 1.16 Biểu diễn đồ thị danh sách kề 26 Hình

Ngày đăng: 22/06/2020, 11:00

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan