graphdb
houzhizhen
专注大数据处理和分布式计算。
展开
-
Giraph在计算过程中负载均衡策略和算法
Giraph在数据加载时,按照Math.abs(vertexID.hashCode() % partitionCount)决定partitionId,范围为0 .. partitionCount - 1。然后根据partitionId % wokerCount决定wokerId,范围为0 .. workerId - 1。通过PartitionBalancer 配置平衡策略,public class PartitionBalancer { // 分区平衡算法的参数名 public static fi原创 2020-12-17 19:52:57 · 198 阅读 · 0 评论 -
Closeness Centrality的计算方法
Closeness Centrality的计算方法Closeness Centrality也称为紧密中心性。Closeness Centrality的计算公式有三种:第一种算法:第一种算法是最先提出的,公式如下:C(x)=1∑yd(y,x).C(x)={\frac {1}{\sum _{y}d(y,x)}}.C(x)=∑yd(y,x)1.前面的C(x)C(x)C(x)代表顶点x的Closeness Centrality值。d(y,x)d(y,x)d(y,x)为从y到x顶点之间的距离这原创 2020-10-28 11:37:06 · 7076 阅读 · 3 评论 -
Betweenness Centrality的计算方法
Betweenness Centrality的计算方法Betweenness Centrality也称为中介中心性。Betweenness Centrality的计算公式为:前面的g(v)g(v)g(v)代表顶点v的Betweenness Centrality的值。代表从顶点s到顶点t之间经过v的最短路径数。代表从顶点s到顶点t之间所有的最短路径数。举例计算Betweenness Centrality以上图为例,图中有6个顶点,8条边。A的Betweenness Centrality的值原创 2020-10-28 09:48:25 · 17758 阅读 · 4 评论 -
Stress Centrality (重力中心性)的计算方法
Stress Centrality的计算方法Stress Centrality也称为重力中心性是最短路径经过某顶点的次数。如从A到D的最短路径经过B,则此路径对B的Stress Centrality的贡献为1。Stress Centrality的计算公式为:前面的CS(v)C_S(v)CS(v)代表顶点v的Stress Centrality的值。CCC代表Centrality,S代表Stress。同理CC(v)C_C(v)CC(v)代表Closeness Centrality,第一个C代表Cen原创 2020-10-14 17:54:03 · 1280 阅读 · 0 评论 -
环路检测的大规模计算
环路检测的描述和种类环路检测是计算图中是否有环,即如果从一个顶点出发,沿着出边一直走,能再走到这个顶点。环路检测的种类单点出发的环路存在检测单点出发的环路存在检测是检测一个点(u)是否在某个环路内。计算过程,是从点(u)出发,沿着出边走,如果能再走到(u),则检查经过某点(u)的所有环路。经过某个顶点的所有环路,要求环路都是简单环(即路径是u->v1->v2->…->vn->u. v1,v2,…,vn顶点只能出现一次)。整个图是否有环从所有点出发,找到任何一个原创 2020-08-11 14:53:24 · 815 阅读 · 0 评论 -
Giraph参数说明
公共参数参数名称简称默认值示例备注giraph.maxNumberOfSupersteps-15最多迭代次数giraph.computationClass--org.apache.giraph.examples.PageRankComputationVertex计算classgiraph.vertex.input.dir-vip-/data/data_wdc_600/arc数据输入路径giraph.vertexInputFormatCla原创 2020-07-23 10:38:05 · 343 阅读 · 0 评论 -
DiskBackedPartition
为什么开发DiskBackedPartition?默认的Partition的实现是SimplePartition,它用一个ConcurrentMap<I, Vertex<I, V, E>> vertexMap;存储本partition的vertex id和vertex的映射信息,所有的信息都在内存里。当数据量大时,会出现OOM。DiskBackedPartition是一种大数据量的实现。主要目的是借助本地文件系统,如果本Partition的数据较多,则序列化到磁盘。序列化之后则释原创 2020-07-20 11:08:40 · 139 阅读 · 0 评论 -
Giraph Aggregator Guide
AggregatorAggregator运行聚集在一个超级步中所有顶点的操作。Aggregator的操作类型可以是多样的,并不总是对值求和,如LongSumAggregator是对Long性进行求和,而LongMinAggregator只保留所有的最小值。LongMaxAggregator只保留最大值。LongProductAggregator保留把聚集的每个数的乘积。如 LongProductAggregator longProductAggregator = ... longProductAg原创 2020-07-16 16:41:21 · 147 阅读 · 0 评论 -
The Message Process of Giraph
AbstractComputation.sendMessage /** * Send a message to a vertex id. * * @param id Vertex id to send the message to * @param message Message data to send */@Override public void sendMessage(I id, M2 message) { workerClientRequestProc原创 2020-06-17 14:12:27 · 210 阅读 · 0 评论 -
The Process of Vertex Computation
A thread is created for a partition, process a partition returns a PartitionStats object.ComputeCallable is a callable to process a partitoin.ComputeCallable.callThere are three parts of ComputeCallable.call.public Collection<PartitionStats> cal原创 2020-06-16 17:30:49 · 158 阅读 · 0 评论 -
The process of OutOfCoreCallable
Constructor of ServerDataAt the constructor of ServerData, if USE_OUT_OF_CORE_GRAPH is set true. oocEngine is created, and partitionStore is wrapped using DiskBackedPartitionStore.PartitionStore<I, V, E> inMemoryPartitionStore = new Simple原创 2020-06-15 19:18:18 · 281 阅读 · 0 评论 -
Giraph: The process of read Vertices
###add local cacheVertex reader read vertex and i’ts edges information, first store in local cache.catch size: 629145. if (workerMessageSize >= maxVerticesSizePerWorker) { call WorkContext.sendMessageToWorker() } maxVerticesSizePerWorker: defau原创 2020-06-15 17:22:24 · 272 阅读 · 0 评论 -
Giraph的大数据量测试
算法PageRank不开启Out of Core,数据文件244M,用-Xmx1G的程序测试,很快失败。开启Out of Core,数据文件244M, 用-Xmx1G的程序测试,设置giraph.useOutOfCoreGraph=true, giraph.useOutOfCoreMessages=truepartitions的数量设置100.giraph.maxPartitionsInMemory=2结果:运行成功开启Out of Core, 数据文件在1G,用-Xmx1G的程序测试原创 2020-06-12 11:41:13 · 248 阅读 · 0 评论 -
Giraph Partiton Strategy
add local cacheVertex reader read vertex and i’ts edges information, first store in local cache.catch size: 629145. if (workerMessageSize >= maxVerticesSizePerWorker) { sendOut() } maxVerticesSizePerWorker: default 512kgiraph.useOutOfCoreGrap原创 2020-06-12 11:22:10 · 175 阅读 · 0 评论 -
Run Giraph-1.3.0 on Hadoop-2.5.1
Download and install hadoopDownload hadoop-2.5.1 from apachetar -xzf hadoop-2.5.1.tar.gzvim core-site.xml<configuration><property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> &原创 2020-06-10 18:53:04 · 490 阅读 · 0 评论 -
用实例说明PageRank的计算过程
初始值,每个节点的rank值都是1/6.第一轮以ripple为例,它的rank值是josh贡献的值1/6∗(1/2)∗0.851/6 * (1/2) * 0.851/6∗(1/2)∗0.85, base值0.15/60.15/60.15/6。所有的rank值计算之后,sum(所有的rank)值,得到0.15+0.5∗0.85=0.5750.15+0.5*0.85 = 0.5750.15+0.5∗0.85=0.575。 前面的0.15是base值之和,0.85是(1-alpha)。0.5是所有参加贡献.原创 2020-06-08 11:25:34 · 3306 阅读 · 0 评论 -
稀疏矩阵的存储方法(DOK、LIL、COO、CSR, CRS)
存储稀疏矩阵经常用二维数组来存储矩阵。 用数组的ai,ja_{i,j}ai,j可以用索引值iii和jjj访问。通常,iii是 行索引,从上往下编号,jjj是列索引,从左到右进行编号。对于m×nm × nm×n的矩阵,用这种格式存储需要的内存和m×nm × nm×n成比例。对于稀疏矩阵,如果只存储非零的数据,可以极大的节约内存。根据非零数据的数量和分布情况,有不同的数据结构可以使用。需要权衡的是访问单个元素时会比较复杂,并且需要额外的数据结构。这些数据结构主要分为两组:˙支持高效修改的,如关键字字原创 2020-05-26 19:03:03 · 5896 阅读 · 0 评论 -
Pregel:一个大规模图计算系统
本文不是原文翻译,但是包含所有重点的内容。查看原论文请点击此链接1.简介1.1 为什么开发Pregel为每一种图算法都定制开发一个分布式程序需要非常大的工作。现有的分布式计算平台不能满足图计算的需求。像MapReduce可以处理非常大的数据量,但是处理图计算的性能稍差。用单机版本的图算法限制了能处理的图的规模。现有的并行图计算系统没有容错能力。容错能力对大数据系统非常重要。块同步并行(Bulk Synchronous Parallel)模型的启发Pregel的框架组织。Pregel的.原创 2020-05-25 10:45:51 · 1622 阅读 · 0 评论