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

Nghiên cứu ứng dụng mô hình mapreduce để giải quyết bài toán đồ thị

85 14 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

Với sự phát triển của công nghệ lượng dữ liệu lưu trữ càng ngày càng lớn Điều này đặt ra nhiều thách thức Để xử lý lượng dữ liệu khổng lồ đó rất nhiều công nghệ đã ra đời Trong đó phải kể đến công nghệ tính toán phân tán Chúng ta có thể thấy sự thành công của các công ty như Google Facebook trong thời đại bùng nổ về công nghệ hiện nay Mô hình MapReduce cho phép xử lý tốt bài toán với lượng dữ liệu lớn có các tác vụ phân tích và tính toán phức tạp không lường trước được Có thể tiến hành chạy song song trên các máy phân tán một cách chính xác và hiệu quả Với nhu cầu xử lý dữ liệu lớn thời gian xử lý ngắn hơn do đó hướng ứng dụng MapReduce để giải các bài toán đồ thị

ĐẠ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 /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 ... mà cịn 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... 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... 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

Ngày đăng: 26/04/2021, 17:56

Xem thêm:

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN