科学网

 找回密码
  注册

tag 标签: mapreduce

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

LeoTask 快速可靠可扩展的计算研究框架 (开源轻量多核MapReduce)
热度 1 mleoking 2015-11-21 11:24
LeoTask 快速可靠可扩展的计算研究框架 (可靠的轻量级多核MapReduce框架) 源码: https://github.com/mleoking/LeoTask 特别适合于编写长时间运行的多参数计算/模拟程序。LeoTask自动遍历多个参数的组合参数空间,自动并行运行和统计数据,找出最优值,格式化结果输出,高质量画图(Gnuplot)等。 LeoTask,不需要任何额外的代码,就能够自动备份程序并行统计的数据,在服务器发生异常(重启,断电等)后,可以重新继续从断点并行运行程序。 LeoTask LeoTask is a parallel task running and results aggregation (MapReduce) framework. It is a free and open-source project designed to facilitate running computational intensive tasks . The framework implements the MapReduce model, allocating tasks to multi-cores of a computer and aggregating results according to a XML based configuration file. The framework includes mechanisms to automatically recover applications from interruptions caused by accidents (e.g. Power Cut). Applications using the framework can continue running after an interruption without losing its calculated results. Download | Introduction | Applications | Discussion Features: Automatic parallel parameter space exploration. Flexible configuration-based result aggregation. Programming model focusing only on the key logic. Reliable automatic interruption recovery. Ultra lightweight ~ 300KB Jar. Utilities: All dynamic cloneable networks structures : a node, a link, a network, a network set (within which networks can overlap with each other), multiplex networks. Integration with Gnuplot : hybrid programming with Gnuplot, output statistic results as Gnuplot scripts. Network generation according to common network models : random networks, scale-free networks, etc. DelimitedReader : a sophisticated reader that explores CSV (Comma-Separated Values) files like a database. Fast random number generator based on the Mersenne Twister algorithm . Versatile curve fitter and function value optimizer (minimizer) . Example Application: Please refer to the introduction for building an example application using the framework. Code (RollDice.java): public class RollDice extends Task { public Integer nSide; //Number of dice sides public Integer nDice; //Number of dices to roll public Integer sum;//Sum of the results of nDice dices public boolean prepTask() { boolean rtn = nSide 0 nDice 0; return rtn; } public void beforeRept() { super.beforeRept(); sum = 0; } public boolean step() { boolean rtn = iStep = nDice; if (rtn) { sum += (int) (rand.nextDouble() * nSide + 1); } return rtn; } } Configuration (rolldice.xml): Tasks name val=task-rolldice/usage val=0.9/nRepeats val=2000/checkInterval val=4/ variables class=org.leores.task.app.RollDice nSide val=2;4;6/ nDice val=2:1:5/!--from 2 to 5 with a step of 1, i.e. 2;3;4;5 -- /variables statistics members iinfo val=Fig1%pltm+@afterRept@/valVar val=sum;#$sum$/$nDice$#/ parVars val=nSide;nDice//i iinfo val=Fig2%plt+@afterRept@/valVar val=sum/parVars val=nSide//i iinfo val=Fig3%plt+@afterRept@/valVar val=sum/parVars val=nDice//i /members /statistics /Tasks Before running the example application, please install Java and include the the directory of the command java in the system's PATH environment variable. Windows system users can alternatively download and install ( install.bat ) the all-in-one runtime environment package: LeoTaskRunEnv Chang the current directory to the Demo folder and then execute the following commnad java -jar leotask.jar -load=rolldice.xml If you are using a MS windows system, you can also execute rolldice.bat. References: Changwang Zhang, Shi Zhou, Benjamin M. Chain (2015). LeoTask: a fast, flexible and reliable framework for computational research , arXiv:1501.01678. (PDF)
3167 次阅读|3 个评论
mapreduce计算范式与推拉技术
hyalone 2014-11-2 20:55
mapreduce计算模式深入人心,不过在使用中还是有点遗憾。shuffling后的结果多次复用好像不方便。 计算范式可以考虑做如下扩展: 1、增加shuffling后的mapper,可以对数据进行转换,这样可以利用本地保存数据做转换,避免大集群上的join操作; 2、增加pusher,shuffling后数据转换后,可以多次消费,前面宝贵的mapper、shuffling成果不需头做。 在shuffling前的处理适合用拉数据,shuffling后的处理适合用推数据,但内部实现不必强制。mapper也可以包含一对多、多对一的可能。
个人分类: 计算机|2597 次阅读|0 个评论
apriori关联挖掘算法的mapreduce并行化
taiyangqi 2014-10-7 21:00
关联规则算法用来描述事物之间的联系和挖掘事物之间的相关性,其核心是通过统计数据项获得频繁项集,被广泛应用于分类设计、捆绑式销售、仓储货存配置等领域,涌现出了 Apriori 、 Partition 、 fp-Growth 、 CD 、 DD 、 CaD 等诸多频繁项集挖掘算法,随着大数据时代的到来,传统的挖掘算法无论运算能力还是并行效率都不能满足人们的要求,云计算和并行计算的出现给频繁项集挖掘带来了新的契机。 传统的 Apriori 算法过程: 采用逐层迭代的方法,从 k 项集推出 k+1 项集。首先发现频繁项集,然后生成关联规则,查找频繁项集会消耗大量计算机资源 D 为数据集,设 L k 是 k 项频繁项集, C k 是 k 项候选集 传统 Apriori 算法过程: 求频繁 1 项集 L 1 ,以集合 I 作为候选集 C 1 , 扫描数据集 D ,获取候选项集 C 1 的支持度,找出最小支持度 min_sup 的元素作为频繁 1 项集 L 1 ; 扫描数据集 D ,获得候选集 C k 的支持度,中出最小支持度 min_sup 的元素作为频繁 k 项集 L k 通过频繁项 k 项集 L k 产生 k+1 项候选集 C k+1 迭代执行步骤( 2 )和步骤( 3 ),知道不能找到 k+1 项候选集 传统 Apriori 缺陷:需要多次扫描数据集,每次扫描都会涉及相当规模的逻辑运算 Apriori 的 Mapreduce 并行化 随着数据规模的增大,传统并行方案因资源需求过大或因通信消耗过多而变得低效,基于云计算的 MapReduce 编程模型能很好地解决海量信息并行处理的通信问题,同时还具有负载均衡和强大的容错能力。 普通 Apriori 的 Mapreduce 并行化思想:首先利用 MapReduce 并行编程模型的键值进行特性对输入的原始数据集进行 Map 分块处理,主进程将这些数据分块分布到 Hadoop 集群中的每台计算机上,然后并行算法对每台计算机上的分块数据进行如下处理: 主进程通过分块数据集与原始数据集的对比产生 1 项候选集 由 1 项候选集与原始数据集进行对比,可以算出没想事务的支持度,这些支持度与程序中给定的支持度进行对比,得出 1 项频繁项集 由 1 项频繁项集产生 2 项频繁项集 主次迭代直到产生 k 项候选集, k 项候选集与原始数据集对比,如果存在 k 项候选集,则继续迭代执行,如果不存在,则最终得到 k-1 项候选集 由于 MapReduce 的机制,上述过程为每台计算机上的 Map 进程计算出的分块候选集,接下来 MapReduce 编程模型中的 Reduce 进程把每台计算机上的 Map 进程获取的每个分块的 k 项候选集支持数合并获取全局 k 项候选集的支持数,由全集候选集的支持数计算出全集 k 项频繁项集。当一个数据分块的全局 k 项频繁项集计算出以后,每台计算机会启动下一个 Map 进程处理第二个数据分块,这样一次循环,知道架构处理完所有数据分块。 基于 Hadoop 平台改进 Apriori 算法有效解决了节点失效和负载均衡问题 Hadoop 集群中,当一台计算机出现故障而停止计算时,这台计算机上的计算任务会被转移到集群中的其他空闲计算机上继续执行未完成的计算任务 在 Hadoop 上处理的计算任务无论大小,通过配置文件的修改可以决定每个 Map 数据块的大小,可以做到数据分块数远大于计算节点数,计算资源不会被浪费,做到了负载均衡。 Apriori 算法 MapReduce 并行化改进 上述 Apriori 算法的 MapReduce 并行化是在候选项集支持数的统计阶段并行扫描数据库,没遇到一条事务包含候选项集就产生一个 itemset,1 的键 / 值对,在处理海量数据且支持度较低时,算法产生了大量值为 1 的键 / 值对,增加了 mapReduce 系统的负担,影响算法执行效率。 改进的 Apriori 算法 MapReduce 化将 Apriori 数据分割的分组思想应用在候选项集的支持数统计阶段,实现候选项集支持数的分组统计。过程如下: 采用类似单词计数的过程并行扫描数据库,找出满足最小支持度的 1 -频繁项集 L1 L1 通过自身连接产生 2 -候选项集 C2 ,采用候选项集支持数的分组统计算法统计 C2 的支持数,形成 2 -频繁项集 L2; 相同步骤, L2 产生 L3 ,如此迭代循环,直到没有新的 k -频繁项集产生. 步骤 1) 可以定义 Combiner 方法,提升 Job 的速度 ; 步骤 2) 的候选项集支持数的分组统计不适合定义 Combiner 方法,因为无法定义一个与 Map 输出类型一样的 Combiner 函数. 候选项集支持数的分组统计步骤如下 : 将原数据库划分为 n 组,使各组数据足够载入内存运行,并分别统计候选项集在各组数据中的支持数,称为候选项集的局部支持数 ; 合并候选项集在各组数据中的支持数,形成最后候选项集的全局支持数. 以下是候选项集在各组数据中的支持数统计伪码,其中 count%N 标识事务所分配的组 id 算法:候选项集在各组数据中的支持数统计 输入 : 数据库,分组数 N , k -候选项集 输出 : 局部的 k -候选项集支持数 count 0; Map( key1= unused , value1 = transaction) count ++; output(key2 = count%N , value2 = transaction) ; Setup( ) candidatesetlist 读取 k -候选项目集 ; Reduce(key2 = id , iterable( value2) = iterable( transaction) ) transactionListiterable( transaction) ; // 读取被分配到本组的事务 foreachitemsetincandidatesetlist do output(key3 = itemset , value3 = supp_count_local( itemset) ) ; end 基于候选集产生的关联规则挖掘,在海量数据且支持度较低时,所产生的 ( k - 1) -频繁项目集数是相当大的. 因此,有必要实现候选项集生成的 MapReduce 并行策略. 由于 k -候选项集是由前 k - 2 项相同的两个 ( k - 1) -频繁项集的连接产生的,根据 MapReduce 模型,可以将 ( k - 1) -频繁项集的前 k - 2 项作为键最后一项作为值,然后再作为 Map 的输出. 键相同的就规约到同一个 reduce 中,这样就可以很容易地处理前 k - 2 项相同的两个 ( k - 1) -频繁项集的连接操作. 例如假设 Map 的输入是以下 5 个 3 -频繁项集 : < 1 , 2 , 3 >,< 1 , 2 , 4 >,< 1 , 2 , 5 >,< 1 , 3 , 4 >,< 1 , 3 , 5 > 于是 Map 输出为 : << 1 , 2 >, 3 >,<< 1 , 2 >, 4 >,<< 1 , 2 >, 5 >,<< 1 , 3 >, 4 >,<< 1 , 3 >, 5 > ; MapReduce 系统经过排序分组后,结果为 : << 1 , 2 >,[ 3 , 4 , 5 ]>,<< 1 , 3 >,[ 4 , 5 ]> ; 作为 Reduce 的输入,假定 ( k - 1) -频繁项集所产生的 k -候选项集均已满足频繁项目集的性质,则 Reduce 最后的输出为 : < 1 , 2 , 3 , 4 > ,< 1 , 2 , 3 , 5 >,< 1 , 2 , 4 , 5 >,< 1 , 3 , 4 , 5 > 算法: 根据( k-1 ) - 项频繁项集产生 k- 候选项集 输入 : ( k - 1) -频繁项集. 输出 : k -候选项集. Setup( ) hashtable 读取 ( k - 1) -频繁项目集 ; Map( key1 =frequent( k - 1) _itemset , value1 = support_count) p = frequent( k - 1) _itemset; output( key2 = (p [ 0 ], p [ 1 ], , p [ k - 3 ] ) , value2 = p [ k - 2 ] ) ; Reduce( key2 = (p [ 0 ], p [ 1 ], , p [ k - 3 ] ) , iterable( value2) = iterable( value2) ) item [] iterable(value2) ; sort( item) ; for i : 0 item . lengthdo for j : i +1item . lengthdo itemset = ( p [ 0 ], p [ 1 ], , p [ k - 3 ], item [ i ], item [ j ] ) ; if all ( k - 1) - subset ofitemset inhashtablethen //itemset 的所有 k - 1 项子集都是频繁集 output( key3 =itemset , value3 =0) ; end end end 参考文献:博文 http://blog.csdn.net/lizhengnanhua/article/details/9061887 论文:基于迭代式MapReduce的Apriori算法设计与实现 章志刚 基于MapReduce并行的Apriori算法改进研究 黄立勤 基于支持度矩阵的关联规则挖掘算法在公安情报分析中的应用 李为
个人分类: 读书笔记|8379 次阅读|0 个评论
网络有效传播的开放期刊春色无限
热度 6 Liweigang 2014-2-6 04:02
春节前夕,2014年1月28日,巴西利亚大学 TransLab 团队的一篇文章:在线社交网络内动态群组的查询(Querying dynamic communities in online social networks) 在 浙大学报 (英文版C - Journal of Zhejiang University-SCIENCE C - Computers Electronics)第15(2)期网络版刊出,该文中文摘要附后。 浙大学报分A、B、C三种版本,均属SCI收录期刊,以纸质出版为主,同时在线发布。据该期刊编辑翟自洋老师( 科学网博主 )介绍,他们赶在28号的春节放假前将最后版本交给浙大印刷厂印制。如果要等到纸质期刊到读者手里,将会是二月中旬后的事情了。然而在网络时代的今天,他们于当天下班前把本期文章在线发布,作者、读者和编者都可以在第一时间先睹为快。 由于TransLab团队的一个研究方向是社交网络,本博也喜欢研究与网站有关的这些个事情。我们文章在上线后几天内的点击量和下载量不是很高,例如至31号这4天的访问量累计60人次, 下载量为23人次, 参见网站 www.zju.edu.cn/jzus/current.php ,要说这也是正常现象。 到了2月3号, 在午间休息时又看看文章在网络传播情况,发现对该文的下载量上升了十倍,达到235人次。图1给出该期刊上线9天后8篇文章的访问量和下载量统计结果,平均数分别为:访问量168人次,下载量162人次。 图1, 浙大学报(英文版C)15-2期上线9天后8篇文章的访问量和下载量。 截图来自: http://www.zju.edu.cn/jzus/current.php 该期间我们团队并没有将文章连接推送到任何论坛或电邮群组。对此问题思索中,就查了查本人在 Google Scholar 上的文献收录单,果然不出所料,Google Scholar 刚刚收录了该文,并直接附上浙大学报发表的PDF下载网址连接, 参见图2。由此可见,Google Scholar对开放期刊是促进支持的。这也是该类期刊在网络上成功展示的重要资源。 图2 Google Scholar 对文章的收录,给出浙大学报的下载连接 有趣的是,当时学报网站显示对该文的访问量仅为60人次和下载量不匹配。也就是2月4号,本博把文章资料放到自己的 ResearchGate 网页上,结果第二天看到访问量已增达130余人次。这一点,还不能肯定就是ResearchGate的效果,但这个较成功的科学人网站对网络传播会有所帮助的吧。社交网络的事情,往往很难说清楚,不少问题都值得深究。 为便于比较,又看了看本博担任主编的英文开放期刊《 社交网络 - Social Networking 》2014年第1期的文章下载情况。该期由 科学出版社 于1月23号刊出,共发表7篇文章,上线15天内平均下载量为116人次。看来《社交网络》这个新期刊还是不能与张月红老师精心主编的《浙大学报》相比。但仅以单文下载量的一项指标看,特别值得提及的是本期《社交网络》中,来自美国和巴西DataGenno Interactive Research 公司的Ruchita Gujarathi 和Fabricio F. Costa一文:The Impact of Online Networks and Big Data in Life Sciences ,在15天内的下载量达410次。 以上分析再次说明,很难说传统的、普通水平的纸质期刊能在十天内会有近200位读者阅读。只有在网络普及的今天,高质新颖的学术文献在开放期刊上是大有作为的。我们期待着《浙大学报》和《社交网络》等开放期刊更上一层楼。 附:浙大学报(英文版C )“在线社交网络内动态群组的查询”一文的中文摘要 Querying dynamic communities in online social networks Li Weigang, Edans F. O. Sandes, Jianya Zheng, Alba C. M. A. de Melo, Lorna Uden http://www.zju.edu.cn/jzus/article.php?doi=10.1631/jzus.C1300281 (中文摘要)本文研究在线社交网络的动态群组形成的在线即时、信息突发和传播迅速等特点,指出在大数据环境下及时发现有用的群组内的信息,是本专业一项富有挑战性的工作。文中引用描述用户关系的逻辑模型(Follow Model, 简称粉丝模型),结合文章映射和化简(MapReduce)概念,探讨映射关注和化简粉丝(MapFollowee ReduceFollower)机制在Hadoop系统联机实现的算法。文章介绍的粉丝模型(Follow Model)的各类函数把微博用户关系简洁和准确地描述出来,同时具备以下三个特点:反对称与对称性、可扩展性和可组合性,这些特性的灵活应用,形成本文提出的两大类查询算法:反对称关系查询算法(Reverse relation)和高阶关系查询算法(High-order relation)。 该文研究在线社交网络,特别是Twitter和新浪微博平台的动态群组形成机理,提出描述用户间关系的逻辑模型,即粉丝模型。将此模型结合映射和化简理念,提出对这些动态群组信息查询的并行算法。特别是通过对Twitter平台内两个群组信息查询的实际检验,展示大数据环境下本文算法的有效性。 参考文献: Li Weigang, Edens F. O. Sandes, Zheng Jianya, A. C. M. A. de Melo, Lorna Uden, (2014) Querying dynamic communities in online social networks. J ZHEJIANG U-SCI C, v. 15, p. 81-90. http://www.zju.edu.cn/jzus/article.php?doi=10.1631/jzus.C1300281 R. Gujarathi, and F. Costa (2014) The Impact of Online Networks and Big Data in Life Sciences. Social Networking, 3, 58-64. doi: 10.4236/sn.2014.31007. http://www.scirp.org/journal/sn/
个人分类: 社交网络|5604 次阅读|12 个评论
[转载]Hadoop
sy1110 2013-10-30 12:24
1.Hadoop是什么 Hadoop原来是ApacheLucene下的一个子项目,它最初是从Nutch项目中分离出来的专门负责分布式存储以及分布式运算的项目。简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。 2.下面列举hadoop主要的一些特点: 扩容能力(Scalable):能可靠地(reliably)存储和处理千兆字节(PB)数据。 成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点。 高效率(Efficient):通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理它们,这使得处理非常的快速。 可靠性(Reliable):hadoop能自动地维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。 3.Hadoop实现了一个分布式文件系统(HadoopDistributedFileSystem),简称HDFS。 HDFS有着高容错性(fault-tolerent)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(highthroughput)来访问应用程序的数据,适合那些有着超大数据集(largedataset)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以流的形式访问(streamingaccess)文件系统中的数据。 4.Hadoop还实现了MapReduce分布式计算模型。 MapReduce将应用程序的工作分解成很多小的工作小块(smallblocksofwork)。HDFS为了做到可靠性(reliability)创建了多份数据块(datablocks)的复制(replicas),并将它们放置在服务器群的计算节点中(computenodes),MapReduce就可以在它们所在的节点上处理这些数据了。 如下图所示: 5.HadoopAPI被分成(divideinto)如下几种主要的包(package) org.apache.hadoop.conf定义了系统参数的配置文件处理API。 org.apache.hadoop.fs定义了抽象的文件系统API。 org.apache.hadoop.dfsHadoop分布式文件系统(HDFS)模块的实现。 org.apache.hadoop.io定义了通用的I/OAPI,用于针对网络,数据库,文件等数据对象做读写操作。 org.apache.hadoop.ipc用于网络服务端和客户端的工具,封装了网络异步I/O的基础模块。 org.apache.hadoop.mapredHadoop分布式计算系统(MapReduce)模块的实现,包括任务的分发调度等。 org.apache.hadoop.metrics定义了用于性能统计信息的API,主要用于mapred和dfs模块。 org.apache.hadoop.record定义了针对记录的I/OAPI类以及一个记录描述语言翻译器,用于简化将记录序列化成语言中性的格式(language-neutralmanner)。 org.apache.hadoop.tools定义了一些通用的工具。 org.apache.hadoop.util 定义了一些公用的API。
个人分类: 点滴收藏|1724 次阅读|0 个评论
微博de故事:结束语
热度 4 Liweigang 2013-9-7 05:13
2013年1月2日,新年尹始,笔者陆续在科学网博客发出《微博de故事》系列文章三篇,以博文的形式介绍巴西利亚大学 TransLab 团队一年来对在线社交网络,特别是微博和Twitter研究的最新成果。 由于互联网时代社交网络的社会效应和经济意义,对Twitter和新浪、腾讯微博的研究是个热门课题。 全球不少科研机构和大学的研究中心和著名学者都纷纷投入人力物力来研究这个新事物和新现象。 在首篇《 微博de故事:物理学者对计算机科学同行的批评 》一文,笔者以从事复杂网络研究的物理学家与计算机学者间的争议为出发点,指出诸家学者都在研究微博,但并没有让人感到“漂亮”的数学(逻辑)模型来展现迷人的微博,特别是描述平台内用户间的各种关系。该博文承蒙科学网网友和编辑厚爱,到目前为止已有5110访问量,10位博主评议,27位博友推荐。周涛博主等学者认为,一个好的微博模型是进一步开发高效咨询算法和推荐系统的基础。 我们团队的Edans Sandes等提出了“粉丝模型(Follow Model)”, 这是基于图论理论和人工智能的逻辑关系,对微博平台内用户间逻辑关系和行为特性的基本描述。对此,《 微博的转发哲学 (上、下) 》博文进行了详细介绍,科技论文原著参见 。一年来,同行们对“粉丝模型”的评价褒贬不一,特别是一些学者提出批评意见。笔者在感谢的同时也认为,一个有实际意义的数学模型及其应用需要长时期的实践来检验。 令人欣慰的是,笔者团队在此基础上进一步提出《 微博de故事:关系寓意下的邻接矩阵 》,将粉丝模型扩展到关系寓意下的邻接矩阵。按照粉丝模型的定义, A in 为粉丝邻接矩阵(Follower AM),其转置矩阵就是关注矩阵(Followee AM),具体表示为 A out = A in T 。大家也许说这是当然的事情。但这毕竟是第一个捅破那张窗户纸的工作,科学文献参见 。 《 微博de故事: 映射化简找朋友 》 一文是提示如何把粉丝模型与著名的映射和化简(MapReduce)模型相结合,利用强有力的Hadoop并行计算系统,在海量社交网络里面找到动态群组,并进一步进行排行 。当然,问题的实质是大海捞针,发现社交网络内的“问题人物”。值得一提的是,一位审稿人对该算法是这样评价的:Facebook已经列出明星排行了,你这里扯上MapReduce干什么的?真是有点遗憾,让一些学者理解大数据还真不容易。这个算法首先要从整个社交网络用户间错综复杂关系里尽快理出动态群组,请大家注意,是5亿多个用户,上百亿对连接关系和行为关系!!!对于微博或Twitter平台来说,也非易事。团队开发的算法刚好把粉丝模型与映射和化简理念巧妙组合,派上用场。 感谢《2013年第九届中国网络科学论坛》, 特别是会议组织者方锦清和汪秉宏等老师, TransLab 团队能够全面、系统地正式介绍上述对在线社交网络的研究工作。作为参加这次论坛的主要成果,《在线社交网络的逻辑模型和并行查询》一文 已在《复杂系统与复杂性科学》2013年第2期上发表。这是团队对粉丝模型以及应用综合表述的中文文献,也是本博13年来重新开始在国内期刊上发表学术文章。 在发出本博的两天之后,得到另一个好消息,燕山大学的张亚明老师、博士生唐朝生同学与本博合作的另一篇文章《微博机制和转发预测研究》 在武夷山老师主编、马兰老师为责任编辑的《情报学报》期刊 2013年8月份上发表。该文对近年来国内外在微博机制和微博转发等方面进行小结和综合分析,同时也扼要地介绍了粉丝模型及其应用。 欢迎博友和同行批评指正。 参考文献: Edans F. Sandes, Li Weigang, Alba C. de Melo: Logical Model of Relationship for Online Social Networks and Performance Optimizing of Queries - WISE 2012 Challenge - T1: Performance Track Scalability Winner. 13th International Conference on Web Information System Engineering - WISE 2012: 726-736. Li Weigang, Zheng Jianya, Liu Yang, Retweeting Prediction Using Relationship Committed Adjacency Matrix, in II Brazilian Workshop on Social Network Analysis and Mining (BraSNAM 2013, CSBC 2013), 1561 - 1572. Zheng Jianya, Li Weigang and Lorna Uden, Top-X Querying in Online Social Networks with MapReduce Solution, Accepted in 2013 Eighth International Knowledge Management in Organizations Conference Social and Big Data Computing for Knowledge Management, (KMO2013), Taiwan. Li Weigang, Zheng Jianya, Logical model and parallel querying in online social networks. Complex Systems and Complexity Science, v.10, p.77 - 87, 2013. Zhang Yaming,Tang Chaosheng and Li Weigang, Research on the Micro-blog Mechanism and Re-posting Prediction, Journal of the China Society for Scientific and Technical Information, 32(8), 868-867, 2013.
个人分类: 社交网络|3824 次阅读|10 个评论
微博de故事: 映射化简找朋友
热度 4 Liweigang 2013-3-29 07:32
( 李伟钢 郑建亚 ) Google技术 团队于 2004 年首次公开提出映射和化简 (MapReduce) 的信息处理和文档管理模型,而原 Yahoo 团队于 2005 年着手开发 Hadoop 开放系统,实现这种并行计算理念。这一梦之旅几经捻转,形成目前位于美加州的 Greenplum 商务智能和云数据专营企业,并与另一跨国大数据企业 EMC 有着 千丝万 缕的联系。 Greenplum 的专家们在介绍 Hadoop 系统时,习惯用 “ 你应相识的朋友 ” (People You May Know) 问题来解释大数据问题的计算工作量,在此基础上介绍映射和化简概念和 Hadoop 解决方案。 假设某社交圈有 1 亿人参与,平均每人有 100 位朋友,要为所有参与者通过其朋友找到最可能认识的新友人 Top-X ,这里的 X 可以是 5 、 10 、等小于 100 的数。图 1 是 Milind B. 老师年初在里约大数据暑假班上演讲时,介绍解决此类问题的普通算法。 图 1 Milind B. 介绍的解决 “ 你应相识的朋友 ” 问题的普通算法。 执行该算法时,首先要遍历社交圈内的 1 亿人 (u) ,每个 TA(u) 有 100 个朋友 TA(x) ,如图1中的 connection(u), 每个 TA (x) 又有自己的 100 个朋友 TA(y) ,统计出现次数最多的 (u,y) ,最后向每个 TA(u) 推荐前三名 y1, y2, y3 ,这里 Top-X , X=3 。 对此算法进行分析,计算次数应为: 10 8 x100x100 = 10 12 。如果对每个友人进行 101 次随机访问,每次访问需要时间 1ms ,在每个友人的访问上需要 100ms 。假如使用一台电脑计算的话,对于一亿友人,这项工作的全部计算量大约需要 100 天。规范算法分析结果表明,该问题的计算复杂度为 O(n 3 ) 。 对于现代人来说,是没这个耐心等上 100 天来参与这种社交活动。假若使用若干电脑并行计算如何?本文开头提到的开源软件框架 ApacheHadoop ,以 Google 的映射和化简模型为指导,实现对大数据的并行计算,查找有用的索引数据及其它“有价值”的信息,将此结果返回给相关用户。 Hadoop 支持 4000 个节点和 PB 级数据的数据密集型、分布式分析。 巴西利亚大学 TransLab 团队学习使用映射和化简模型解决 “ 你应相识的朋友 ” 问题。表 1 列出使用映射和化简模型对 “ 你应相识的朋友 ” 问题的求解思路。 表 1 映射和化简模型对 “ 你应相识的朋友 ” 问题的求解思路 注意表 1为笔者的读书札记,仅 用于示 意 映射和化简模型思路,只列出 u1 的少部分计算来说明算法,也就是说在 u 的用户集里,共需要进行 1 亿次这样的计算。结合图 1 和表 1 ,解决该问题的在 Hadoop 系统环境下的算法重写为: 1) 建立关系对过程。 对于每个 u 建立 (x,y) 关系对: x ϵ u 且 x 是 u 的朋友,即存在 connextion(u,x); y ϵ u, 且 y 是 x 的朋友,即存在 connextion(x,y), 暂时 u 和 y 不是朋友,即不存在 connextion(u,y) 。这里 u 为社交圈全部参与者, x 为每个 u 的友人, y 为每个 x 的友人。按 “ 你应相识的朋友 ” 问题的基本条件, u 的数集为 1 亿,每个 x 和 y 的数集小于 100 。 2) 映射 (Map) 过程。 整理建立的关系对,映射 (Map) 出可能通过 x 建立的 u 和 y 的关系, connection (u,y) ,的用户集列表 (y1,(x1,x2,x3,...)) ,如表 1 中与 u1 可能建立关系的有, y1,y2,y3,y4 等等。注意这里的限制条件是 y≠x ,即 y 不在 connextion(u,x) 集内。 3) 化简 (Reduce) 过程。 算出 Connection(u,y) 用户集,每个 y 与 u 通过 x 建立关系用户列表内的数量 Count(u,y) ,如表 1 中的 y1 通过 x1,x2,x3 和 u1 认识 , 即渠道共有 3 个,等等。 4) 排行过程 (Rank) 。 对 Connection (u,y) 用户集内 u 通过 x 认识 y 的用户数量 Count(u,y) 排行,列出前几名和 x 联系最多的 y ,这些人都可以介绍给 u 。如表 1 中的 Count(u,y) ≥ 2 ,即 Top-2 , 应向 u1 推荐的新朋友为 y1,y2,y3 。 对于在线社交网络的微博平台,朋友推荐已经成为了一项不可缺少的功能和需求,对用户社交关系的后端分析,向用户推荐其可能认识的人,促进用户关系的建立,通过增加参与者之间的粘连性来增加用户对社交平台的忠诚度。 研究 “ 你应相识的朋友 ” 问题的目的在于将其推广到微博平台,进行在线即时和更为复杂的信息查询。后续博文将继续介绍 TransLab 团队把映射和化简理念与粉丝模型相结合,配置 Hadoop 系统联机,从 Twitter 的 75GB 实际数据中查询 Top-X 的最新研究成果。敬请博友关注。
个人分类: 社交网络|5282 次阅读|8 个评论
About frequent graph mining
tonia 2012-4-7 03:09
Part 1: Algorithms. Generally two categories: 1) Apriori-based - AGM: Inokuchi, et al. (PKDD’00) - FSG: Kuramochi and Karypis (ICDM’01) - FFSM: Huan, et al. (ICDM’03) and SPIN: Huan et al. (KDD’04) 2) Pattern-growth - MoFa: Borgelt and Berthold (ICDM’02) - gSpan: Yan and Han (ICDM’02) - Gaston: Nijssen and Kok (KDD’04) Part 2: MapReduce/BSP implementations. Here are some open source graph processing frameworks. Most follow the Bulk Synchronous Parallel model, where vertices send messages to each other in a series of iterations called supersteps. 1. Giraph , a Java BSP implementation that runs on existing Hadoop clusters and provides fault tolerance for both the workers and the master using ZooKeeper. Giraph came out of Yahoo! and is now an Apache Incubator project. 2. Apache Hama is a pure BSP(Bulk Synchronous Parallel) computing framework on top of HDFS (Hadoop Distributed File System) for massive scientific computations such as matrix, graph and network algorithms. Also an Apache Incubator project, and works with ZooKeeper. 3. GraphLab , a new, asynchronous programming model in C++ from Carnegie Mellon. 4. Phoebus , an Erlang BSP implementation that can use HDFS for storage. 5. Golden Orb , another Java BSP implementation on Hadoop. 6. Signal/Collect , a Scala BSP implementation from the University of Zurich. Signal/Collect also supports extensions including an asynchronous mode. 7. Spark , a Scala framework from UC Berkeley that aims to balance efficiency and fault tolerance by providing immutable, distributed, in-memory collections. There's a BSP implementation on top of Spark . 8. PEGASUS , a pure MapReduce implementation on Hadoop. Problem domain: - Hama: a pure BSP implemention. Target general computation, not only graph processing. - Giraph: similar to Hama, but more specifically for graphs, such as page rank, shared connections, personalization-based popularity, etc. Giraph performs like a map-only job based Hadoop. - GraphLab: Supports machine learning and graph computation, such as Jacobi, Gaussian Belief Propagation (GaBP), Conjugate gradient, Matrix operations, collaborative filtering, clutering, and belief propagation algorithm, etc. - Phoebus, Golden Orb, Bagel: Based on Google Pregel. Currently support basic graph computation. - Sigal/Collect: Support synchronous and asynchronous algorithms on graph, such as, shortest path, belief propagation, coloring, etc. - PEGASUS: Supports computation for Degree, PageRank, Random Walk with Restart (RWR), Radius, Connected components Reference: Giraph: http://incubator.apache.org/giraph/ Hama: http://incubator.apache.org/hama/ GraphLab: http://graphlab.org/ Phoebus: https://github.com/xslogic/phoebus Golden Orb: http://www.goldenorbos.org/ Signal/Collect: http://code.google.com/p/signal-collect/ Spark: http://spark-project.org/ Bagel (BSP on Spark): https://github.com/mesos/spark/wiki/Bagel-Programming-Guide PEGASUS: www.cs.cmu.edu/~pegasus/
个人分类: cloud|8114 次阅读|0 个评论
Iterative MapReduce
tonia 2011-12-28 13:56
使用MapReduce模型实现迭代式算法,最straightforward也是最general的方法就是,将多个map/reduce任务链接起来,构成一个chain。这种manual的方法需要user driver做两件事情: (1)termination终止条件判断:或者设定一个最大迭代次数,或者给定一个终止阈值,或者需要比较相邻两次迭代的结果的差异性(这种比较可能需要额外的map/reduce任务来完成); (2)整个任务链map/reduce之间的input/output问题,即上一次迭代的reducer输出作为下一步迭代的mapper输入,考虑是否需要缓存中间结果集以实现数据重用等。 HaLoop是一种MapReduce的改进实现,支持迭代式数据分析,主要有以下改进: (1)Loop-invariant cache:即将那些在循环迭代过程中不变的mapper输入和reducer输入缓存在本地节点上,以供后续迭代重用; (2)Caching for fixpoint verification:即缓存reducer输出结果,便于比较两次迭代的结果,以判断是否达到终止条件,而不需要一个专门的MapReduce任务做检查; (3)Loop-aware scheduling:即将处理相同数据分区的两次任务分配到一个物理节点,减少数据的重新加载和mapper/reducer之间的通信。 参考: 迭代式MapReduce框架介绍 Iterative algorithms in Hadoop HaLoop: Efficient Iterative Data Processing on Large Clusters
个人分类: 未分类|8284 次阅读|0 个评论
hadoop传递参数的几种方法总结
blowyoureyes 2010-11-16 20:21
写MapReduce程序通常要传递各种各样的参数,选择合适的方式来传递参数既能提高工作效率,也可以避免bug的产生。根据参数的大小,可以粗略的分为以下几种。 最直接的方式就是使用Configuration的各种set方法,对于基本数据类型都有很好的支持,比如传递kmeans聚类算法的中心点个数。 如何传递一个对象型参数?话说所有的对象都是由基本类型构建的,所以我们可以覆盖这个对象的toString()方法,将它的所有元素表示成字符串,然后 使用Configuration.set(name, value)传递这个字符串。然后在Mapper端获得这个字符串,做析构。这种朴素的方法有两个缺点。首先,将对象变成字符串会有精度上的损失,比如 double类型转换成字符串,不仅精度有损失,而且8字节的空间用字符串来表示可能会变成几十字节。其次,由于字符串化和反字符串化分散在不同的地方, 很容易产生bug,如果修改了这个对象的结构,这种bug产生的几率非常大。既然有这种需求存在,难道hadoop没有提供nice点的方法吗?有,不过 在api文档中没有直接说明。 正确的方法是,让这个对象实现Writable接口,使它具有序列化的能力,然后使用 org.apache.hadoop.io.DefaultStringifier的store(conf, obj, keyname)和load(conf, keyname, itemclass)静态方法设置和获取这个对象。他的主要思想就是将这个对象序列化成一个字节数组后,用Base64编码成一个字符串,然后传递给 conf, 解析的时候与之类似。 如何传递更大的参数,比如分词用的语料库等等?可以使用hadoop的缓存文件DistributedCache。
个人分类: 未分类|6922 次阅读|0 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-1 22:42

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部