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

Phân tán trong Elaticsearch

46 1.4K 13

Đ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

Đầu tiên ElasticSearch là một công cụ tìm kiếm (search engine). Mục tiêu của nó là tạo ra một công cụ, nền tảng hay kỹ thuật tìm kiếm và phân tích trong thời gian thực (nhanh chóng và chính xác), cũng như cách để nó có thể áp dụng hay triển khai một cách dễ dàng vào nguồn dữ liệu (data sources) khác nhau.

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG _ TIỂU LUẬN MÔN HỌC Đề tài: PHÂN TÁN TRONG ELASTICSEARCH - Giảng viên hướng dẫn : TS Vũ Tuyết Trinh - Học viên thực : - Phạm Việt Hưng (CA150110) - Đoàn Vũ Giang (CA150108) - Võ Thị Hường (CA150111) - Môn học : Cơ sở liệu tiên tiến - Mã học phần : IT6060 - Chuyên ngành : Công nghệ thông tin - Hà Nội: 8/2016 - MỤC LỤC - Cơ sở liệu tiên tiến - - Cơ sở liệu tiên tiến DANH MỤC HÌNH VẼ - Cơ sở liệu tiên tiến BẢNG PHÂN CÔNG CÔNG VIỆC STT Công việc Thực Tìm hiểu chung yêu cầu, định hướng tiểu luận Cả nhóm Phân công nhiệm vụ Phạm Việt Hưng Tìm hiểu tổng quan Elasticsearch Võ Thị Hường Đoàn Vũ Giang Tìm hiểu khả mở rộng, lưu trữ liệu Võ Thị Hường phân tán Elasticsearch Tìm hiểu tìm kiếm phân tán, shard cách Đoàn Vũ Giang làm việc shard Cài đặt so sánh elasticsearch với solr Phạm Việt Hưng Tổng hợp báo cáo (.doc) Cả nhóm Nộp tiểu luận Đoàn Vũ Giang - Cơ sở liệu tiên tiến I TỔNG QUAN VỀ ELASTICSEARCH I.1 Giới thiệu Đầu tiên ElasticSearch công cụ tìm kiếm (search engine) Mục tiêu tạo công cụ, tảng hay kỹ thuật tìm kiếm phân tích thời gian thực (nhanh chóng xác), cách để áp dụng hay triển khai cách dễ dàng vào nguồn liệu (data sources) khác Nguồn liệu nói trên bao gồm sở liệu tiếng MS SQL, PostgreSQL, MySQL, mà văn (text), thư điện tử (email), pdf, ElasticSearch phát triển Shay Banon dựa Apache Lucene, ElasticSearch phân phối mã nguồn mở cho việc tìm kiếm liệu máy chủ Đây giải pháp mở rộng, hỗ trợ tìm kiếm thời gian thực mà không cần có cấu hình đặc biệt Nó áp dụng số công ty, bao gồm StumbleUpon Mozilla ElasticSearch phát hành theo Giấy phép Apache 2.0 Một số thông tin Elasticsearch: • • Elasticsearch search engine Elasticsearch xây dựng để hoạt động server cloud theo chế • • • • • RESTful Kế thừa phát triển từ Lucene Apache Phát triển ngôn ngữ Java Là phần mềm open-source phát hành theo giất phép Apache License Tương tự Solr (Apache) ELASTIC-SEARCH tích hợp với tất ứng dụng sử dụng loại • • ngôn ngữ sau − Java − JavaScript − Groovy − NET − PHP − Perl − Python − Ruby Những dùng Elasticsearch : − Mozilla − Quora − SoundCloud − GitHub − Stack Exchange − Center for Open Science − Reverb − Netflix Hệ sinh thái Elasticsearch phong phú, bao gồm: − Plugins: hỗ trợ hiển thị (VD plugin_head) − Clients: hỗ trợ nhiều ngôn ngữ lập trình - Cơ sở liệu tiên tiến − − − − Logstash: hỗ trợ import liệu từ file log Kibana: hỗ trợ báo cáo thống kê Hadoop integration: hỗ trợ tích hợp với hadoop Marvel: hỗ trợ giám sát trạng thái node I.2 • Các khái niệm Elasticsearch Near Realtime Elasticsearch tảng Search gần thời gian thực, nghĩa có độ trễ nhỏ từ lúc index document lúc search ra, thường khoảng giây • Cluster Một cluster tập hợp nhiều Nodes mà nắm giữ toàn liệu cung cấp mục khả search qua tất nodes Một cluster định danh tên nhất, mặc định “elasticsearch” Tên cluster cấu hình thay đổi file elasticsearch.yml Có thể có nhiều clusters độc lập với cluster name khác • Node Một node server riêng, phần Cluster, lưu trữ liệu tham gia vào việc lập mục search Một node định danh tên riêng biệt node khởi động (mặc định tên nhân vật Marvel) Tên node cấu hình thay đổi file elasticsearch.yml Mỗi node thiết lập để join vào cluster cách khai báo cluster name Mặc định join vào “elasticsearch” cluster Điều có nghĩa khởi động vài nodes mạng, chúng nhìn thấy nhánh riêng cụm chung tên “elasticsearch” Trong cluster có node • Index Một index tập hợp documents có đặc điểm chung Một index được định danh tên viết thường (Chú ý: không viết hoa) Tên dùng để liên hệ đến index thực tạo index, search, update, delete document Trong cluster chứa nhiều indexes • Type - Cơ sở liệu tiên tiến Trong index định nghĩa nhiều types Một type mục/phân vùng có nghĩa index Một Type định nghĩa cho document bao gồm số fields Ví dụ làm blog, định nghĩa type cho liệu user, type khác cho liệu blog hay type khác cho liệu comment • Document Document đơn vị thông tin để đánh index Ví dụ document cho customer, document khác cho sản phẩm hay cho đơn đặt hàng khác Document format dạng JSON, dạng liệu phổ biến mà tất ngôn ngữ khác hiểu Trong index/type, lưu trữ nhiều documents Chú ý document cần gán vào type bên index để đánh index • Shard & Replicas Mỗi index chia thành nhiều Shards Mỗi index lưu nhiều lần Mỗi nhân bản, index có shards shards nhân (copy từ shards chính) Số lượng shards replicas khai báo tạo index Sau index tạo, thay đổi số lượng lúc thay đổi số shards Mặc định, index Elasticsearch phân thành shards replicas nghĩa cluster có nodes index có shards shards nhân bản, tổng cộng tất 10 shards I.3 • Đặc điểm ElasticSearch Real time data & Real time analytics Elasticsearch tảng Search “gần” thời gian thực, nghĩa có độ trễ nhỏ từ lúc index document lúc search ra, thường khoảng giây Tuy gặp số vấn đề lưu trữ so với engine search khác so sánh tốc độ liệu lớn, search sau cập nhật liệu Elasticseach đánh giá cao • Auto sharding & replication Elasticsearch dễ dàng mở rộng đơn giản cách thêm vào nodes tự động phân mảnh tạo dự phòng node tham gia vào cluster - Cơ sở liệu tiên tiến - • RESTful API, Developer-Friendly RESTful cách truyền liệu đơn giản, gọn nhẹ ElasticSearch hỗ trợ thêm, xoá, sửa indices thông qua phương thức HTTP GET, POST, DELETE PUT, hỗ trợ params dạng JSON thay GET params • Plug and Play Cài đặt ElasticSearch server đơn giản So với search and index engine khác điều mà nhiều người dùng mong đợi Không cần cấu hình phức tạp, ElasticSearch tự động phát kiểu liệu mà ta đưa vào Do ta cần tiến hành index tài liệu sau cài đặt xong Tuy nhiên với kiểu liệu khác kiểu liệu bản, geo_point, geo_shape phải tiến hành mapping • Language Clients Elastic hỗ trợ cho nhiều ngôn ngữ client giới thiệu phần đầu - Cơ sở liệu tiên tiến II PHÂN TÁN TRONG ELASTICSEARCH II.1 II.1.1 Khả mở rộng vượt qua lỗi Cluster trống Hình mô tả cluster với node rỗng, liệu Index, Hình Cluster với node rỗng Node server Elasticsearch, trung tâm hoạt động Elasticsearch Lưu trữ toàn liệu để thực công việc lưu trữ tìm kiếm Một node trường hợp chạy Elasticsearch, nhóm bao gồm nhiều node với cluster làm việc với để chia sẻ liệu khối lượng công việc họ Khi node thêm vào gỡ bỏ từ cluster, cluster tổ chức lại để truyền bá liệu Một node cluster chọn làm node chính, phụ trách điều khiển thay đổi cluster toàn giống việc tạo xóa mục, thêm loại bỏ node từ cluster Các node không cần phải tham gia vào thay đổi văn tìm kiếm, có nghĩa có node chủ không trở thành node cổ chai phát triểngiao thông Bất kỳ node trở thành bậc thầy Ví dụ môt cluster có node, thực vai trò chủ Khi người sử dụng, nói tới node cluster, node Mỗi node rõ tài liệu đâu chuyển tiếp yêu cầu người dùng trực tiếp đến hạch mà giữ liệu người dùng quan tâm Việc quản lý tiến trình thu thập phản hồi từ node node giữ liệu trả lại kết cuối cho khách hàng Tất quản lý minh bạch Elasticsearch II.1.2 Cluster health Trong Elasticsearch có khái niệm cluster health (tạm gọi "sức khỏe" cluster) Nhiều thống kê theo dõi cluster Elasticsearch, điều quan trọng sức khỏe cluster, mà báo cáo trạng thái màu xanh cây, vàng, đỏ Có thể kiểm tra cluster health câu lệnh: GET _cluster/health?pretty Trên Cluster trống rỗng Index, trả kết sau: { "cluster_name":"elasticsearch", - Cơ sở liệu tiên tiến "status":"green",(1) "timed_out":false, "number_of_nodes":1, "number_of_data_nodes":1, "active_primary_shards":0, "active_shards":0, "relocating_shards":0, "initializing_shards":0, "unassigned_shards":0 } (1)Trường trạng thái trường quan tâm Kết qủa trả chuỗi json có trường status, cluster health Trường nhận gía trị: II.1.3 • Red: Vẫn primary shard chưa hoạt động • Yellow: Tất primary shard hoạt động, replica shard chưa hoạt động • Green: Tất primary shard replica shard hoạt động Bổ sung Index Để bổ sung liệu vào Elasticsearch, cần Index-một nơi để lưu trữ liệu có liên quan Trong thực tế, Index không gian logic đến nhiều shard vật lý Mỗi node gồm nhiều shard Shard hoạt động mức thấp nhất, đóng vai trò lưu trữ liệu Shard có hai loại primary shard replica shard Shard Elasticsearch phân bổ liệu xung quanh cluster Hãy suy nghĩ shard container cho liệu Các tài liệu lưu trữ shard, shard phân bổ cho node cluster Khi mở rộng co lại node lại, Elasticsearch tự động di chuyển shard node để Cluster cân Một shard primary shard replica shard • Primary Shard: Dữ liệu lưu primary shard, đánh index trước chuyển đến replica shard Mặc định Elasticsearch primary shard cho index • Replica Shard: Một primary shard không có, có replica shard Vai trò replica shard đảm bảo primary shard có cố liệu toàn vẹn thay primary shard Mặc định Elasticsearch replica shard primary shard Mỗi tài liệu có mục bạn thuộc primary shard nhất, nên số lượng primary shard mà bạn phải xác định số tiền tối đa liệu mà Index bạn giữ 10 - Cơ sở liệu tiên tiến không chép phân vùng lớn Bạn chẳng cần phải làm để kích hoạt tính trộn Nó diễn tự động bạn lập liệu vào tìm kiếm Quy trình hoạt động minh hoạt hình 22: Khi lập liệu (indexing), quy trình làm (refresh) tạo phân vùng mở chúng cho việc tìm kiếm Quá trình trộn chọn số phân vùng có kích thước tương đương trộn chúng lại thành phân vùng lớn vùng sở (background) Điều không làm gián đoán việc lập liệu tìm kiếm Hình Hai phân vùng chuyển đổi phân vùng không chuyển đổi trình trộn thành phân vùng lớn hình 23 minh hoạt hành động việc trộn hoàn tất: • • Phân vùng chép (flush) vào ổ đĩa Điểm chuyển đổi ghi bao gồm phân vùng loại phân vùng nhỏ, cũ • Phân vùng khai mở cho việc tìm kiếm • Các phân vùng cũ bị xóa bỏ Hình Khi việc trộn hoàn tất, phân vùng (segment) cũ bị xóa bỏ Việc trộn phân vùng lớn tiêu tốn nhiều I/O (đầu vào/đầu ra) CPU, ảnh hưởng xấu đến hiệu suất tìm kiếm không qua kiểm tra Theo mặc định, Elasticsearch điều tiết quy trình trộn để việc tìm kiếm có đủ tài nguyên khả dụng để hoạt động hiệu 2.4.5.1 Phương thức tối ưu API (optimize API) Phương thức tối ưu API mô tả hay trộn cưỡng ép API (forced merge) Nó buộc Shard phải trộn vào số Shard định thông số max_num_segments Mục đích để hạn chế số phân vùng (thường 1) nhằm tăng hiệu suất tìm kiếm 32 - Cơ sở liệu tiên tiến Trong số trường hợp cụ thể đó, việc tối ưu API lợi ích Use case (trường hợp sử dụng) điển hình việc lập nhật ký, nhật kí lưu trữ bảng liệu ngày, tuần tháng Các số cũ mang thuộc tính đọc (read-only); chúng gần không thay đổi Trong trường hợp này, việc tối ưu Shard bảng liệu cũ thành mảnh có lợi; dùng tài nguyên việc tìm kiếm nhanh III CÀI ĐẶT VÀ SO SÁNH VỚI SOLR III.1 Giới thiệu Solr Solr platform (nền tảng) mã nguồn mở dựa Apache Lucence có khả cung cấp sử dụng Lucene Java làm thư viện cho việc index search liệu Solr nhập liệu dạng XML thông qua HTTP, sử dụng thư viện để nhập khối lượng lớn liệu Người dùng truy vấn liệu thông qua HTTP GET nhận kết dạng XML Solr chạy bên Java servlet container Tomcat, Jetty hay Resin Hình Cấu trúc chung Apache Solr Các chức Solr • • • • • • • Khả tìm kiếm văn toàn diện(Full-Text Search) giống kiểu Google Chỉnh sửa để hiệu tốt Dựa chuẩn mở giao tiếp với hệ thống khác – XML, JSON HTTP Quản trị dạng giao diện HTML đơn giản Thống kê dạng JMX Khả mở rộng nhiều server Solr Cấu hình đơn giản dễ dàng với định dạng XML 33 - Cơ sở liệu tiên tiến • • • • • • • Có khả bổ sung phần mở rộng(plugin) Ví dụ phân tích mở rộng tiếng Việt: Bắt lỗi tả, bỏ dấu,… Cho phép highlighting kết tìm kiếm, cách mà google thị thông tin tóm tắt kết mà câu truy vấn in đậm Có thể xây dựng nhiều ứng dụng khác mà trang tìm kiếm cần như: autosuggestion, spellchecking, xây dựng tagcloud, phân loại kết clustering (như Bing làm), trending keywords, category navigation, kết liên quan, nhóm kết (field collapsed) … Cho phép scale hệ thống cách dễ dàng bạn có lượng lớn liệu mà không đủ chứa máy chủ hay phải phục vụ nhiều người dùng đồng thời Solr dùng CSDL NoSQL hay cache layer, dùng cho listing cần performance tốt Solr hỗ trợ realtime cho phép tìm kiếm kết sau index Điều nàyđặc biệt khó index lớn Hiện Solr cho phép kết rât nhanh, phải hy sinh thời gian index Với liệu lớn có bạn phải 30 phút để cập nhật tài liệu Solr hỗ trợ nhiều công cụ để tinh chỉnh kết tìm kiếm, tất thông tin mà bạn cung cấp để kết trả tốt Ví dự đánh trọng số trường, click log, số lượt view, … III.2 Cài đặt Solr Elasticsearch III.2.1 Cài đặt Solr Máy cài đặt: 01 máy, cấu sau - Máy 1: hungpv − CPU: Intel core i5 4460 3.10GHz − RAM: 8Gb − OS: Windows 64-bit Java phiên 1.8 Source Apache Solr phiên 4.7 34 - Cơ sở liệu tiên tiến - Khởi động Solr ta sử dụng lệnh sau: cd $SOLR_INSTALL/example java -jar start.jar Có thể kiểm tra Solr dẫn: http://localhost:8983/solr/ chạy cách truy nhập đường 35 - Cơ sở liệu tiên tiến III.2.2 Cài đặt Elasticsearch Máy cài đặt: 03 máy, cấu sau - - - Máy 1: hungpv − CPU: Intel core i5 4460 3.10GHz − RAM: 8Gb − OS: Windows 64-bit Máy 2: anhnvn − CPU: Intel pentium Dual-Core E6500 2.93GHz − RAM: 3Gb − OS: Windows 64-bit Máy 3: haopm − CPU: Intel core i3 3220 3.30GHz − RAM: 4Gb − OS: Windows 8.1 64-bit Java phiên 1.8 Source Elasticsearch phiên 1.6.0 Cấu hình file config: elasticsearch.yml để node tham gia vào cluster, tên cluster gpcn chẳng hạn Khởi động Elasticsearch ta sử dụng lệnh sau: cd $ELASTICSEARCH_INSTALL/bin 36 - Cơ sở liệu tiên tiến elasticsearch.bat Có thể kiểm tra Elasticsearch chạy máy cách truy nhập đường dẫn: http://localhost:9200/?pretty Để có nhìn toàn thể node cluster, cài đặt plugin head: elasticsearch/bin/plugin -install mobz/elasticsearch-head/1.x Sau truy cập: http://localhost:9200/_plugin/head/ 37 - Cơ sở liệu tiên tiến III.3 III.3.1 Kịch test Dữ liệu đầu vào Dữ liệu 10000 phim từ Movilens, mở file movies.csv có dạng sau: Để import liệu vào Solr Elasticsearch, ta sử dụng Java API: − Đối với Solr: sử dụng Solrj − Đối với Elasticsearch: sử dụng TransportClient Riêng với Solr, để import liệu vào ta phải khai báo tên trường, kiểu trường file config là: schema.xml Ta so sánh thời gian lưu liệu thời gian truy vấn liệu Solr Elasticsearch phần sau III.3.2 So sánh hiệu lưu liệu Đối với Solr, thời gian để lưu liệu đo khoảng: 14.5s import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrServer; import org.apache.solr.common.SolrInputDocument; import java.io.File; import java.io.IOException; import java.util.Scanner; public class solr { public static void main(String[] args) throws IOException, SolrServerException { long beginTime, elapsedTime; HttpSolrServer server = new HttpSolrServer("http://localhost:8983/solr/"); // Empty the database server.deleteByQuery( "*:*" );// delete everything! 38 - Cơ sở liệu tiên tiến // Read file File file = new File("C:/Users/hungpv/Desktop/movies.csv"); Scanner scanner = new Scanner(file); scanner.nextLine(); // this will read the first line beginTime = System.nanoTime(); while (scanner.hasNextLine()) { String line = scanner.nextLine(); String[] tokens = line.split("::"); String id = tokens[0]; String title = tokens[1]; String genre = tokens[2]; SolrInputDocument doc = new SolrInputDocument(); doc.addField("id", id); doc.addField("title", title); doc.addField("genre", genre); server.add(doc); } server.commit(); scanner.close(); elapsedTime = System.nanoTime() - beginTime; System.out.println("elapsedTime: " + elapsedTime/1000); } } Đối với Elasticsearch, thời gian để lưu liệu đo khoảng: 36.1s import org.elasticsearch.ElasticsearchException; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.client.Client; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.settings.ImmutableSettings; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.InetSocketTransportAddress; import java.io.File; import java.io.IOException; import java.util.Scanner; import java.util.concurrent.ExecutionException; 39 - Cơ sở liệu tiên tiến import static org.elasticsearch.common.xcontent.XContentFactory.*; public class movies { public static void main(String[] args) throws ElasticsearchException, IOException, InterruptedException, ExecutionException { long beginTime, elapsedTime; Settings settings = ImmutableSettings.settingsBuilder() put("cluster.name", "gpcn").build(); Client client = new TransportClient(settings) addTransportAddress(new InetSocketTransportAddress( "192.168.7.205", 9300)); // Read file File file = new File("C:/Users/hungpv/Desktop/movies.csv"); Scanner scanner = new Scanner(file); // this will read the first line scanner.nextLine(); beginTime = System.nanoTime(); while (scanner.hasNextLine()) { String line = scanner.nextLine(); String[] tokens = line.split("::"); String id = tokens[0]; String title = tokens[1]; //String title = tokens[1].replace("\"", ""); String genre = tokens[2]; IndexResponse indexResponse = client prepareIndex("movielens", "movie", id) setSource( jsonBuilder().startObject().field("title", title) field("genre", genre).endObject()) execute().actionGet(); } scanner.close(); elapsedTime = System.nanoTime() - beginTime; System.out.println("elapsedTime: " + elapsedTime/1000); 40 - Cơ sở liệu tiên tiến client.close(); } } III.3.3 So sánh hiệu truy vấn Đối với Solr, thời gian trả truy vấn đo khoảng: 0.12s import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrServer; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocumentList; public class query { public static void main(String[] args) throws SolrServerException { long beginTime, elapsedTime; HttpSolrServer server = new HttpSolrServer("http://localhost:8983/solr/"); SolrQuery query = new SolrQuery(); query.setQuery("toy story"); //query.addSortField("price", SolrQuery.ORDER.asc); beginTime = System.nanoTime(); QueryResponse response = server.query(query); SolrDocumentList docs = response.getResults(); elapsedTime = System.nanoTime() - beginTime; System.out.println(docs); System.out.println("elapsedTime: " + elapsedTime/1000); //System.out.println(docs.get(0).getFieldValue("title")); } } Đối với Elasticsearch, thời gian trả truy vấn đo khoảng: 0.05s import java.io.IOException; import org.elasticsearch.ElasticsearchException; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.Client; 41 - Cơ sở liệu tiên tiến import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.settings.ImmutableSettings; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.InetSocketTransportAddress; import org.elasticsearch.index.query.QueryBuilders; public class search { public static void main(String[] args) throws ElasticsearchException, IOException { long beginTime, elapsedTime; Settings settings = ImmutableSettings.settingsBuilder() put("cluster.name", "gpcn").build(); Client client = new TransportClient(settings) addTransportAddress(new InetSocketTransportAddress( "192.168.7.205", 9300)); beginTime = System.nanoTime(); SearchResponse searchResponse = client.prepareSearch("movielens") setTypes("movie").setQuery(QueryBuilders.queryStringQuery("toy story")) // setQuery(QueryBuilders.termsQuery("genre","drama")) execute().actionGet(); elapsedTime = System.nanoTime() - beginTime; System.out.println("searchResponse: " + searchResponse); System.out.println("elapsedTime: " + elapsedTime/1000); } } 42 - Cơ sở liệu tiên tiến IV KẾT LUẬN Sau cài đặt thử nghiệm so sánh phân tán Elastic search Solr chúng em có kết luận sau: Thứ 1, thời gian lưu liệu Elasticsearch lâu so với Solr, nhiên thời gian truy vấn nhanh Với chức search engine, ta quan tâm đến chức read nhiều chức write, hiệu Elasticsearch chiếm ưu Thứ 2, Elasticsearch có kiến trúc phân tán, Solr standalone Điều đảm bảo cho Elasticsearch có khả mở rộng chịu lỗi tốt Gần đây, Solr phát triển SolrCloud với mục đích biến hoạt động Solr giống Elasticsearch Thứ 3, thực tế có nhiều công ty chuyển từ Solr sang Elasticsearch, điều cho thấy Elasticsearch chiếm ưu so với Solr 43 - Cơ sở liệu tiên tiến LỜI CẢM ƠN Môn học Cơ sở liệu tiên tiến mang đến cho chúng em kiến thức sở liệu phân tán, tích hợp liệu, làm việc với kho liệu, xử lý phân tích trực tuyến biết thêm hệ sở suy diễn, hướng đối tượng Qua trình thực đề tài, phần chúng em hiểu thêm Phân tán Elasticsearch, hiểu Elasticsearch lưu trữ liệu phân tán, tìm kiếm liệu phân tán nào… Tuy nhiên, kiến thức hạn chế nên đề tài chúng em dừng lại mức nghiên cứu tìm hiểu Chúng em xin chân thành gửi tới cô giáo TS Vũ Tuyết Trinh lời cảm ơn sâu sắc Cô tận tình giảng dạy cung cấp cho chúng em kiến thức tài liệu cần thiết để chúng em hoàn thành tiểu luận 44 - Cơ sở liệu tiên tiến TÀI LIỆU THAM KHẢO Bài giảng môn học “Cơ sở liệu tiên tiến” – TS Vũ Tuyết Trinh https://cwiki.apache.org/confluence/display/solr/A+Quick+Overview https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html Solr in Action by Tim Potter and Trey Grainger Elasticsearch the definitive guide by Clinton Gormley & Zachary Tong 45 - Cơ sở liệu tiên tiến NHẬN XÉT CỦA GIÁO VIÊN ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………… 46 [...]... một phân vùng lớn hơn trong vùng cơ sở (background) Điều này không làm gián đoán việc lập dữ liệu và tìm kiếm Hình Hai phân vùng được chuyển đổi và một phân vùng không được chuyển đổi trong quá trình trộn thành một phân vùng lớn 3 hình 23 minh hoạt hành động khi việc trộn hoàn tất: • • Phân vùng mới được chép (flush) vào ổ đĩa Điểm chuyển đổi mới được ghi bao gồm phân vùng mới và loại ra các phân. .. trọng hơn, mỗi yêu cầu tìm kiếm đến lượt chúng sẽ phải kiểm tra mỗi phân vùng Càng có nhiều phân vùng thì tìm kiếm sẽ diễn ra càng chậm Elasticsearch giải quyết rắc rối này bằng cách trộn phân vùng thành một vùng cơ sở (background) Các phân vùng nhỏ sẽ được trộn thành một phân vùng lớn, và các phân vùng lớn này lại được trộn thành các phân vùng lớn hơn nữa Đây chính là lúc mà các tài liệu cũ đã bị xóa... (in-memory indexing buffer), như trong hình 15, trước khi được ghi vào một phân vùng ổ đĩa, như hình 16 Hình Một bảng dữ liệu lucene với một điểm chuyển đổi và ba phân vùng Tìm kiếm trên một phân mảnh hoạt động như sau: 1 Các tài liệu mới được tập hợp trong vùng đệm tạo dữ liệu ghi nhớ (in-memory indexing buffer) Xem hình 14 2 Tùy tình huống mà vùng đệm được chuyển đổi: • Một phân vùng mới – tức là một... (Xóa và Cập nhật) Các phân vùng mang tính không biến đổi, nên không thể di chuyển tài liệu ra khỏi các phân vùng cũ, cũng không thể cập nhật các phân vùng cũ cho phiên bản mới hơn của tài liệu Thay vào đó, mỗi điểm chuyển đổi sẽ bao gồm một tập tin del liệt kê những tài liệu nào nằm trong phân vùng nào sẽ bị xóa bỏ Thực ra khi bị “xóa bỏ” thì tài liệu sẽ được đánh dấu là đã xóa trong tập tin del Một... các replica shards đang hoạt động Trong thực tế, cả 3 replica shards hiện đang unassigned, không được phân bổ cho một node Nó không có ý nghĩa để lưu trữ các bản sao của cùng một dữ liệu trên cùng một node Nếu để mất node đó, thì sẽ mất tất cả các bản sao của dữ liệu Chú ý, không bắt buộc primary shard đều nằm ở node master, vì việc phân tán các primary shard giúp phân tán công đoạn ghi dữ liệu, giúp... Elasticsearch, có giới thiệu ý tưởng về tìm kiếm trên mỗi phân mảnh (per-segment-search) Một phân mảnh (segment) tự nó là một bảng dữ liệu nghịch đảo, nhưng giờ đây từ ngữ index (bảng dữ liệu) trong Lucene mang nghĩa là tập hợp những phân mảnh cộng với một điểm chuyển giao (commit point) – một tập tin liệt kê tất cả những phân mảnh đã biết, như mô tả trong hình 14 Các tài liệu mới trước tiên sẽ được thêm... tài liệu trong vùng đệm tạo dữ liệu ghi nhớ (hình 17) được ghi vào một phân vùng (segment) mới (hình 18) Nhưng phân vùng mới trước tiên được ghi vào bộ nhớ đệm hệ thống tập tin – điều này ít tốn kém – sau đó mới được dồn vào ổ đĩa – điều này thì tốn kém Nhưng một khi tập tin nằm trong bộ nhớ đệm thì có thể đọc hoặc mở nó, như bao tập tin khác Hình Bảng dữ liệu Lucene với các tài liệu mới trong vùng... một bảng dữ liệu, nó sẽ phải chiếu lại tất cả những hoạt động trong nhật ký chuyển giao (translog), nếu nhật ký càng nhắn thì việc khôi phục càng nhanh II.4.5 Trộn phân vùng Với quy trình làm mới tự động tạo ra một phân vùng mới mỗi giây, thì sẽ không mất nhiều thời gian để loại bỏ chúng Quá nhiều phân vùng (segment) sẽ là một rắc rối Mỗi phân vùng sẽ tiêu tốn vào việc xử lý tập tin, bộ nhớ, và các... động, các báo cáo node thành công đến node yêu cầu, trong đó đối chiếu các câu trả lời và trả chúng cho khách hàng Các API số lượng lớn cũng chấp nhận các thông số nhân rộng và tính thống nhất ở cấp cao nhất cho toàn bộ yêu cầu số lượng lớn và các thông số định tuyến trong các siêu dữ liệu cho mỗi yêu cầu II.3 II.3.1 Tìm kiếm phân tán Pha truy vấn Trong suốt quá trình diễn ra pha truy vấn ban đầu này,... tiên tiến sẽ không được sao chép trong phân vùng mới lớn hơn Bạn chẳng cần phải làm gì để kích hoạt tính năng trộn cả Nó diễn ra tự động khi bạn lập dữ liệu vào tìm kiếm Quy trình này hoạt động như minh hoạt trong hình 22: 1 Khi lập dữ liệu (indexing), quy trình làm mới (refresh) sẽ tạo ra những phân vùng mới và mở chúng cho việc tìm kiếm 2 Quá trình trộn sẽ chọn một số phân vùng có kích thước tương đương

Ngày đăng: 30/08/2016, 17:04

Xem thêm: Phân tán trong Elaticsearch

TỪ KHÓA LIÊN QUAN

Mục lục

    DANH MỤC HÌNH VẼ

    BẢNG PHÂN CÔNG CÔNG VIỆC

    I. TỔNG QUAN VỀ ELASTICSEARCH

    I.2. Các khái niệm trong Elasticsearch

    I.3. Đặc điểm của ElasticSearch

    II. PHÂN TÁN TRONG ELASTICSEARCH

    II.1. Khả năng mở rộng và vượt qua lỗi

    II.1.5. Mở rộng theo chiều ngang

    II.1.6. Khả năng chịu lỗi

    II.2. Lưu trữ dữ liệu phân tán

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

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

TÀI LIỆU LIÊN QUAN

w