Apache Giraph

应对万亿数据上亿并发!字节跳动的图数据库研发实践

穿精又带淫゛_ 提交于 2020-12-11 10:21:36
作者:字节跳动技术团队 技术架构团队来源:字节跳动技术团队 【责任编辑:未丽燕 TEL:(010)68476606】 https://database.51cto.com/art/202012/633379.htm 一、图状结构数据广泛存在 字节跳动的所有产品的大部分业务数据,几乎都可以归入到以下三种: 用户信息、用户和用户的关系(关注、好友等); 内容(视频、文章、广告等); 用户和内容的联系(点赞、评论、转发、点击广告等)。 这三种数据关联在一起,形成图状(Graph)结构数据。 为了满足 social graph 的在线增删改查场景,字节跳动自研了分布式图存储系统——ByteGraph。针对上述图状结构数据,ByteGraph 支持有向属性图数据模型,支持 Gremlin 查询语言,支持灵活丰富的写入和查询接口,读写吞吐可扩展到千万 QPS,延迟毫秒级。目前,ByteGraph 支持了头条、抖音、 TikTok、西瓜、火山等几乎字节跳动全部产品线,遍布全球机房。在这篇文章中,将从适用场景、内部架构、关键问题分析几个方面作深入介绍。 ByteGraph 主要用于在线 OLTP 场景,而在离线场景下,图数据的分析和计算需求也逐渐显现。2019 年年初,Gartner 数据与分析峰会上将图列为 2019 年十大数据和分析趋势之一,预计全球图分析应用将以每年 100% 的速度迅猛增长

干货 :使用Spark进行大规模图形挖掘(附链接)

元气小坏坏 提交于 2020-11-18 14:46:18
翻译:陈丹 校对:王雨桐 本文 约4700字 ,建议阅读 15 分钟 本文为大家介绍了多种图挖掘工具,并运用Spark为大家展示了一个标签传播算法LPA构建图的实例。 本教程分为两部分: 第1部分:无监督学习图 (https://towardsdatascience.com/large-scale-graph-mining-with-spark-750995050656) 第2部分(就是本文!) : 如何运用神奇的图。我们将讨论标签传播,Spark GraphFrame和结果。 下文可回顾示例图和笔记: https://github.com/wsuen/pygotham2018_graphmining 在第1部分,我们看到了如何使用图来解决无监督的机器学习问题,因为社区是集群。我们可以利用节点之间的边作为相似性或相关性的指标,特征空间中的距离可用于其他类型的聚类。 本文将深入探讨社区检测的方式。我们构建和挖掘一个大型网络图,学习如何在Spark中实现标签传播算法(LPA)的社区检测方法。 通过标签传播检测社区 尽管有许多社区检测技术,但本文仅关注一种:标签传播。有关其他方法的概述,我推荐Santo Fortunato的“图形中的社区检测”(https://arxiv.org/pdf/0906.0612.pdf)。 Raghavan,Usha Nandini

Giraph源码分析(八)—— 统计每个SuperStep中参与计算的顶点数目

 ̄綄美尐妖づ 提交于 2019-11-28 00:05:58
作者|白松 目的:科研中,需要分析在每次迭代过程中参与计算的顶点数目,来进一步优化系统。比如,在SSSP的compute()方法最后一行,都会把当前顶点voteToHalt,即变为InActive状态。所以每次迭代完成后,所有顶点都是InActive状态。在大同步后,收到消息的顶点会被激活,变为Active状态,然后调用顶点的compute()方法。本文的目的就是统计每次迭代过程中,参与计算的顶点数目。下面附上SSSP的compute()方法: @Override public void compute(Iterable messages) { if (getSuperstep() == 0) { setValue(new DoubleWritable(Double.MAX_VALUE)); } double minDist = isSource() ? 0d : Double.MAX_VALUE; for (DoubleWritable message : messages) { minDist = Math.min(minDist, message.get()); } if (minDist < getValue().get()) { setValue(new DoubleWritable(minDist)); for (Edge edge : getEdges()) {