RSS
 

开学:思绪乱飞

30
    开学的日子终于还是到来了.
    周五离职,半年的点点滴滴让我获益良多……跟大家道别,以后有机会多多交流;同组同事兼同所师兄特意交代要好好学习,天天向上。
    昨天平静地报到,今天从回龙观往青年公寓搬东西,终于不是很漂了,不出意外,来京后的第4次搬家要等一年后了。
    转入新的生活,那些旧的杂念、原来的纠结都会被新的忙碌所填满。今晚是在青年公寓的第一夜,一天的劳累没能掩盖复杂的心情,难以入睡。
    给导师发E-mail确认我已回归,得到回复要正式开始工作了——有一个横向项目,还有必不可少的“研究任务”。
    最近答应了一件事,算是在科苑第一次与人合作,这件事情有一点弥补往日遗憾的成分在里面,要对得起同伴,好好努力。
    不变的是牵挂父母,晚上电话里跟母亲聊了下,报告自己已入学,互相说明对方不要担心,好好保重身体……在外多年,与父母一直互相牵挂,冷暖相知……孩儿不孝,心里一直觉得亏欠太多的是步入老年的父母。
    这一年来想了很多,深知对于自己的世界来说我责任还是很大,要尽量做个“靠谱”的人。
……
    特别的日子,总是有各种想法交结,敲下自己的一些想法。
 
No Comments

Posted in Life

 

论文阅读笔记:Google的图计算模型Pregel

21

来自http://www.royans.net/arch/pregel-googles-other-data-processing-infrastructure/说明google有20%的计算由Pregel完成:

“   Inside Google, MapReduce is used for 80% of all the data processing needs. That includes indexing web content, running the clustering engine for Google News, generating reports for popular queries (Google Trends), processing satellite imagery , language model processing for statistical machine translation and  even mundane tasks like data backup and restore.

The other 20% is handled by a lesser known infrastructure called “Pregel” which is optimized to mine relationships from “graphs”.”

google在SIGMOD2010上就Pregel发表了一片论文,以下是阅读笔记:

Pregel: A System for Large-Scale Graph Processing

by Grzegorz Malewicz, Matthew H. Austern, etc. from Google Inc.

摘要:Pregel是一种面向图算法的分布式编程框架,采用迭代的计算模型:在每一轮,每个顶点处理上一轮收到的消息,并发出消息给其它顶点,并更新自身状态和拓扑结构(出、入边)等。

Computational Model: Programs re expressed as a sequence of iterations, in each of witch a vertex can receive messages sent in the previous iteration, send messages to other vertices, and modify its own state and that of its outgoing edges or mutate graph topology.

大规模的图问题面临的挑战:

1、构建分布式框架:每次引入新算法或数据结构都需要花很大的精力;

2、依赖分布式平台入MapReduce等,存在易用性和性能等问题,不适用于图算法(图算法更适合消息传递模型);

3、单机:无法适应问题规模的扩大;

4、现存的并行图模型系统:没有考虑到大规模系统比较重要的问题如容错性等。

Pregel计算模型:

  • 基于BSP模型(Valiant’s Bulk Synchronous Parallel model——Leslie G. Valiant, A Bridging Model for Parallel Computing. Comm. ACM 33(8), 1990, 103-111);
  • 所有节点构成有向图;
  • 消息传递模型;
  • Pregel计算包含一连串的Supersteps,在每个Superstep,框架对所有的顶点调用一个用户定义的函数。该函数读取当前节点V在上一个superstep中接收到的消息,向其它顶点(可以是任何节点,数目可变)发送消息(用于下一个superstep),更改V的状态和出边。
  • 并行:每个顶点独立地进行本地操作,所有的消息都是从第S步发送到第S+1步。

Pregel框架的实现:

  • 由集群管理系统进行作业调度:完成资源分配、作业重启和转移等;
  • 用GFS或BigTable进行持久存储;
  • (Master-slave结构)有一个节点(机器)扮演master角色,其它节点通过name service定位该顶点并在第一次时进行注册;
  • master负责对顶点集合进行切分到各节点(也可以用户自己指定,考虑load balance等因素),根据顶ID哈希分配顶点到机器(一个机器可以有多个节点,通过name service进行逻辑区分);
  • 节点间异步传输消息;
  • 通过checkpoint机制实行容错(更高级的容错通过confined recovery实现:log),节点向master汇报心跳(ping)维持状态。

具体实现细节:

  • 顶点类Vertex包含vertices、edges、messges三种相关数据,采用protocol buffer实现易变类型;
  • 用户通过重写Compute()函数(C++中的虚函数)定义每个superstep中顶点进行的操作;GetValue()和MutableValue()函数分别得到和修改顶点关联值;
  • Message Passing:发送消息时根据目标顶点是否在本地使用不同的方式;master用barrier机制实现;
  • Combiners:(某些应用)将收到的消息进行合并,默认不启动;
  • Aggregators:(如min、max、sum)每个superstep钟每个顶点提供一个值给aggregator使用,系统通过reduce操作得到一个全局值,该值可被下一个superstep中的所有顶点使用;
  • Topology Mutations:在算法执行过程中可以改变拓扑结构,使用lazy机制;
  • Input and Output:Pregel提供常见格式文件的读写,通过继承Reader和Wirter类实现特别的需求。

应用实例:

PageRank、

SSSP(单原点最短路)、

Bipartite Matching(二分匹配:随机算法)、

Semi-Clustering(比如求社会化网络中的交往圈)。

Future work:

  • 目前所有的计算状态均保存在RAM,下一步将保存部分数据至磁盘(解决更大规模数据情况下内存不够的问题);
  • 顶点分配:减小节点间的通信,向动态分配机制转变;(个人点评:集群管理器的实现决定顶点划分(调度)、作业恢复(容错)等机制,对于整个模型非常重要。)
  • 目前面向稀疏图,稠密图(或通信特别多)的图算法仍旧无法解决。

 

Notes of Jeffrey Dean’s Lecture on SoCC’2010

21

    Jeffrey Dean在SoCC 2010作了一个关于大规模分布式系统设计模式的演讲,演讲题目是“Evolution and Future Directions of Large-Scale Storage and Computation Systems at Google”(翻译为“google大规模存储和计算系统的演变和未来方向“)

    其中对云计算未来面临的一些挑战进行了说明,对google目前和接下来的分布式系统架构进行了展示,并对大规模系统设计的一些经验进行了重点介绍。

——一点笔记——

未来面临的挑战:

  • 计算环境/客户端:

1、用户希望在不同设备上都能使用自己的数据;
2、即使离线(断网),设备也能提供部分功能;(网络连接的不稳定性)
3、(富客户端)转移部分计算到客户端;
4、(多样化的服务)计算能力更加强大(超过客户端能力);

  • (硬件特性)一个典型的新集群的机器硬件特性:

——以上数据说明硬件的不可靠性(reliability/availability),这必须从软件层面解决。

google集群软件现状(系统架构)

  • google集群的软件环境:由文件系统(GFS或Colossus)加集群调度系统 构建核心服务;
  • 通常每个作业使用的节点数以千(k)计算;
  • 系统主要组成为:
    • GFS(下一代文件系统:Colossus)
    • Cluster scheduling system
    • MapReduce
    • BigTable(下一代表格系统:Spanner)

.

  • 下一代BigTable——Sppaner的一些特性:
  1. 跨多个数据中心的存储计算系统(规模:百万到上亿的机器、上百p的存储量,上百个数据中心);
  2. 单个全局的namespace(用目录代替row、更好的副本和权限管理……);
  3. 数据中心间的强、弱一致性;
  4. 相比BigTable更多的自动化操作;
  5. 跟好地满足用户定义的上层要求:数据的获取时间限制;备份数目和分布等等。

.

一些系统构建经验和分布式系统设计模式

    关于分布式系统设计模式,某人做了笔记进行了归纳:《SYSTEM DESIGN PATTERNS》(ikewu对该文进行了翻译:《来自Jeffrey Dean的分布式系统设计模式》

    一些做系统设计必须要记住的数字:

——相关资源——

    SoCC上的讲演视频地址:

http://hosted.mediasite.com/mediasite/Viewer/?peid=1330ca0a008f4394917c2b7eb3163f1b1d

    我将其中的演示文稿截图保存在slideshare上了:

.
    Jeffrey Dean在ladis2009上做过一篇类似的讲演:”Large-Scale Distributed Systems at Google: Current Systems and Future Directions”(演示文稿与这次80%左右相同,地址:http://www.cs.cornell.edu/projects/ladis2009/talks/dean-keynote-ladis2009.pdf)