Automatic Management of Data and Computation in Datacenters

最近在研究数据中心的数据管理和性能优化,看了一篇2010的论文Nectar:Automatic Management of Data and Computation in Datacenters,还是有一定的启发的,简要介绍给大家。详细的建议大家download论文下来看下。

Nectar核心思路有两个:

1、大部分数据计算存储之后是无效的,根据论文中研究统计结果,有50%的文件在过去的250天之内完全未必访问过,所以这50%的存储是完全被浪费掉了,因此只计算和存储真正有用的数据就可以降低50%的存储使用。

2、数据计算的中间过程是可以被重用的。通过重用子计算,来降低数据中心的负荷。

 

Nectar怎么来做到上面两点呢?

核心方法: 实现数据和计算的统一自动化管理。实现计算和数据可交换,主要在于2点:

1、将计算的结果存放在Cache中统一管理,等到下次相似的计算进行的时候,首先从datecenter wide caching service中去查找是否已经完全或者部分执行过,如果有的话,就会避免相同数据的重复计算。
2、将废弃不用或者经常不使用的数据从数据中心的存储空间自动回收(使用了标准的mark-and-sweep Garbage Collector),并保留生成该数据的计算来取代该数据,但是当该数据需要的时候,就要重新提交该计算。

 

上面说的对计算和数据的管理,整个过程对用户是完全透明的。做到以上两点,核心在缓存策略,重算算法。看下图Nectar的架构:


Automatic Management of Data and Computation in Datacenters_第1张图片
 

1、用户提交程序的时候,程序会被rewriter,分解成子计算,然后到cache server中看是否被命中,命中的不需要重新计算,从而节省计算时间。

2、每次计算的中间过程,同样会被cachecache server中。

3、Cache server并不保存数据,所有数据保存在Distribute FS上。Cache server上只是保存一个到Distributed FS映射。

这个系统也不是万能的,当前Nectar为了做到program rewriter,要求所有的程序只能是LINQ,另外,数据重算的策略对时效性要求高的是否适合也值得讨论。总的来说,系统的思路还是值的借鉴和学习的,推荐大家去down一下原生的论文看看。

2014年我给自己定了一个目标,看50篇英文论文,这个算是启发比较大的。

你可能感兴趣的:(hadoop,BigData,datacenter,nectar)