低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

Facebook 针对图数据处理对 Apache Giraph 和 Spark GraphX 的比较

2016 年 12 月 18 日

一支 Facebook 团队近期发表了一份比较报告,比较对象是他们当前的基于 Giraph 的图处理系统和更新的 GraphX (它是流行的 Spark 框架的一部分)。他们的结论是,GraphX 当前无法满足他们对扩展性和性能的需要,不足以支撑起他们图处理的负载。

在 Facebook,大规模图处理是数据设施服务的重要组成部分。他们的社会图有 1.71 十亿编辑顶点和数千亿的边,如果再把人们的爱好加进来那么该图就会有上十亿条边了。他们还有用于图数据分析的大量应用场景,包括通过智能数据分布和图压缩的网页和群组推荐基础设施优化

该团队基于Apache Giraph 搭建了一个图分析平台,其在 VLDB '15 论文和一篇相应的博客文章中曾被介绍过。该团队描述了它们寻找替代者的动机,他们是这样写的

自从诞生以来,Giraph 已得到了持续的演进,不仅能简化用户的编程,还能让用户可以处理Facebook 级的生产负载。在这段期间,涌现出了大量的其他图处理引擎。例如Spark 框架,它是作为针对常规数据处理的平台得以应用的,此外它还提供了一个面向图的编程模型和执行引擎,即GraphX。

由于我们的目标是尽可能选择最佳方式处理内部负载,所以我们决定对Giraph 和GraphX 进行定量、定性的比较。

由于Facebook 还有一个支撑生产负载的 Spark cluster ,所以他们决定比较一下这些图数据处理系统,看看这些系统处理大规模图会怎样。这项测试还可以看一下这两个系统在不同的资源分配策略下是怎么执行的,以及它们针对容错和用户界面提供了什么类型的支持。他们还测试了其他的一些影响因素,包括在这两个系统之间开始的可用性和易用性比较。

该测试方法涉及到三个在图数据分析领域流行的算法: PageRank Connected Components 以及更多信息负载的 Triangle Counting 。为了与最初的 GraphX 论文形成对照,他们使用了相同的两份公开可用的图数据集开始的测试,它们分别是 Twitter 图和英国网页图,前者有 15 亿条边,而后者有 37 亿条边。这项测试还包括一些人造图数据,它是使用 Darwini 图生成工具生成的。该基础软件配置是 Spark 1.6.1 和 Giraph 1.2.0,JDK 版本为 1.8 (8u60)。

他们发现在通常情况下 Giraph 能够更好地处理生产级负载,而 Spark GraphX 提供的几个特性,能使图数据处理解决方案的开发更简单。

该性能测试有如下关键发现:

  • Giraph 即使在较小规模的图数据集上执行得也更好些。

  • Giraph 的内存使用也更加高效。

  • GraphX 支持以 SQL 样式的查询从 Hive 中读取图,支持任意列转换。

  • 使用 shell 环境中的 Scala 是一种测试 GraphX 简单应用的简便方式。

最后,该团队总结说,GraphX 不足以支持他们图处理负载的扩展性和性能需要。

基于对当前结果的推测,我们应该需要订购更多数量级的机器去支持当前的生产负载。除此之外,即使 GraphX 能处理该图规模,其机器运转的时间也是效率方面很大的欠缺。然而,GraphX 编程接口提供了许多简化应用开发的特性,比如 SQL 集成。我们希望 Giraph 在未来也能添加上这些特性。

该团队已经提供了重现本研究的相关细节,以及相关代码和数据。

查看英文原文 Graph Data Processing Systems at Facebook

2016 年 12 月 18 日 18:003054

评论

发布
暂无评论
发现更多内容

netty案例,netty4.1中级拓展篇八《Netty心跳服务与断线重连》

小傅哥

Netty 小傅哥

netty案例,netty4.1高级应用篇二,手写RPC框架第二章《netty通信》

小傅哥

Netty 小傅哥

netty案例,netty4.1源码分析篇一《NioEventLoopGroup源码分析》

小傅哥

Netty 小傅哥

netty案例,netty4.1基础入门篇四《NettyServer收发数据》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1中级拓展篇四《Netty传输文件、分片发送、断点续传》

小傅哥

Netty 小傅哥

netty案例,netty4.1中级拓展篇七《Netty请求响应同步通信》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1中级拓展篇十《Netty接收发送多种协议消息类型的通信处理方案》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1中级拓展篇十三《Netty基于SSL实现信息传输过程中双向加密验证》

小傅哥

Netty 小傅哥

netty案例,netty4.1基础入门篇八《NettyClient半包粘包处理、编码解码处理、收发数据方式》

小傅哥

Netty 小傅哥

netty案例,netty4.1基础入门篇十《关于ChannelOutboundHandlerAdapter简单使用》

小傅哥

Netty 小傅哥

netty案例,netty4.1中级拓展篇六《SpringBoot+Netty+Elasticsearch收集日志信息数据存储》

小傅哥

Java Netty

程序开发中的持续集成、持续交付、持续部署

石云升

持续集成 持续交付 持续部署 自动化部署

netty案例,netty4.1基础入门篇五《NettyServer字符串编码器》

小傅哥

Java Netty

netty案例,netty4.1基础入门篇六《NettyServer群发消息》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1中级拓展篇一《Netty与SpringBoot整合》

小傅哥

Java Netty

netty案例,netty4.1中级拓展篇九《Netty集群部署实现跨服务端通信的落地方案》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1中级拓展篇十一《Netty基于ChunkedStream数据流切块传输》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1基础入门篇十二《简单实现一个基于Netty搭建的Http服务》

小傅哥

Java Netty

netty案例,netty4.1中级拓展篇三《Netty传输Java对象》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1中级拓展篇十二《Netty流量整形数据流速率控制分析与实战》

小傅哥

Netty 小傅哥

netty案例,netty4.1高级应用篇三,手写RPC框架第三章《RPC中间件》

小傅哥

Netty 小傅哥

netty案例,netty4.1源码分析篇三《Netty服务端初始化过程以及反射工厂的作用》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1中级拓展篇二《Netty使用Protobuf传输数据》

小傅哥

Java Netty 小傅哥

大龄程序员的自我介绍 v 0.1

escray

学习 面试 自我介绍 面试现场

netty案例,netty4.1源码分析篇二《ServerBootstrap配置与绑定启动》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1基础入门篇十一《netty udp通信方式案例Demo》

小傅哥

Java Netty

netty案例,netty4.1中级拓展篇五《基于Netty搭建WebSocket,模仿微信聊天页面》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1高级应用篇一,手写RPC框架第一章《自定义配置xml》

小傅哥

Java Netty

netty案例,netty4.1源码分析篇四《ByteBuf的数据结构在使用方式中的剖析》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1基础入门篇七《嗨!NettyClient》

小傅哥

Netty 小傅哥

netty案例,netty4.1基础入门篇九《自定义编码解码器,处理半包、粘包数据》

小傅哥

Java Netty

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

Facebook针对图数据处理对Apache Giraph 和 Spark GraphX的比较-InfoQ