分布式图计算GraphLab分析1.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
分布式图计算GraphLab分析1

GraphLab准备阶段的研究与分析GraphLab的准备阶段即从加载图文件到GAS计算之前的GraphLab内部准备过程。共分为三个阶段:图的加载、图的构建和图的完成。下图为GraphLab准备阶段的流程图:图的加载Load图的加载即从外部将图文件加载到GraphLab中。该过程分为两步:加载图文件和解析图文件。加载图文件通过load_format()函数将图文件以用户指定的格式加载到GraphLab中。在load()函数中判断文件的存储路径,即NFS(网络文件系统)和HDFS(分布式文件系统),根据图文件的存储位置不同,可调用函数load_from_hdfs()或者load_from_posixfs()加载图文件。GraphLab支持的标准图文件格式如下:解析图文件GraphLab利用内置的行解析器对不同类型的图文件采取不同的解析方式。首先对加载的图文件进行类型判断,即tsv,snap,bintsv4等几种标准图文件类型。再根据图文件类型调用不同的行解析器对图文件解析,如果图文件类型是用户自定义的,需自行编写解析器。如果该文件类型为snap,则调用行解析器snap_parser()对该文件解析。通过解析可获得每条边的源节点和目标节点对。在图加载过程中涉及到的函数及其简单分析如下://以标准图文件格式加载图,并且构建一个行解析器,使它指向该图文件类型的行解析函数{line_parser_type line_parser;//行解析器 2414? if (format == snap) {//指向解析snap类型的行解析函数 2415? line_parser = builtin_parsers::snap_parserdistributed_graph;//调用load()函数 2416? load(path, line_parser);} //在文件系统或者HDFS中加载所有文件名匹配[prefix]*的文件{rpc.full_barrier();if (prefix.length() == 0) return;//判断路径名,选择不同的加载方式if(boost::starts_with(prefix, hdfs://)) {load_from_hdfs(prefix, line_parser);} else {load_from_posixfs(prefix, line_parser);? }rpc.full_barrier();} // end of load//根据指定的存储路径加载图文件,将第一个文件分配给machine 0,依次类推,将所有的文件均分给所有机器。(每个文件只能被一台机器读取)for(size_t i = 0; i graph_files.size(); ++i) { //将第一个文件分配给machine 0,以此类推if(i % rpc.numprocs() == rpc.procid()) { 3431? logstream(LOG_EMPH) Loading graph from file: graph_files[i] std::endl; 3432? // 判断是否有压缩文件 3433? constbool gzip = boost::ends_with(graph_files[i], .gz); 3434? // 打开文件流 3435? graphlab::hdfs::fstream in_file(hdfs, graph_files[i]); 3436? boost::iostreams::filtering_streamboost::iostreams::input fin;//以gzip方式解压 3437? if(gzip) fin.push(boost::iostreams::gzip_decompressor());//从in_file中读出 3438? fin.push(in_file); 3439? constbool success = parser(this, boost::ref(fin));//调用parser,从输入流中加载一行//if(!success) { 3441? logstream(LOG_FATAL) 3442? \n\tError parsing file: graph_files[i] std::endl; 3443? }/* 3217? templatetypename Fstream 3218? bool load_from_stream(std::string filename, Fstream fin, 3219? line_parser_type line_parser) { 3220? size_t linecoun

文档评论(0)

jiupshaieuk12 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档