- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
六招秒杀99%海量数据处理面试题
六招秒杀99%海量数据处理面试题
前言
一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来
讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对
这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结。
毕竟受文章和理论之限,本文将摒弃绝大部分的细节,只谈方法/模式论,且注重用最通俗最直白的语言阐
述相关问题。最后,有一点必须强调的是,全文行文是基于面试题的分析基础之上的,具体实践过程中,
还是得具体情况具体分析,且场景也远比本文所述的任何一种情况复杂得多。
OK,若有任何问题,欢迎随时不吝赐教。谢谢。
何谓海量数据处理?
所谓海量数据处理,无非就是基于海量数据上的存储、处理、操作。何谓海量,就是数据量太大,所以导
致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。
那解决办法呢?针对时间,我们可以采用巧妙的算法搭配合适的数据结构,如Bloomfilter/Hash/bit-map/
堆/数据库或倒排索引/trie树,针对空间,无非就一个办法:大而化小:分而治之/hash映射,你不是说
规模太大嘛,那简单啊,就把规模大化为规模小的,各个击破不就完了嘛。
至于所谓的单机及集群问题,通俗点来讲,单机就是处理装载数据的机器有限(只要考虑cpu,内存,硬盘
的数据交互),而集群,机器有多辆,适合分布式处理,并行计算(更多考虑节点和节点间的数据交互)。
再者,通过本blog 内的有关海量数据处理的文章:BigDataProcessing,我们已经大致知道,处理海量数
据问题,无非就是:
/hash +hash + / /
分而治之 映射 统计 堆快速归并排序;
双层桶划分
Bloomfilter/Bitmap;
Trie树/数据库/倒排索引;
外排序;
分布式处理之Hadoop/Mapreduce。
下面,本文第一部分、从set/map谈到hashtable/hash_map/hash_set,简要介绍下
set/map/multiset/multimap,及hash_set/hash_map/hash_multiset/hash_multimap之区别(万丈高楼
) 6
平地起,基础最重要 ,而本文第二部分,则针对上述那 种方法模式结合对应的海量数据处理面试题分别
具体阐述。
第一部分、从set/map谈到hashtable/hash_map/hash_set
稍后本文第二部分中将多次提到hash_map/hash_set,下面稍稍介绍下这些容器,以作为
基础准备。一般来说,STL容器分两种,
序列式容器(vector/list/deque/stack/queue/heap),
关联式容器。关联式容器又分为set(集合)和map(映射表)两大类,以及这两大类的衍生体multiset(多
键集合)和multimap(多键映射表),这些容器均以RB-tree完成。此外,还有第3类关联式容器,
如hashtable(散列表),以及以hashtable为底层机制完成的hash_set(散列集合)/hash_map(散列映射
表)/hash_multiset(散列多键集合)/hash_multimap(散列多键映射表)。也就是说,
set/map/multiset/multimap都内含一个RB-tree,而
hash_set/hash_map/hash_multiset/hash_multimap都内含一个hashtable。
所谓关联式容器,类似关联式数据库,每笔数据或每个元素都有一个键值(key)和一个实值(value)。当元素
被插入到关联式容器中时,容器内部结构(RB-tree/hashtable)便依照其键值大小,以某种特定规则将这个元
素放置于适当位置。
set/map/multiset/multimap
set,同map一样,所有元素都会根据元素的键值自动被排序,因为set/map两者的所有各种操作,都只是
转而调用RB-tree 的操作行为,不过,值得注意的是,两者都不允许两个元素有相同的键值。
set map
文档评论(0)