2015-02-19 16 views
11

Chỉ cần bắt đầu chuyến tham quan của tôi với các phương pháp và công cụ xử lý đồ thị. Về cơ bản chúng ta làm - đếm một số số liệu chuẩn như pagerank, hệ số phân cụm, số tam giác, đường kính, kết nối ... Trong quá khứ đã hài lòng với Octave, nhưng khi bắt đầu làm việc với đồ thị, chúng ta hãy nói 10^9 nút/cạnh .Neo4j hoặc GraphX ​​/ Giraph những gì để lựa chọn?

đám mây Vì vậy, các giải pháp khả thi có thể được phân phối được thực hiện với Hadoop/Giraph, Spark/GraphX, Neo4j trên đầu trang của họ, vv

Nhưng kể từ khi tôi là một người mới bắt đầu, ai đó có thể tư vấn cho những gì thực sự để lựa chọn? Tôi đã không nhận được sự khác biệt khi sử dụng Spark/GraphX ​​và khi Neo4j? Ngay bây giờ tôi xem xét Spark/GraphX, vì nó có nhiều cú pháp giống như Python, trong khi neo4j có Cypher riêng. Visualization trong neo4j là mát mẻ nhưng không hữu ích trong quy mô lớn như vậy. Tôi không hiểu là có một lý do để sử dụng mức độ bổ sung của phần mềm (neo4j) hoặc chỉ cần sử dụng Spark/GraphX? Kể từ khi tôi hiểu neo4j sẽ không tiết kiệm rất nhiều thời gian như nếu chúng tôi làm việc với hadoop tinh khiết vs Giraph hoặc GraphX ​​hoặc Hive.

Cảm ơn bạn.

Trả lời

5

GraphX ​​là khung công tác xử lý thời gian thực cho dữ liệu có thể (và tốt hơn khi được biểu thị dưới dạng biểu đồ). Với GraphX ​​bạn có thể sử dụng các thuật toán khác nhau đòi hỏi một lượng lớn sức mạnh xử lý (cả RAM và CPU), và với neo4j bạn có thể (đáng tin cậy) tồn tại và cập nhật dữ liệu đó. Đây là những gì tôi muốn đề nghị.

Tôi biết chắc chắn rằng @kennybastani đã thực hiện một số tiến bộ khá thú vị trong khu vực đó, bạn có thể xem giải pháp mazerunner của mình. Nó cũng được vận chuyển như một hình ảnh docker, vì vậy bạn có thể poke vào nó với một cây gậy và tìm ra cho chính mình cho dù bạn thích nó hay không.

Hình ảnh này triển khai vùng chứa với Apache Spark và sử dụng GraphX ​​để thực hiện phân tích biểu đồ ETL trên đồ thị được xuất từ ​​Neo4j. Các kết quả phân tích được áp dụng trở lại dữ liệu trong cơ sở dữ liệu Neo4j .

5

Neo4j: Tôi chưa sử dụng, nhưng tôi nghĩ nó thực hiện tất cả tính toán đồ thị (như pagerank) trên một máy. Điều đó có thể xử lý tập dữ liệu của bạn không? Nó có thể phụ thuộc vào việc toàn bộ đồ thị của bạn có phù hợp với bộ nhớ hay không và nếu không, hiệu quả xử lý dữ liệu từ đĩa như thế nào. Nó có thể nhấn cùng một vấn đề bạn gặp phải với Octave.

Spark GraphX: GraphX ​​phân vùng dữ liệu đồ thị (đỉnh và cạnh) trên một cụm máy. Điều này mang lại cho bạn khả năng mở rộng ngang và tính song song trong tính toán. Một số điều bạn có thể muốn xem xét: nó chỉ có một API Scala ngay bây giờ (chưa có Python). Nó có PageRank, số tam giác, và các thành phần kết nối, nhưng bạn có thể phải thực hiện phân cụm hệ số và đường kính chính mình, bằng cách sử dụng API đồ thị được cung cấp (ví dụ như pregel). Hướng dẫn lập trình có danh sách các thuật toán được hỗ trợ: https://spark.apache.org/docs/latest/graphx-programming-guide.html

9

Neo4J: Đây là cơ sở dữ liệu đồ họa giúp xác định mối quan hệ và dữ liệu thực thể thường từ đĩa. Sự phổ biến và sự lựa chọn được đưa ra trong số link này. Nhưng khi nó cần xử lý các tập dữ liệu rất lớn và xử lý thời gian thực để tạo ra các kết quả/biểu diễn đồ họa, nó cần phải mở rộng theo chiều ngang. Trong trường hợp này, sự kết hợp của Neo4J với Apache Spark sẽ là give significant performance benefits in such a way Spark will serve as an external graph compute solution.

Mazerunner là nền tảng xử lý biểu đồ phân tán mở rộng Neo4J. Nó sử dụng nhà môi giới tin nhắn để xử lý các công việc xử lý đồ thị phân tán cho mô-đun Apache Spark GraphX.


GraphX:GraphX là một thành phần mới trong Spark cho các biểu đồ và tính toán đồ thị song song. Ở mức độ cao, GraphX ​​mở rộng Spark RDD bằng cách giới thiệu một sơ đồ trừu tượng mới: một bội số được hướng dẫn với các thuộc tính được gắn vào mỗi đỉnh và cạnh. Nó hỗ trợ nhiều thuật toán đồ thị.

Kết luận: Nó luôn luôn khuyến khích sử dụng sự kết hợp lai của Neo4j với GraphX as they both easier to integrate.

Đối xử lý thời gian thực và xử lý lớn dữ liệu bộ, sử dụng neo4j với GraphX.
Đối với sự kiên trì đơn giản và để hiển thị mối quan hệ thực thể cho một đại diện hiển thị đồ họa đơn giản sử dụng neo4j độc lập.

+1

ý của bạn là gì bằng cách sử dụng "Neo4j với GraphX"? Bạn có nghĩa là sử dụng chúng cùng một lúc? Như thế nào và tại sao? –

+1

Có thể khả thi khi sử dụng trình kết nối neo4j-spark mà tôi đã cung cấp với liên kết dưới dạng câu trả lời. –

Các vấn đề liên quan