b) Kiến trúc của Hadoop
3.2.1. Các nghiên cứu liên quan đến khai phá đồ thị
Khai phá đồ thị bao gồm một lớp thuật toán đặc biệt có thể tìm thấy các mô hình đồ thị con trùng lặp trong đồ thị đầu vào. Tuy nhiên không có nhiều nghiên cứu thực hiện các thuật toán trong mô hình lập trình Map/Reduce để xử lý nhanh hơn và có khả năng mở rộng hơn. Mục đích của các thuật toán khai phá đồ thị là để tìm ra các mô hình đồ thị trùng lặp trong một đồ thị, điểm then chốt của các thuật toán này là giai đoạn kiểm tra đặc tính đẳng cấu hoặc phát hiện đồ thị con tƣơng đồng. Tính chất lặp của các thuật toán cơ bản đã dẫn đến sự ra đời của ba phƣơng pháp tiếp cận chính nhằm giải quyết vấn đề về khai phá đồ thị.
Phƣơng pháp sử dụng bộ nhớ chính: Các phƣơng pháp này đƣợc sử dụng với các đồ thị nhỏ và đủ để đƣa vào bộ nhớ chính. Trƣớc đó, các phƣơng pháp và các thuật toán khai phá đồ thị đƣợc xây dựng bởi các nhà nghiên cứu về trí tuệ nhân tạo (AI), những ngƣời mà đã đặt ra mục tiêu xác định đƣợc những nội dung quan trọng trong một tập hợp dữ liệu có cấu trúc. Các thuật toán này nạp toàn bộ đồ thị (dƣới dạng một danh sách kề hoặc một ma trận) vào bộ nhớ để đạt đƣợc hiệu quả nhất định. SUBDUE [6] đã đặt nền tảng cho việc khai phá đồ thị, ở đây các mô hình đồ thị đƣợc đánh giá bằng cách sử dụng hệ số đo đƣợc gọi là Nguyên tắc chiều dài mô tả tối thiểu (Minimum Description Length - MDL). Các thuật toán bắt đầu với việc kết nối các cấu trúc con với một đỉnh trong đồ thị. Thông qua mỗi bƣớc lặp
30
thuật toán giúp lựa chọn các cấu trúc con tốt nhất và mở rộng các dạng cấu trúc con này bằng một cạnh kề. Thuật toán giữ đƣợc các cấu trúc con tốt nhất trong một danh sách và đƣợc trả về khi tất cả các cấu trúc con có thể tồn tại đã đƣợc xem xét hoặc tổng số lƣợng tính toán vƣợt giới hạn đã cho. Việc đánh giá mỗi cấu trúc con đƣợc thực hiện căn cứ theo nguyên tắc chiều dài mô tả tối thiểu (MDL) và các quy định tri thức cơ bản do ngƣời dùng cung cấp. Tiếp sau SUBDUE là Apriori Graph Minin (AGM) [7] đã đề xuất thuật toán apriori-type cho khai phá đồ thị. Thuật toán này giúp phát hiện đồ thị con thƣờng xuyên xuất hiện trong dữ liệu đồ thị. Khám phá các đồ thị con thƣờng xuyên xuất hiện (Frequent Subgraph Discovery - FSG) [8] đã phát hiện ra đồ thị con mà xuất hiện thƣờng xuyên trên toàn bộ đồ thị. FSG là nghiên cứu đầu tiên sử dụng các khái niệm quy tắc gán nhãn (canonical labelling) cho các đồ thị và cho rằng hai đồ thị tƣơng tự nên có cùng quy tắc gán nhãn. Tất cả các thuật toán sử dụng bộ nhớ chính cần phải giữ một cấu trúc dữ liệu trong bộ nhớ và nhƣ vậy là không thể mở rộng cho các đồ thị với kích thƣớc lớn (Big Graph).
Các phƣơng pháp sử dụng hệ thống đĩa: Khi các ứng dụng dùng thông tin có cấu trúc trở lên thông dụng thì các kỹ thuật khai phá đồ thị dựa vào hệ thống đĩa
[9,10,11] đã đƣợc phát triển để khắc phục các vấn đề lƣu trữ toàn bộ dữ liệu cài đặt trong bộ nhớ chính. Một phần của dữ liệu đƣợc lƣu giữ trong bộ nhớ và phần còn lại đã nằm trên đĩa. Khi dữ liệu nằm trên đĩa, những vấn đề thắc mắc về cách sử dụng truy cập tuần tự hoặc ngẫu nhiên trở nên khá phổ biến. Truy cập dữ liệu tuần tự từ đĩa nhanh hơn nhiều so với truy cập ngẫu nhiên khi các phần tử cần truy cập có kích thƣớc khác nhau. Nếu các phần tử cần truy cập có cùng kích thƣớc, khi đó thực hiện truy cập ngẫu nhiên là tốt hơn. Ngoài ra, kỹ thuật lập chỉ mục hỗ trợ hoạt động truy cập khi các phần tử cần truy cập có kích thƣớc khác nhau. Một đồ thị lớn có thể đƣợc lập chỉ mục bởi các cấu trúc nhỏ thƣờng xuyên xuất hiện trong đồ thị, giống nhƣ trong gIndex [12] và GBLENDER [13], việc khai thác các cấu trúc con thƣờng xuyên xuất hiện từ các đồ thị càng trở nên có ý nghĩa hơn.
Phƣơng pháp định hƣớng theo cơ sở dữ liệu: Các thuật toán dùng hệ thống đĩa giúp giải quyết vấn đề lƣu đồ thị trong bộ nhớ để xử lý. Tuy nhiên, các thuật
31
toán này cần phải sắp xếp dữ liệu giữa bộ nhớ ngoài và bộ nhớ đệm, và quy trình này đã đƣợc mã hóa thành các thuật toán. Hiệu năng của nó có thể là yếu tố cần đƣợc xem xét bởi việc tối ƣu hóa chuyển đổi tối ƣu dữ liệu giữa đĩa và bộ nhớ, cũng nhƣ kích thƣớc bộ nhớ đệm, quản lý đệm bộ nhớ, và mức độ truy cập. Một cách tiếp cận khác là kiểm soát bộ nhớ đệm hiệu quả và tối ƣu hóa truy vấn - đã phát triển mạnh trong hệ quản lý trị sở dữ liệu (Database Management System - DBMS) - bằng cách ánh xạ các thuật toán khai phá đồ thị vào SQL và lƣu trữ trong một DBMS. Tuy nhiên SQL cũng bộc lộ cả hai mặt ƣu điểm và nhƣợc điểm. Các kết nối đƣợc sử dụng để mở rộng các cấu trúc con, do đó không thể tránh khỏi hiện tƣợng trùng lặp. Vì thế, nhiệm vụ giảm trùng lặp trƣớc khi kiểm tra tính đảng cấu đã trở thành một nhiệm vụ quan trọng đặt ra đối với các thuật toán. HDB-SUBDUE [14] là dạng thay đổi cuối cùng của SUBDUE, giúp xử lý các cạnh có hƣớng, so khớp đồ thị chính xác và xử lý các chu trình, vòng lặp một cách dễ dàng. HDB-SUBDUE có thể xử lý đồ thị với hàng triệu cạnh và đỉnh. Tuy nhiên, một số lƣợng lớn các điểm nối và điểm chuyển đổi dùng cho giai đoạn loại bỏ trùng lặp đã làm tăng thời gian chạy thực của thuật toán. Ngày nay, dữ liệu các đồ thị lớn lên đến hàng Giga-bytes, và tƣơng lai có thể lên đến hàng Tega hay Peta-byte. Vì vậy, nhiều nghiên cứu đã đƣợc thực hiện để tìm ra một số cách tiếp cận khác cho khai phá đồ thị dựa trên hệ thống đĩa cứng. Một mô hình đã đƣợc đề xuất cho việc thực hiện song song đó là Map/Reduce. Mô hình Map/Reduce đã đƣợc sử dụng trong khai thác đồ thị ở nhiều ứng dụng. Mô hình này cũng còn nhiều hạn chế, tuy nhiên có khả năng mở rộng tốt hơn so với các phƣơng pháp tiếp cận dựa trên hệ thống dùng đĩa trƣớc đó.
3.2.2. Các thách thức và hƣớng tiếp cận đƣợc đề xuất cho khai phá đồ thị
Thách thức đầu tiên đặt ra là sự thay đổi của hệ thống file và khả năng ứng dụng của thuật toán đối với hệ thống file mới. Mô hình Map/Reduce và phiên bản mã nguồn mở của nó (Hadoop) đi kèm với hệ thống file phân tán dùng lƣu trữ dữ liệu trên toàn cục trong khi mỗi nút (node) trong cụm máy tính có hệ thống file cục
32
bộ riêng của nó để lƣu trữ trong phạm vi cục bộ. Truy cập tuần tự hoạt động tốt nhất với HDFS bởi HDFS gửi tới các máy khách những dữ liệu cần thiết. Truy cập từ HDFS tới máy khách thực hiện bằng cách sử dụng giao thức TCP. Vì vậy, trong truy cập tuần tự chỉ có một kết nối TCP đƣợc mở ra bởi vì HDFS luôn gửi các dữ liệu kết nối kế tiếp thông qua cùng một kết nối. Một truy cập ngẫu nhiên trong HDFS cũng đƣợc xử lý nhƣ một truy cập tuần tự. Mỗi truy cập ngẫu nhiên đòi hỏi một kết nối TCP mới. Do đó, truy cập ngẫu nhiên từ HDFS không phải là một phƣơng pháp thích hợp để truy cập mọi thông tin từ HDFS bởi vì việc khởi tạo TCP thƣờng xuyên sẽ làm tăng mạnh chi phí. Một giải pháp cho vấn đề này là việc hình thành các phân mảnh đồ thị (graph partitioning), ở đó mỗi nút sẽ làm việc độc lập trên một phân vùng.
Thách thức thứ hai phải đối mặt là xác định xem hệ thống sẽ cần bao nhiêu nút tính toán trong cụm (mapper/reducer) để đạt đƣợc tốc độ mong muốn. Số Mapper trong hệ thống phụ thuộc vào số lƣợng các phân vùng của dữ liệu đầu vào hoặc số lƣợng các phân vùng của dữ liệu đầu ra của Map/Reduce khác. Số lƣợng Reducer thƣờng đƣợc xác định bởi số lƣợng các khóa (key) đƣợc hình thành trong giai đoạn Shuffle.
3.3. So khớp đồ thị (Graph Matching)
So khớp đồ thị là bài toán so sánh hai hoặc nhiều hơn hai đồ thị với nhau. Trên thực tế, có hai loại so sánh. So khớp chính xác đƣợc mô tả bởi khái niệm bảo toàn cạnh, nghĩa là nếu hai đỉnh trong đồ thị đầu tiên đƣợc liên kết bởi một cạnh thì chúng đƣợc vẽ tới hai đỉnh của một đồ thị khác cũng đƣợc liên kết bởi một cạnh. Một điều kiện trọng yếu của việc so khớp đó là các nhãn của đỉnh, các cạnh và các kết nối cũng phải giống với nhau. Vì vậy nên tồn tại một sự tƣơng ứng 1-1 giữa mỗi đỉnh và cạnh của đồ thị này với mỗi đỉnh và cạnh của một đồ thị khác. Phép so khớp nhƣ vậy đƣợc gọi là đồ thị con đẳng cấu. Một điều kiện thứ yếu của so khớp đó là tính đẳng cấu, ở đây một đỉnh trong đồ thị đầu tiên có thể đƣợc so khớp với nhiều hơn một đỉnh trong đồ thị khác. Cuối cùng, một đặc trƣng so khớp nữa đó là một đồ
33
thị con của đồ thị đầu tiên có thể đƣợc so khớp với một đồ thị con của đồ thị thứ hai. Bởi vì một ánh xạ nhƣ vậy không đƣợc xác định duy nhất nên mục đích là để tìm ra đồ thị con phổ biến lớn nhất của hai đồ thị. Tuy nhiên, các điều kiện trọng yếu áp dụng cho so khớp đồ thị chính xác cần đƣợc nới lỏng trong một vài trƣờng hợp mà các đồ thị chịu sự biến dạng do nhiều nguyên nhân nhƣ sự thay đổi về mô hình. Ngay cả khi không có biến dạng nào việc so khớp gần đúng cũng có thể hữu ích. Trong trƣờng hợp xấu nhất, các thuật toán so khớp chính xác có độ phức tạp thời gian theo hàm số mũ, do đó rất đáng để áp dụng nếu một phƣơng pháp nhanh hơn có thể đƣa ra cho một kết quả gần đúng trong thời gian hợp lý. So khớp đồ thị là một vấn đề đƣợc nghiên cứu trong khoa học máy tính với nhiều ứng dụng trong Sinh học (Biology), Computer Vision và phân tích hợp chất hóa học.
3.3.1. Các nghiên cứu liên quan đến so khớp đồ thị
Nhiều biện pháp đo độ tƣơng tự đã đƣợc đề xuất và nghiên cứu để thực hiện so khớp đồ thị. Những phƣơng pháp này có thể đƣợc phân ra thành ba loại:
Phƣơng pháp Edit Distance: Ở đây sự giống nhau của 2 đồ thị đƣợc đo bởi chi phí biến đổi của một đồ thị thành một đồ thị khác. Hai đồ thị giống nhau nếu chúng là đẳng cấu [15], hoặc một đồ thị đẳng cấu với đồ thị con của đồ thị kia hoặc hai đồ thị con của các đồ thị này đẳng cấu với nhau. Phƣơng pháp Edit Distance là sự tổng hợp của phƣơng pháp đồ thị đẳng cấu mà mục đích là để giảm hao phí biến đổi đồ thị [16]. Một cách tổng quát, khái niệm về chi phí liên quan đến tất cả các hoạt động biến đổi nhƣ chèn, xóa và thay thế. Do đó các số đo nhƣ thiếu cạnh, khoảng cách chỉnh sửa đồ thị rất thích hợp để phân tích hợp chất hóa học và các mạng sinh học. Tuy nhiên, mạng xã hội (social network) là khác nhiều so với những mạng vật lý này và thƣờng có nhiều nhiễu. Do có nhiễu nên các đồ thị mạng xã hội không đƣợc phù hợp trong các so khớp chính xác. Hơn nữa các phƣơng pháp so khớp đồ thị không đƣợc mở rộng tốt đối với các mạng lớn. Ví dụ, số đo khoảng cách chỉnh sửa so khớp mỗi đỉnh với mỗi đỉnh khác của đồ thị làm tăng thêm sự phức tạp về số mũ. Tuy nhiên phƣơng pháp nhánh cận đƣợc sử dụng bởi SUBDUE
34
làm cho số lƣợng các ánh xạ của thuật toán ít hơn so với thuật toán ban đầu. So khớp gần đúng trong SUBDUE có thể so sánh cả hai đồ thị có kích thƣớc giống và khác nhau bằng cách sử dụng độ đo tƣơng tự. Độ đo tƣơng tự trong SUBDUE là số lƣợng các ánh xạ cần thiết để tạo nên chúng một cách chính xác bởi: i) thay đổi nhãn cạnh; ii) bổ sung các đỉnh và các cạnh; iii) xóa bỏ các đỉnh và các cạnh. Tuy nhiên, vì SUBDUE là thuật toán dựa vào bộ nhớ trong và có một thời gian khởi tạo cao đối với các tập dữ liệu lớn, nên nhu cầu phát triển các thuật toán so khớp đồ thị (cho cả so khớp chính xác và gần đúng) cái mà có thể mở rộng khi kích thƣớc của đồ thị ngày càng tăng.
Phƣơng pháp trích chọn đặc trƣng (Feature Extraction): Các đồ thị tƣơng tự
có các đặc trƣng tƣơng tự. Các đặc trƣng đƣợc nghiên cứu chủ yếu là độ phân bố, đƣờng kính [17], giá trị eigen [18] và hệ số nén. Những đặc trƣng cơ bản này của đồ thị đóng một vai trò vô cùng phổ biến trong việc so khớp sự giống nhau của hai đồ thị. Sau khi trích chọn những tính năng này, một độ đo tƣơng tự đƣợc áp dụng dựa trên số liệu thống kê tổng hợp. Những phƣơng pháp này có khả năng mở rộng vì chúng ánh xạ đồ thị lớn với một vài số liệu thống kê nhỏ hơn cái mà nhỏ hơn nhiều so với kích thƣớc đồ thị. Các kết quả về độ tƣơng tự không phải luôn luôn đƣợc nhìn thấy bằng trực quan vì chúng có thể có độ tƣơng tự cao ngay cả khi chúng có kích thƣớc tập đỉnh khác nhau. Tuy nhiên, việc khảo sát các đặc trƣng này, ví dụ nhƣ tìm đƣờng kính hoặc hệ số nén trong các đồ thị lớn không phải là đơn giản. Vì vậy, cần phải sử dụng đến các kỹ thuật xử lý song song để đánh giá các đặc trƣng này trong các đồ thị lớn.
Phƣơng pháp lặp: Khả năng trực giác đằng sau phƣơng pháp lặp đó là hai đồ
thị tƣơng tự nhau nếu các đỉnh lân cận của một tập đỉnh là giống nhau. Trong mỗi bƣớc lặp, các đỉnh trao đổi giá trị của chúng và quá trình kết thúc khi đạt đƣợc độ hội tụ. So khớp lƣợc đồ dữ liệu [19] cố gắng giải quyết vấn đề này bằng việc tìm ra sự giống nhau giữa hai nút trong một đồ thị. Quá trình bắt đầu bằng cách tạo ra một đồ thị liên thông theo cặp và sau đó đƣợc đƣa vào một đồ thị lan truyền mà ở đó các điểm giống nhau đƣợc lan truyền cho đến khi hội tụ. Thay vì chỉ nhìn vào điểm
35
giống nhau của các đỉnh, Zager và Verghese [20] đã đề xuất một thuật toán xem xét sự giống nhau của cả đỉnh và cạnh và cạnh. Phƣơng pháp này so sánh tất cả các cặp nút và cặp cạnh để tìm ra sự giống nhau giữa hai đồ thị. Tuy nhiên, việc tạo ra đồ thị liên thông theo cặp sẽ tốn nhiều chi phí đối với cách tiếp cận sử dụng bộ nhớ chính. Vì kích thƣớc các đồ thị liên tục tăng, các phƣơng pháp phân tán để ƣớc lƣợng sự tƣơng tự giữa các đồ thị trở nên hết sức quan trọng.
3.3.2. Các thách thức và hƣớng tiếp cận đƣợc đề xuất cho so khớp đồ thị
Thách thức đầu tiên phải đối mặt trong khi xây dựng các thuật toán so khớp đồ thị phân tán là làm thế nào để các thuật toán so khớp đồ thị hiện tại có thể đƣợc thực hiện một cách song song. Nếu đồ thị đƣợc chia thành các phân vùng nhỏ hơn, sự giống nhau của các phân vùng nhỏ hơn sẽ góp phần vào sự giống nhau của đồ thị lớn hơn. Thách thức chính ở đây là phân chia các đồ thị vào số lƣợng các phân vùng bằng nhau và sau đó giải mã ánh xạ 1-1 giữa các phần để tối đa hóa sự giống nhau. Khi đó, các nhãn đóng một phần quan trọng trong việc phân vùng các đồ thị. Nếu các cạnh với đỉnh và nhãn cạnh tƣơng tự và liên thông đều đƣợc nhóm lại với nhau trong một vùng duy nhất, thì các phân vùng giống nhau của cả hai đồ thị có thể