海量数据面试题分析
https://zhuanlan.zhihu.com/p/40648295 ,转知乎,手敲一遍,加深记忆 箴言:无论是这些海量数据处理面试题也好,还是算法也好,面试时,70~80%的人不是倒在这两方面,而是倒在基础之上(诸如语言,数据库,操作系统,网络协议等等),所以, 无论任何时候,基础最重要,没了基础,便什么都不是 。 何谓海量数据处理? 无非就是基于海量数据上的存储,处理,操作。海量就是数据量太大。导致要么无法再较短时间解决,要么是数据太大,无法一次性装入内存。 解决方案: 针对时间:可以采取巧妙的算法搭配合适的数据结构,如Bloom filter、Hash、bit-map、Heap、数据库索引或者倒排索引、Trie树 针对空间:无非就是大而化小,分而治之(hash映射),不就是规模大嘛,我就化成小的,各个击破。 关于单机和集群问题: 单机:处理装载数据的机器有限(只需考虑CPU,内存,硬盘的数据交互) 集群:机器有多辆,适合分布式处理,并行计算(更多考虑节点和节点间的数据交互) 通过另一篇:Big Data Processing,知道,处理海量数据无非就是: 分而治之/hash映射 + hash统计 + 堆/快速/归并排序 双层桶划分 Bloom filter/Bitmap Trie树/数据库/倒排索引 外排序 分布式处理之Hadoop/Mapreduce 本文第一部分