大数据算法的定义:
在给定的资源约束下,以大数据为输入,在给定时间约束内可以生成满足给定约束结果的算法。
三个约束:
- 资源约束
- 时间约束
- 问题本身对结果的约束(和传统算法定义一样)
大数据算法可以不是:
- 精确算法
- 有时无法在给定约束下得到精确的结果,此时只能靠损失一些结果的精度来换取时间,得到一个可以容忍的结果
- 内存算法
- 可以考虑外存算法,甚至可以考虑三级存储器、网络存储器算法
- 可以考虑外存算法,甚至可以考虑三级存储器、网络存储器算法
- 串行算法
- 可以是由多台机器共同执行的
- 仅在电子计算机上运行的算法
- 可以是有人来参与的算法(众包算法)
大数据算法不仅是:
- 云计算
- 云计算的确是处理大数据算法的一个非常好的途径,或者说云平台是一个很好的平台,但是大数据算法不仅仅可以在云平台中运行。在很多情况下,在一些计算能力非常弱的设备(如手机)上仍然要运行大数据算法。
- MapReduce
- MapReduce确实是实现大数据算法的一种非常好的编程架构,也确实在生产中得到了广泛的应用,但是大数据算法不仅仅是MapReduce上的算法。近就并行而言,除MapReduce模型以外还有很多其他的编程模型,况且处理大数据算法的编程不仅是靠并行,在很多情况下还要靠设计线性或者亚线性的算法,要靠设计有效的外存结构以及引入人来参与
- MapReduce确实是实现大数据算法的一种非常好的编程架构,也确实在生产中得到了广泛的应用,但是大数据算法不仅仅是MapReduce上的算法。近就并行而言,除MapReduce模型以外还有很多其他的编程模型,况且处理大数据算法的编程不仅是靠并行,在很多情况下还要靠设计线性或者亚线性的算法,要靠设计有效的外存结构以及引入人来参与
- 大数据分析与挖掘
- 大数据算法远不止分析与挖掘,还有很多其他问题,包括许多基础问题,如排序、查找,由于数据量大、时间有限、资源受限,在大数据上可能都需要设计新的算法
大数据算法的难度
- 访问全部数据时间过长
- 读取部分数据(时间亚线性算法)
- 数据难以放入内存
- 将数据存储到磁盘上(外存算法)
- 紧基于少量数据进行计算(空间亚线性算法)
- 单个计算机难以保存全部数据,计算需要整体数据
- 并行处理(并行算法)
- 计算机的计算能力不足或知识不足
- 人来帮忙(众包算法)