海量数据处理是指基于海量数据的存储、处理、和操作。
正因为数据量太大,所以导致要么无法在较短时间内迅速解决,要么无法一次性装入内存。
- 对于时间问题,可以采用巧妙的算法搭配合适的数据结构(如布隆过滤器、哈希、位图、堆、 数据库、倒排索引、Trie 树)来解决;
- 对于空间问题,可以采取分而治之(哈希映射)的方法,也就是说,把规模大的数据转化为规模小的,从而各个击破。
此外,针对常说的单机及集群问题:
- 单机就是指处理装载数据的机器有限(只要考虑 CPU、 内存、和硬盘之间的数据交互)
- 集群的意思是指机器有多台,适合分布式处理或并行计算,更多考虑节点与节点之间的数据交互。
处理海量数据问题,有 10 种典型方法:
哈希分治
simhash 算法
外排序
MapReduce
多层划分
位图
布隆过滤器
Trie 树
数据库
倒排索引