大数据入门

一.典型高性能计算机软件栈

大数据入门_第1张图片

 

二.大数据处理平台与应用的特性

MPI要求所有资源都可用才能正常运行,容错困难,MPI在系统同构时才能发挥效率。

大数据平台需要支持廉价的硬件,软件需要支持自动容错和自动负载平衡—即支持扩展性。

大数据入门_第2张图片
1.MapReduce编程模型

a.借用了函数语言的概念

b.用户只需要写串行的Map和Reduce函数

map(in key, in_value) ->
    (out_key, intermediate_value) list

reduce(out_key, intermediate_value list) ->
    out_value  list

c.较容易实现容错,只要重算该任务;容易实现负载平衡,支持异构系统

d.主流大数据平台Apache Hadoop Ecosystem

e.MapReduce中用文件传递数据,由于数据复制、序列化和磁盘I/O使得性能较差

大数据入门_第3张图片
        如果能用内存保存数据,比采用硬盘的方案快10-100倍。

 

2.基于内存的大数据分析平台-Spark

大数据入门_第4张图片
1).Spark对内存的抽象

a.RDD(Resilient Distributed Datasets)

        -基于数据集合,而不是单个数据

        -由确定性的粗粒度操作产生(map,filter,join等)

        -数据一旦产生,就不能修改(immutable)

        -如果要修改数据,要通过数据集的变换来产生新的数据集

b.RDD支持高效的容错

        数据一旦是确定性的产生,并且产生后不会变化

        -就可以通过“重复计算”的方法来恢复数据

        -只要记住rdd的生成过程就可以了,这样一次log可以用于很多数据,在不出错的时候几乎没有开销

大数据入门_第5张图片

2).Spark的局限性-数据模型层面

        大数据应用:部分数据更新

        Spark:只读数据对象

大数据入门_第6张图片
        每次细粒度的数据更新,由于Spark基于粗粒度RDD只读的数据对象模型,需要RDD变换,即有大量数据的复制,导致处理效率不高。

 

3).Spark的局限性-实现层面

a.Spark基于Scala语言,运行在JVM上

b.内存表示冗余,占用内存大

c.内存分配与回收开销大

 

三.大数据系统的设计理念

大数据入门_第7张图片

四.问题

        大数据系统,性能还是扩展性优先?

1.性能的重要性

a.为什么容错是重要的?

        很多结点,长运行时间

b.如果性能可以显著提高

        更少的结点(可能是1个结点),更短的运行时间

        可以使用更大开销的容错技术,例如检查点,因为遇到故障的概率更低

性能优先的大数据平台:性能与容错可以兼得(如果性能可以好很多)

 

2.许多大数据问题的规模有限

a.人口数

        100亿,社交网络的大小约10TB

b.产品数

        100万

c.摩尔定律在驱动计算能力、内存大小和I/O带宽以指数速度增长

今天的规模有限的大数据问题,会成为明天的小数据问题。

 

3.图数据的重要意义

        图能够表达丰富的数据和关系

        -网络连接

        -网页链接

        -社交关系

        -蛋白质交互

        -人与人、人与公司、人与产品

 

4.图的计算与分析

        -PageRank

        -最短路径

        -连通分支

        -极大独立集

        -最小代价生成树

        -Bayesian Belief Propagation

 

5.基于图抽象的编程模型

        -图的基本元素是结点和边

        -最直观的编程抽象可以基于结点和边进行

                -结点上计算

                -沿着边通信

大数据入门_第8张图片

五.图计算-折衷的大数据分析平台

大数据入门_第9张图片
        GraphLab在某些任务上比Spark快10倍。

 

六.GraphLab的问题

1.内存占用大

        所需内存是原始数据的10倍以上,需要过多结点计算,引入了不必要的通信和并行开销

2.访存局部性差

        计算性能低,处理小图时8台处理性能还不如单机系统。

 

七.清华大学研究院的性能优先的大数据系统GridGraph

1.数据模型:可读写数据

2.数据结构:基于二维shuffle的数据结构,局部性好,紧凑

3.编程抽象:基于点和边的集合,同时支持单机和多机

4.执行平台:单机内存->Out of core->分布式系统

5.性能优化:NUMA,调度,自适应数据格式等

先从局部性和调度的角度优化单机性能,再扩展到多机。

6.多机扩展与优化

        -Sparse-dense双计算引擎

        -基于chunk的图划分机制

        -通信和计算的协同调度

大数据入门_第10张图片
 

来自清华大学的教授分享。

你可能感兴趣的:(mapreduce,hadoop,spark,graphlab)