1. Trang chủ
  2. » Công Nghệ Thông Tin

Xử lý đồ thị lớn trên môi trường phân tán sử dụng mapreduce

74 572 1

Đ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

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNGĐẠI ĐẠI HỌC HỌC BÁCH BÁCH KHOA TRƢỜNG KHOAHÀ HÀNỘI NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG -* -* - NGUYỄN THỊ HUYỀN XỬ LÝ ĐỒ THỊ LỚN TRÊN MÔI TRƢỜNG PHÂN TÁN SỬ DỤNG MAPREDUCE ĐỀ TÀI TIỂU LUẬN AN TOÀN CÁC HỆ THỐNG THÔNG TIN TÊN ĐỀ TÀI LUẬN VĂN THẠC SĨ KỸ THUẬT TẤN CÔNG SQL INJECTION CÔNG NGHỆ THÔNG TIN Nhóm thực hiện: Chu Bá Thành Nguyễn VăQuyế Lớp: Cao học 2011A NGƢỜI HƢỚNG DẪN KHOA HỌC: Giảng viên hƣớng dẫn: TS PHẠM ĐĂNG HẢI PGS.TS Nguyễn Liniang HÀ NỘI - 2016 Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce LỜI CẢM ƠN Để hoàn thành luận văn tốt nghiệp “Xử lý đồ thị lớn môi trường phân tán sử dụng MapReduce”, lời em xin gửi lời cảm ơn sâu sắc tới TS Phạm Đăng Hải, ngƣời hƣớng dẫn bảo em tận tình suốt thời gian làm khóa luận Em xin chân thành cảm ơn PGS.TS Huỳnh Quyết Thắng, PGS.TS Nguyễn Đức Nghĩa, TS Cao Tuấn Dũng cung cấp cho em kiến thức tảng xử lý liệu môi trƣờng phân tán, lý thuyết đồ thị để em thực đề tài Cuối cùng, em xin gửi lời cảm ơn sâu sắc tới thầy cô, đồng nghiệp ngƣời thân gia đình động viên, khích lệ em trình thực luận văn Học viên Nguyễn Thị Huyền Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce LỜI CAM ĐOAN Với mục đích học tập, nghiên cứu để nâng cao trình độ chuyên môn nên làm luận văn cách nghiêm túc hoàn toàn trung thực Trong luận văn, có sử dụng tài liệu tham khảo số tác giả, nêu phần tài liệu tham khảo cuối luận văn Tôi xin cam đoan chịu trách nhiệm nội dung, trung thực luận văn tốt nghiệp Thạc sĩ Hà Nội, tháng 04 năm 2016 Học viên Nguyễn Thị Huyền Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce MỤC LỤC DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT DANH MỤC CÁC BẢNG DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ MỞ ĐẦU Lý chọn đề tài Mục đích nghiên cứu Đối tƣợng nghiên cứu Phạm vi nghiên cứu Phƣơng pháp nghiên cứu 6 Những luận điểm đóng góp đề tài CHƢƠNG 1: TỔNG QUAN VỀ XỬ LÝ ĐỒ THỊ LỚN 1.1 Giới thiệu đồ thị đồ thị lớn 1.1.1 Định nghĩa đồ thị đồ thị lớn (Big Graph) 1.1.2 Đồ thị có trọng số đƣờng 10 1.2 Nghiên cứu ứng dụng toán xử lý đồ thị lớn 11 1.3 Những thách thức xử lý đồ thị lớn 12 1.3.1 Phân tích đồ thị lớn 12 1.3.2 Thiết kế thuật toán 13 1.3.3 Nén đồ thị 13 1.3.4 Trực quan hóa đồ thị 14 1.4 Một số kỹ thuật công cụ xử lý đồ thị lớn 14 CHƢƠNG 2: MÔ HÌNH LẬP TRÌNH MAPREDUCE 16 2.1 Tổng quan Hadoop/MapReduce 16 2.1.1 Hadoop 16 a) Hadoop gì? 16 b) Kiến trúc Hadoop 17 2.1.2 MapReduce 20 2.2 Mô hình kiến trúc MapReduce 21 2.3 Hàm Map 23 2.4 Hàm Reduce 23 2.5 Vòng đời MapReduce Job 23 CHƢƠNG 3: PHÂN TÍCH ĐỒ THỊ LỚN VỚI MAPREDUCE 28 3.1 Tổng quan vấn đề phân tích đồ thị 28 3.2 Khai phá đồ thị (Graph Mining) 28 Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce 3.2.1 Các nghiên cứu liên quan đến khai phá đồ thị 29 3.2.2 Các thách thức hƣớng tiếp cận đƣợc đề xuất cho Graph Mining 31 3.3 So khớp đồ thị (Graph Matching) 32 3.3.1 Các nghiên cứu liên quan đến Graph Matching 33 3.3.2 Các thách thức hƣớng tiếp cận đƣợc đề xuất cho Graph Matching 35 3.4 Truy vấn đồ thị (Graph Querying) 36 3.4.1 Các nghiên cứu liên quan đến Graph Querying 36 3.4.2 Các thách thức hƣớng tiếp cận đƣợc đề xuất cho Graph Querying 37 CHƢƠNG 4: ỨNG DỤNG MAPREDUCE GIẢI QUYẾT BÀI TOÁN TÌM ĐƢỜNG ĐI NGẮN NHẤT TRÊN ĐỒ THỊ PHÂN TÁN 40 4.1 Bài toán tìm đƣờng ngắn thuật toán Dijkstra 40 4.1.1 Bài toán tìm đƣờng ngắn 40 4.1.2 Thuật toán Dijkstra 42 4.2 Đồ thị phân tán 43 4.3 Đề xuất thuật toán tìm đƣờng ngắn đồ thị phân tán 45 4.3.1 Ƣớc lƣợng phần 45 4.3.2 Đề xuất thuật toán 45 4.3.3 Một vài quan sát suy luận 47 4.4 Cài đặt toán sử dụng MapReduce 53 4.5 Thực nghiệm đánh giá kết 54 4.5.1 Thiết lập môi trƣờng thực nghiệm 54 4.5.2 Kết thực nghiệm 55 KẾT LUẬN 57 Kết đạt đƣợc đề tài 57 Hạn chế đề tài 58 Hƣớng phát triển đề tài 58 TÀI LIỆU THAM KHẢO 59 PHỤ LỤC 63 DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT Từ viết tắt Từ đầy đủ Giải thích Một dạng giao thức kết nối máy tính Nó nằm chuẩn MPI defacto cho kết nối nút Message Passing Interface chạy chƣơng trình song song nhớ chia sẻ đƣợc phân phối SSH HDFS Giao thức kết nối mạng có tính Secure Shell bảo mật cao Hadoop Distributed File System Hệ thống tệp tin phân tán Hadoop MR Map Reduce Mô hình lập trình Map Reduce AI Artificial Intelligence Trí tuệ nhân tạo MDL Minimum Description Length DBMS Database Management System Nguyên tắc chiều dài mô tả tối thiểu Hệ quản trị sở liệu Ngôn ngữ truy vấn mang tính cấu SQL Structured Query Language TCP Transmission Control Protocol Là giao thức kết nối mạng Bulk Synchronous Là mô hình thiết kế cho Parallelization thuật toán song song BSP trúc Là phƣơng thức chung RDF Resource Description cho mô tả khái niệm mô Framework hình hóa thông tin đƣợc diễn dịch tài nguyên web Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce DANH MỤC CÁC BẢNG Bảng 4.1: Dữ liệu đồ thị đồ thị liên kết 45 Bảng 4.2: Minh họa input output node đồ thị phân tán 48 Bảng 4.3: Kết thực câu truy vấn Q F1 51 Bảng 4.4: Kết thực câu truy vấn Q F2 52 Bảng 4.5: Kết thực câu truy vấn Q F3 52 Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ Hình 1.1: Phân loại đồ thị 10 Hình 1.2: Đồ thị có trọng số 11 Hình 1.3: Nén đồ thị 13 Hình 2.1: Kiến trúc cụm Hadoop 18 Hình 2.2: Mô hình kiến trúc HDFS 19 Hình 2.3: Mô hình MapReduce 21 Hình 2.4: Tiến trình xử lý cặp key-value MapReduce 22 Hình 4.1: Minh họa đồ thị phân tán .44 Hình 4.2: Ví dụ đồ thị phân tán có trọng số 46 Hình 4.3: Đồ thị phụ thuộc Gd đƣợc tạo từ kết Pi 52 Hình 4.4: Mô hình MapReduce trả lời câu truy vấn đồ thị phân tán 53 Hình 4.5: Thời gian thực thi câu truy vấn với số lƣợng đồ thị khác 56 Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce MỞ ĐẦU Lý chọn đề tài Cơ sở khoa học: Khái niệm đồ thị lớn xuất khắp nơi từ mạng xã hội mạng điện thoại di động đến mạng sinh học World Wide Web Khai thác đồ thị lớn dẫn đến nhiều ứng dụng thú vị bao gồm an ninh mạng, phát gian lận, tìm kiếm Web, hệ gợi ý, nhiều Việc xử lý phân tích liệu đồ thị lớn dựa nghiên cứu nhiều lĩnh vực bao gồm khoa học máy tính, thống kê, toán học, kỹ thuật liệu, nhận dạng mẫu, trực quan hóa, trí tuệ nhân tạo, học máy, tính toán hiệu cao Vấn đề đƣợc nhiều nhà nghiên cứu khoa học giới quan tâm Mô hình MapReduce: mô hình lập trình giúp ứng dụng xử lý nhanh lƣợng lớn liệu máy phân tán hoạt động song song, độc lập với từ giúp rút ngắn thời gian xử lý toàn liệu MapReduce chạy phần cứng thông thƣờng (commodity hardware), không đòi hỏi server chạy MapReduce phải máy tính có khả tính toán, lƣu trữ truy xuất mạnh mẽ Do vậy, chi phí triển khai MapReduce rẻ MapReduce làm đơn giản hoá giải thuật tính toán phân tán Với MapReduce, ta cần cung cấp hai hàm Map Reduce với số thành phần xử lý liệu đầu vào Do vậy, nhà phát triển ứng dụng phân tán tập trung nhiều cho phần logic ứng dụng, bỏ qua chi tiết phức tạp việc phân tán xử lý Sự đời MapReduce mở cho doanh nghiệp hội xử lý nguồn liệu đồ sộ với chi phí thấp thời gian nhanh Với việc áp dung MapReduce, Amazon xử lý đƣợc file log phát sinh trình bán hàng mạng, phục vụ cho việc dự đoán xu hƣớng mua hàng khách hàng, sản phẩm đƣợc mua nhiều v.v… Facebook xử lý đƣợc khối lƣợng Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce 10 tỷ hình ảnh mà họ lƣu trữ để rút trích thông tin kích thƣớc hình ảnh, phát hình ảnh xấu Cơ sở thực tiễn: Trên giới liệu đồ thị đƣợc tạo với tốc độ chƣa có Hiện đƣợc đo terabytes có xu hƣớng đến petabytes, với tỷ nút cạnh Ví dụ, Facebook tải 60 terabyte liệu ngày đƣợc coi đồ thị lớn với 1,5 tỷ đỉnh tƣơng ứng với số lƣợng ngƣời dùng tính đến năm 2015; Yahoo có đồ thị 1,4 tỷ nút Web 2002; Microsoft có 1,15 tỷ cặp truy vấn URL vào năm 2009 Google xử lý 20 petabyte ngày Tại Việt Nam ngày gia tăng tốc độ phát triển hội nhập với xu hƣớng công nghệ giới Với 30 triệu ngƣời dùng Internet 15 triệu ngƣời dùng Mobile Internet vào năm 2012, điều làm cho Việt Nam đứng trƣớc hội vô lớn khai thác liệu đồ thị lớn Sẽ có doanh nghiệp Việt Nam khai thác thành công liệu lớn với doanh số hàng trăm triệu USD vòng năm tới Đặc biệt, giai đoạn 2014-2016, xu hƣớng Mobile lƣợng ngƣời dùng Internet 3G tiếp tục tăng mạnh Các dịch vụ kết nối OTT (Over-the-top) truyền thông xã hội đóng góp 80% phƣơng thức giao tiếp online, video online nội dung số mobile Điều góp phần đẩy mạnh xu hƣớng truyền thông số đa phƣơng tiện, đa hình (PC, smartphone, tablet, smart TV) bùng nổ với độ phủ 50% dân số Việt Nam Việt Nam kho “vàng” liệu vô lớn cho việc ứng dụng Big Data, Big Graph Vì việc nghiên cứu để xử lý liệu đồ thị lớn cho hiệu thiết thực Vì lý mà chọn đề tài “Xử lý đồ thị lớn môi trường phân tán sử dụng MapReduce” làm đề tài luận văn Mục đích nghiên cứu  Nghiên cứu đƣợc số vấn đề xử lý đồ thị lớn (Big Graph) - Vấn đề liên quan đến truy vấn liệu đồ thị lớn Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce điểm thành phố cạnh đƣờng từ địa điểm đến địa điểm khác Mỗi cạnh có trọng số khoảng cánh hai địa điểm Để tạo phần đồ thị khác mà đảm bảo tính đắn liệu, đề tài sử dụng công cụ GraphLab [36] cho việc phân mảnh đồ thị thành nhiều đồ thị Tác giả chuẩn bị liệu với số phần đồ thị lần lƣợt 4, 8, 16 32 Câu truy vấn: Tác giả chọn ngẫu nhiên câu truy vấn: Tìm đƣờng ngắn từ đỉnh có mã “1” đến đỉnh có mã “14” đồ thị Câu truy vấn tồn kết đƣờng ngắn với tổng độ dài = 111751, đƣợc đƣa từ kết chạy thuật toán Dijkstra đồ thị ban đầu (chƣa phân mảnh) Tác giả dùng kết để đối chiếu với kết sinh từ thuật toán đề xuất 4.5.2 Kết thực nghiệm Trong phần này, tác giả trình bày kết việc thực câu truy vấn nêu đo lƣợng thời gian trả lời câu truy vấn môi trƣờng phân tán với liệu có kích thƣớc khác Hình 4.5 cho thấy kết chia đồ thị thành nhiều phần đồ thị thực thuật toán song song đồ thị thời gian thực thuật toán giảm dần Cụ thể liệu đƣợc chia thành phần đồ thị thời gian thực thuật toán 200s, chia thành phần đồ thị thời gian thực giảm 120s số đồ thị 32 thời gian giảm 52s 55 Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce 250 200 Thời gian thực (giây) 200 150 120 100 67 52 50 16 32 Số phần đồ thị Hình 4.5: Thời gian thực thi câu truy vấn với số lượng đồ thị khác Phân tích: Hình 4.5 thời gian trả lời câu truy vấn tỉ lệ nghịch với số phần đồ thị Thời gian giảm nhanh tăng số lƣợng hàm Map dùng cho việc tìm kiếm kết phần Ở đây, phần đồ thị đƣợc thực hàm Map Thời gian thực bao gồm thời gian khởi tạo Job Hadoop, ghi/đọc liệu từ HDFS thời gian chạy thuật toán trả lời câu truy vấn Chính vậy, không so sánh mặt thời gian thực thuật toán song song phân tán với thời gian thuật toán chạy máy Đề xuất tác giả có ý nghĩa lớn việc xử lý phân tán với liệu lớn, mà máy tính đơn không giải đƣợc mặt lƣu trữ việc xử lý tính toán 56 Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce KẾT LUẬN Kết đạt đƣợc đề tài Sau thời gian nghiên cứu thực hiện, đề tài hoàn thành đƣợc nhiệm vụ ban đầu đặt ra, với kết đạt đƣợc nhƣ sau:  Nghiên cứu đƣợc số vấn đề xử lý đồ thị lớn - Tổng quan đồ thị, đồ thị lớn ứng dụng toán xử lý đồ thị lớn - Một số thách thức, kỹ thuật công cụ xử lý đồ thị lớn  Nghiên cứu Hadoop/MapReduce  Phân tích toán đồ thị lớn với MapReduce  - Khai phá đồ thị - So khớp đồ thị - Truy vấn đồ thị Giải toán tìm đƣờng ngắn đồ thị phân tán sử dụng MapReduce  - Đề xuất thuật toán tìm đƣờng ngắn đồ thị phân tán - Thực nghiệm cài đặt toán sử dụng MapReduce Hadoop - Đánh giá kết đạt đƣợc Xuất báo : “Một cách tiếp cận cho toán tìm đƣờng ngắn đồ thị phân tán” Tạp trí Khoa học Công nghệ Trƣờng Đại học Sƣ phạm Kỹ thuật Hƣng Yên số tháng 3/2016 Tác giả : Nguyễn Thị Huyền – Phạm Đăng Hải  Kết thực nghiệm liệu đồ thị thực tế tính hiệu cách tiếp cận tác giả cho việc xử lý đồ thị lớn môi trƣờng 57 Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce phân tán Do đó, đề xuất áp dụng cho ứng dụng khác thực tế nhƣ phân tích mạng xã hội, mạng internet, mạng giao thông, v.v… Hạn chế đề tài Bên cạnh kết đạt đƣợc, khuôn khổ đề tài số việc chƣa làm đƣợc, cụ thể nhƣ: - Tác giả dừng lại việc đề xuất cài đặt thuật toán cho toán tìm đƣờng ngắn đồ thị phân tán sử dụng MapReduce, chƣa so sánh thuật toán đề xuất với thuật toán khác mặt thực nghiệm - Quá trình thực nghiệm gặp phải vấn đề khó khăn tiền xử lý liệu, việc phân mảnh đồ thị lớn với số đỉnh 10 triệu Hƣớng phát triển đề tài Việc giải hạn chế nêu hƣớng phát triển đề tài Trong tƣơng lai tác giả nghiên cứu thêm giải thuật tối ƣu cho truy vấn đồ thị phân tán nghiên cứu loại câu truy vấn khác nhƣ truy vấn có dàng buộc điều kiện, truy vấn dựa vào biểu thức quy 58 Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce TÀI LIỆU THAM KHẢO [1] Lê Minh Hoàng, “Chuyên đề Lý thuyết đồ thị.” Đại Học Sƣ Phạm Hà Nội, 1999-2002 [2] Zaharia, Matei, et al "Spark: Cluster Computing with Working Sets." HotCloud10 (2010): 10-10 [3] Leskovec, Jure, et al "Statistical properties of community structure in large social and information networks." Proceedings of the 17th international conference on World Wide Web ACM, 2008 [4] Bastian, Mathieu, Sebastien Heymann, and Mathieu Jacomy "Gephi: an open source software for exploring and manipulating networks." ICWSM (2009): 361362 [5] Dean, Jeffrey, and Sanjay Ghemawat "MapReduce: simplified data processing on large clusters." Communications of the ACM 51.1 (2008): 107-113 [6] Holder, L.B., Cook, D.J., Djoko, S.: Substucture Discovery in the SUBDUE System In: Knowledge Discovery and Data Mining, pp 169–180 (1994) [7] Inokuchi, Akihiro, Takashi Washio, and Hiroshi Motoda "An apriori-based algorithm for mining frequent substructures from graph data." Principles of Data Mining and Knowledge Discovery Springer Berlin Heidelberg, 2000 13-23 [8] Deshpande, Mukund, et al "Frequent substructure-based approaches for classifying chemical compounds." Knowledge and Data Engineering, IEEE Transactions on 17.8 (2005): 1036-1050 [9] Alexaki, Sofia, et al "On Storing Voluminous RDF Descriptions: The Case of Web Portal Catalogs." WebDB 2001 [10] Bunke, Horst, and Kim Shearer "A graph distance metric based on the maximal common subgraph." Pattern recognition letters 19.3 (1998): 255-259 [11] Pei, Jian, et al "Prefixspan: Mining sequential patterns efficiently by prefixprojected pattern growth." icccn IEEE, 2001 59 Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce [12] Yan, Xifeng, Philip S Yu, and Jiawei Han "Graph indexing: a frequent structure-based approach." Proceedings of the 2004 ACM SIGMOD international conference on Management of data ACM, 2004 [13] Jin, Changjiu, et al "GBLENDER: towards blending visual query formulation and query processing in graph databases." Proceedings of the 2010 ACM SIGMOD International Conference on Management of data ACM, 2010 [14] Padmanabhan, S., Chakravarthy, S.: HDB-Subdue: A Scalable Approach to Graph Mining In: Pedersen, T.B., Mohania, M.K., Tjoa, A.M (eds.) DaWaK 2009 LNCS, vol 5691, pp 325–338 Springer, Heidelberg (2009) [15] Pelillo, Marcello "Replicator equations, maximal cliques, and graph isomorphism." Neural Computation 11.8 (1999): 1933-1955 [16] Bunke, Horst, and Gudrun Allermann "Inexact graph matching for structural pattern recognition." Pattern Recognition Letters 1.4 (1983): 245-253 [17] Bollobás, Bela, and Fan R K Chung "The diameter of a cycle plus a random matching." SIAM Journal on discrete mathematics 1.3 (1988): 328-333 [18] Umeyama, Shinji "An eigendecomposition approach to weighted graph matching problems." Pattern Analysis and Machine Intelligence, IEEE Transactions on 10.5 (1988): 695-703 [19] Melnik, Sergey, Hector Garcia-Molina, and Erhard Rahm "Similarity flooding: A versatile graph matching algorithm and its application to schema matching."Data Engineering, 2002 Proceedings 18th International Conference on IEEE, 2002 [20] Zager, Laura A., and George C Verghese "Graph similarity scoring and matching." Applied mathematics letters 21.1 (2008): 86-94 [21] Malewicz, Grzegorz, et al "Pregel: a system for large-scale graph processing." Proceedings of the 2010 ACM SIGMOD International Conference on Management of data ACM, 2010 60 Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce [22] Atre, Medha, et al "Matrix Bit loaded: a scalable lightweight join query processor for RDF data." Proceedings of the 19th international conference on World wide web ACM, 2010 [23] Neumann, Thomas, and Gerhard Weikum "The RDF-3X engine for scalable management of RDF data." The VLDB Journal 19.1 (2010): 91-113 [24] Sun, Zhao, et al "Efficient subgraph matching on billion node graphs." Proceedings of the VLDB Endowment 5.9 (2012): 788-799 [25] Jin, Changjiu, et al "Gblender: visual subgraph query formulation meets query processing." Proceedings of the 2011 ACM SIGMOD International Conference on Management of data ACM, 2011 [26] Afrati, Foto N., Dimitris Fotakis, and Jeffrey D Ullman "Enumerating subgraph instances using map-reduce." Data Engineering (ICDE), 2013 IEEE 29th International Conference on IEEE, 2013 [27] Tong, Hanghang, et al "Fast best-effort pattern matching in large attributed graphs." Proceedings of the 13th ACM SIGKDD international conference on Knowledge discovery and data mining ACM, 2007 [28] Tian, Yuanyuan, and Jignesh M Patel "Tale: A tool for approximate large graph matching." Data Engineering, 2008 ICDE 2008 IEEE 24th International Conference on IEEE, 2008 [29] Gregor, Douglas, and Andrew Lumsdaine "The parallel BGL: A generic library for distributed graph computations." Parallel Object-Oriented Scientific Computing (POOSC) (2005): 1-18 [30] Lugowski, Adam, et al "A Flexible Open-Source Toolbox for Scalable Complex Graph Analysis." SDM Vol 12 2012 [31] Jones, Neil D "An introduction to partial evaluation." ACM Computing Surveys (CSUR) 28.3 (1996): 480-503 [32] Buneman, Peter, et al "Using partial evaluation in distributed query evaluation." Proceedings of the 32nd international conference on Very large data bases VLDB Endowment, 2006 61 Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce [33] Fan, Wenfei, et al "Adding regular expressions to graph reachability and pattern queries." Data Engineering (ICDE), 2011 IEEE 27th International Conference on IEEE, 2011 [34] Seo, Sangwon, et al "Hama: An efficient matrix computation with the mapreduce framework." Cloud Computing Technology and Science (CloudCom), 2010 IEEE Second International Conference on IEEE, 2010 [35] Camil Demetrescu 2014 “9th DIMACS Implementation Challenge: Shortest Paths”, Accessed 01-2016 http://www.dis.uniroma1.it/challenge9/download.shtml [36] Low, Yucheng, et al "Graphlab: A new framework for parallel machine learning." arXiv preprint arXiv:1408.2041 (2014) 62 Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce PHỤ LỤC Phụ lục 1: Thủ tục chạy hàm Map/Reduce ShortestPathDriver.java package search; import java.io.IOException; import import import import import import import org.apache.hadoop.conf.Configuration; org.apache.hadoop.fs.FileSystem; org.apache.hadoop.fs.Path; org.apache.hadoop.io.IntWritable; org.apache.hadoop.io.NullWritable; org.apache.hadoop.mapreduce.Job; org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class ShortestPathDriver { public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException { long startTime = System.currentTimeMillis(); Configuration conf = new Configuration(); String input = "/data/input"; String output = "/data/output"; boolean isRunOnServer = false; if (isRunOnServer) { conf.addResource(new Path("/usr/local/hadoop/conf/coresite.xml")); conf.addResource(new Path("/usr/local/hadoop/conf/hdfssite.xml")); input = args[0]; output = args[1]; conf.set("SOURCE", args[2]); conf.set("DIST",args[3]); conf.set("NUM","264346"); } else { conf.addResource(new Path("/usr/local/hadoop/conf/coresite.xml")); conf.addResource(new Path("/usr/local/hadoop/conf/hdfssite.xml")); conf.set("SOURCE", "1"); conf.set("DIST","14"); conf.set("NUM","264346"); } FileSystem hdfs = FileSystem.get(conf); if (hdfs.exists(new Path(output))) { hdfs.delete(new Path(output), true); 63 Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce } Job job = new Job(conf, "ShortestPath"); job.setJarByClass(ShortestPathDriver.class); job.setMapperClass(ShortestPathMapper.class); job.setReducerClass(ShortestPathReducer.class); job.setMapOutputKeyClass(IntWritable.class); job.setMapOutputValueClass(VertexWritable.class); job.setOutputKeyClass(NullWritable.class); job.setOutputValueClass(VertexWritable.class); job.setInputFormatClass(GraphFileInputFormat.class); GraphFileInputFormat.addInputPath(job, new Path(input)); FileOutputFormat.setOutputPath(job, new Path(output)); job.waitForCompletion(true); long stopTime = System.currentTimeMillis(); long elapsedTime1 = stopTime - startTime; System.out.println("Job time: " + elapsedTime1 / 1000 + " s\n"); System.exit(0); } } Phụ lục 2: Thủ tục ShortestPathMapper ShortestPathMapper.java package search; import import import import import import import import import import java.io.BufferedReader; java.io.ByteArrayInputStream; java.io.IOException; java.io.InputStreamReader; java.util.ArrayList; java.util.Collections; java.util.HashMap; java.util.HashSet; java.util.Map; java.util.PriorityQueue; import import import import org.apache.hadoop.conf.Configuration; org.apache.hadoop.io.IntWritable; org.apache.hadoop.io.Text; org.apache.hadoop.mapreduce.Mapper; public class ShortestPathMapper extends Mapper { public void map(Text key, Text value, Context context) throws IOException, InterruptedException { HashMap listVi = new HashMap(); HashMap listIn = new HashMap(); HashMap listOut = new HashMap(); Configuration conf = context.getConfiguration(); Init.SOURCE = Integer.parseInt(conf.get("SOURCE")); Init.DIST = Integer.parseInt(conf.get("DIST")); Init.VERTEX_NUM = Integer.parseInt(conf.get("NUM")); LoadData(value, listVi, listIn, listOut); for(Vertex v: listIn.values()){ Map listR = Dijkstra(v, listOut,listVi); VertexWritable val = new VertexWritable(); val.startId = v.id; val.listV = listR; context.write(new IntWritable(1), val); } } public static ArrayList GetShortestPathTo(Vertex target) { ArrayList path = new ArrayList(); for (Vertex vertex = target; vertex != null; vertex = vertex.previous) path.add(vertex.id); Collections.reverse(path); path.remove(0); return path; } public HashMap Dijkstra(Vertex source, HashMap listTarget, HashMap listVi) { PriorityQueue q = new PriorityQueue(); Vertex s = listVi.get(source.id); s.minDistance =0; s.previous = null; q.add(s); for (Vertex v : listVi.values()) 65 Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce { if(v.id != source.id) { v.minDistance = Integer.MAX_VALUE; v.previous= null; } } while (!q.isEmpty()) { Vertex u = q.poll(); for (Edge e : u.neighbors) { Vertex v = listVi.get(e.neighborId); int newDist = u.minDistance + e.weight; if (newDist < v.minDistance) { q.remove(v); v.minDistance = newDist; v.previous = u; q.add(v); } } } HashMap listR = new HashMap(); for(Vertex v: listVi.values()){ if(listTarget.containsKey(v.id) && v.minDistance!=Integer.MAX_VALUE) { ArrayList listP = GetShortestPathTo(v); v.listP = listP; listR.put(v.id, v); } } return listR; } public void LoadData(Text value, HashMap listVi, HashMap listIn, HashMap listOut) { try { for(int i=0;i && startNode[1].equals("1")) || vi.id==Init.SOURCE) listIn.put(vi.id, new Vertex(vi.id)); } bNode.close(); for (int i=listVi.size();i>0;i ) { if(!listT.contains(i)) listVi.remove(i); } } catch (Exception e) { e.printStackTrace(); } } } Phụ lục 3: Thủ tục ShortestPathReducer ShortestPathReducer.java package search; import import import import import java.io.IOException; java.util.ArrayList; java.util.Collections; java.util.HashMap; java.util.HashSet; 67 Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce import java.util.Iterator; import java.util.PriorityQueue; import import import import import org.apache.hadoop.conf.Configuration; org.apache.hadoop.io.IntWritable; org.apache.hadoop.io.NullWritable; org.apache.hadoop.io.Text; org.apache.hadoop.mapreduce.Reducer; public class ShortestPathReducer extends Reducer { HashMap listX = new HashMap(); HashSet listT = new HashSet(); public void reduce(IntWritable key, Iterable values, Context context) throws IOException, InterruptedException { Configuration conf = context.getConfiguration(); Init.SOURCE = Integer.parseInt(conf.get("SOURCE")); Init.DIST = Integer.parseInt(conf.get("DIST")); Init.VERTEX_NUM = Integer.parseInt(conf.get("NUM")); for(int i=0;i0;i ) { if(!listT.contains(i)) listX.remove(i); } Vertex vs = listX.get(Init.SOURCE); Vertex vt = listX.get(Init.DIST); if(vs==null || vt == null) { 68 Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce context.write(NullWritable.get(), new Text("Not found!")); } else { System.out.println("Total Input Node of Gd: "+listX.size()); String path = Dijkstra(vs, vt, listX); context.write(NullWritable.get(), new Text(path)); } } } 69 ... Nghiên cứu lý thuyết đồ thị, đồ thị lớn  Nghiên cứu ứng dụng việc khai thác xử lý đồ thị lớn  Nghiên cứu xử lý đồ thị phân tán với MapReduce ứng dụng giải toán tìm đƣờng ngắn đồ thị phân tán Những.. .Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce LỜI CẢM ƠN Để hoàn thành luận văn tốt nghiệp Xử lý đồ thị lớn môi trường phân tán sử dụng MapReduce , lời em xin... MapReduce  Ứng dụng MapReduce giải toán tìm đƣờng ngắn đồ thị phân tán Phƣơng pháp nghiên cứu  Nghiên cứu tài liệu khoa học xử lý đồ thị lớn Xử lý đồ thị lớn môi trƣờng phân tán sử dụng MapReduce

Ngày đăng: 25/07/2017, 21:58

Xem thêm: Xử lý đồ thị lớn trên môi trường phân tán sử dụng mapreduce

Mục lục

    Tài liệu tham khảo

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w