内存映射

海量数据处理:算法

与世无争的帅哥 提交于 2019-12-08 19:06:42
海量信息即大规模数据,随着互联网技术的发展,互联网上的信息越来越多,如何从海量信息中提取有用信息成为当前互联网技术发展必须面对的问题。 在海量数据中提取信息,不同于常规量级数据中提取信息,在海量信息中提取有用数据,会存在以下几个方面的问题: (1)数据量过大,数据中什么情况都可能存在,如果信息数量只有20条,人工可以逐条进行查找、比对,可是当数据规模扩展到上百条、数千条、数亿条,甚至更多时,仅仅只通过手工已经无法解决存在的问题,必须通过工具或者程序进行处理。 (2)对海量数据信息处理,还需要有良好的软硬件配置,合理使用工具,合理分配系统资源。通常情况下,如果需要处理的数据量非常大,超过了TB级,小型机、大型工作站是要考虑的,普通计算机如果有好的方法也可以考虑,如通过联机做成工作集群。 (3)对海量信息处理时,要求很高的处理方法和技巧,如何进行数据挖掘算法的设计以及如何进行数据的存储访问等都是研究的难点。 针对海量数据的处理,可以使用的方法非常多,常见的方法有Hash法、Bit-map法、Bloom filter法、数据库优化法、倒排索引法、外排序法、Trie树、堆、双层桶法以及MapReduce法。 Hash法 哈希函数的特点 哈希函数的构建方法 解决冲突的方法 Bit-map法 Bloom filter法 数据库优化法 倒排索引法 外排序法 Trie树 堆 双层桶法

大数据处理

有些话、适合烂在心里 提交于 2019-12-08 19:03:47
海量数据处理问题汇总及方法总结 面试题中总是有好多海量数据的处理问题,在这里列出一些常见问题,便于以后查阅: 类型1:hash映射+hash统计+堆排序 1、 给你A,B两个文件,各存放50亿条URL,每条URL占用64字节,内存限制是4G,让你找出A,B文件共同的URL。 可以估计每个文件安的大小为5G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。 分而治之/hash映射:遍历文件a,对每个url求取 ,然后根据所取得的值将url分别存储到1000个小文件(记为 )中。这样每个小文件的大约为300M。遍历文件b,采取和a相同的方式将url分别存储到1000小文件中(记为 )。这样处理后,所有可能相同的url都在对应的小文件( )中,不对应的小文件不可能有相同的url。然后我们只要求出1000对小文件中相同的url即可。 hash统计:求每对小文件中相同的url时,可以把其中一个小文件的url存储到hash_set中。然后遍历另一个小文件的每个url,看其是否在刚才构建的hash_set中,如果是,那么就是共同的url,存到文件里面就可以了。 2、有10个文件,每个文件1G, 每个文件的每一行都存放的是用户的query,每个文件的query都可能重复。要你按照query的频度排序 方案1: hash映射:顺序读取10个文件

海量数据处理的 Top K相关问题

折月煮酒 提交于 2019-12-08 18:30:05
Top-k的最小堆解决方法 问题描述:有N(N>>10000)个整数,求出其中的前K个最大的数。(称作Top k或者Top 10) 问题分析:由于(1)输入的大量数据;(2)只要前K个,对整个输入数据的保存和排序是相当的不可取的。 可以利用数据结构的最小堆来处理该问题。 最小堆如图所示,对于每个非叶子节点的数值,一定不大于孩子节点的数值。这样可用含有K个节点的最小堆来保存K个目前的最大值(当然根节点是其中的最小数值)。 每次有数据输入的时候可以先与根节点比较。若不大于根节点,则舍弃;否则用新数值替换根节点数值。并进行最小堆的调整。 TOP K的python代码实现 def heap_sort (ary, k) : # 构建小顶堆 def siftdown (ary, begin, end) : i,j = begin, begin* 2 + 1 while j < end: if j+ 1 < end and ary[j+ 1 ] < ary[j]: # 查看左右子树的最小节点 j += 1 if ary[i] < ary[j]: # 如果不需要交换了,则停止 break ary[i],ary[j] = ary[j],ary[i] # 交换父和子 i,j = j,j* 2 + 1 # 构建最小堆 end = len(ary) for i in range(end// 2 - 1 ,

教你如何迅速秒杀99%的海量数据处理面试题

前提是你 提交于 2019-12-08 18:21:42
教你如何迅速秒杀99%的海量数据处理面试题 教你如何迅速秒杀99%的海量数据处理面试题 作者:July 出处:结构之法算法之道blog 前言 一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对这篇文章: 十道海量数据处理面试题与十个方法大总结 的一般抽象性总结。 毕竟受文章和理论之限,本文摒弃绝大部分的细节,只谈方法/模式论,且注重用最通俗最直白的语言阐述相关问题。最后,有一点必须强调的是,全文行文是基于面试题的分析基础之上的,具体实践过程中,还是得具体情况具体分析,且场景也远比本文所述的任何一种场景复杂得多。 OK,若有任何问题,欢迎随时不吝赐教。谢谢。 何谓海量数据处理? 所谓海量数据处理,其实很简单,海量,海量,何谓海量,就是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。 那解决办法呢?针对时间,我们可以采用巧妙的算法搭配合适的数据结构,如 Bloom filter/Hash/bit-map/堆/数据库或倒排索引/trie/ ,针对空间,无非就一个办法:大而化小: 分而治之/hash映射 ,你不是说规模太大嘛,那简单啊,就把规模大化为规模小的,各个击破不就完了嘛。

数据挖掘、数据分析、海量数据处理的面试题(总结july的博客)

家住魔仙堡 提交于 2019-12-08 18:04:35
缘由 由于有面试通知,现在复习一下十道和海量数据处理相关的题。两篇博客已经讲的非常完备了,但是我怕读懂了并非真的懂,所以必须自己复述一遍。 教你如何迅速秒杀掉:99%的海量数据处理面试题 海量数据处理:十道面试题与十个海量数据处理方法总结 MapReduce技术的初步了解与学习 面试归类 下面6个方面覆盖了大多数关于海量数据处理的面试题: 分而治之/hash映射 + hash统计 + 堆/快速/归并排序; 双层桶划分 Bloom filter/Bitmap; Trie树/数据库/倒排索引; 外排序; 分布式处理之Hadoop/Mapreduce。 下面我讲针对上两篇博客里的海量数据处理的题的解法再复述一遍。 第一类:分治后hash统计再排序 第一题:海量日志数据,提取出某日访问百度次数最多的那个IP 解答: 该题解题思路总共分为三步 分而治之/hash映射:如果该文件过大,不能全部读入内存。我们就必须先利用hash函数将其分割成若干小文件。再分别对各个小文件进行处理。注意这一步我们肯定会将相同的ip放在同一个文件。由于这个题干给的比较少。我只有自己脑补一下,大概给我们的日志中就是百度web服务器自己记录的来自不同的ip的访问。这个日志是按天生成的,所以现在我们要统计一天内,哪一个ip访问本网站百度的次数最多。那么日志中肯定就是记录是访问ip和时间,但是相同的ip肯定是单独的一条

海量数据处理算法

南笙酒味 提交于 2019-12-08 18:01:53
原文地址:http://www.2cto.com/kf/201606/519107.html 海量信息即大规模数据,随着互联网技术的发展,互联网上的信息越来越多,如何从海量信息中提取有用信息成为当前互联网技术发展必须面对的问题。 在海量数据中提取信息,不同于常规量级数据中提取信息,在海量信息中提取有用数据,会存在以下几个方面的问题: (1)数据量过大,数据中什么情况都可能存在,如果信息数量只有20条,人工可以逐条进行查找、比对,可是当数据规模扩展到上百条、数千条、数亿条,甚至更多时,仅仅只通过手工已经无法解决存在的问题,必须通过工具或者程序进行处理。 (2)对海量数据信息处理,还需要有良好的软硬件配置,合理使用工具,合理分配 系统 资源。通常情况下,如果需要处理的数据量非常大,超过了TB级,小型机、大型工作站是要考虑的,普通计算机如果有好的方法也可以考虑,如通过联机做成工作集群。 (3)对海量信息处理时,要求很高的处理方法和技巧,如何进行数据挖掘算法的设计以及如何进行数据的存储访问等都是研究的难点。 针对海量数据的处理,可以使用的方法非常多,常见的方法有Hash法、Bit-map法、Bloom filter法、 数据库 优化法、倒排索引法、外排序法、Trie树、堆、双层桶法以及MapReduce法。 Hash法 Hash 一般被翻译为哈希,也被称为散列,它是一种映射关系

教你如何迅速秒杀99%的海量数据处理面试题

倖福魔咒の 提交于 2019-12-08 18:01:26
前言 一般而言,标题含有“秒杀”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对这篇文章: 十道海量数据处理面试题与十个方法大总结 的一般抽象性总结。 毕竟受文章和理论之限,本文摒弃绝大部分的细节,只谈方法/模式论,且注重用最通俗最直白的语言阐述相关问题。最后,有一点必须强调的是,全文行文是基于面试题的分析基础之上的,具体实践过程中,还是得具体情况具体分析,且场景也远比本文所述的任何一种场景复杂得多。 OK,若有任何问题,欢迎随时不吝赐教。谢谢。 何谓海量数据处理? 所谓海量数据处理,其实很简单,海量,海量,何谓海量,就是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。 那解决办法呢?针对时间,我们可以采用巧妙的算法搭配合适的数据结构,如 Bloom filter/Hash/bit-map/堆/数据库或倒排索引/trie/ ,针对空间,无非就一个办法:大而化小: 分而治之/hash映射 ,你不是说规模太大嘛,那简单啊,就把规模大化为规模小的,各个击破不就完了嘛。 至于所谓的单机及集群问题,通俗点来讲,单机就是处理装载数据的机器有限(只要考虑cpu,内存,硬盘的数据交互),而集群,机器有多辆,适合分布式处理,并行计算

海量数据问题总结

南楼画角 提交于 2019-12-08 17:57:29
本博客已弃用,当时存在一些小细节错误后期也不再修改了 欢迎来我的 新博客 前言:在这个用户量爆炸、并发极高的互联网时代,对于如今的IT行业,在极大量的数据处理这一块的能力,无疑某些程度上是其技术实力的体现。例如淘宝、支付宝在双十一这天的峰值时期,每秒要处理的数据量几乎都是百亿级别,新浪微博在春晚将要处理一亿左右人的抢红包活动。海量数据处理能力是一家大公司必须要做得非常硬的一个技术块,这样才能在互联网行业的激烈竞争中站稳脚跟。因此,海量数据问题在面试中也是经常问到的,并且也是很能体现你的知识底蕴的一个方面。 下面我们通过七个问题来进行讲解。 Ps:本文需要堆、哈希、位图、布隆这些知识基础,若你不明白这些目前还是先不要看下去了,当然,没有耐心去一个一个方法看的肯定也看不下去。 正文: 海量数据的定义:内存里存不下或者会占用太多内存的数据量。(注意:我们说的是内存,因为这些数据都是要拿来直接用的) 注意:在这里讲的是方法,因为别人问你也不是要你自己能实现一个处理海量的数据的轮子,重要的是能表述清楚原理,因此无关紧要的细节各位自行忽略(比如下面的log file怎么取模,log file中的IP怎么提取 之类的问题 ) 1)给⼀一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址。如何找到top K的IP?

海量数据处理:算法

感情迁移 提交于 2019-12-08 17:55:57
海量信息即大规模数据,随着互联网技术的发展,互联网上的信息越来越多,如何从海量信息中提取有用信息成为当前互联网技术发展必须面对的问题。 在海量数据中提取信息,不同于常规量级数据中提取信息,在海量信息中提取有用数据,会存在以下几个方面的问题: (1)数据量过大,数据中什么情况都可能存在,如果信息数量只有20条,人工可以逐条进行查找、比对,可是当数据规模扩展到上百条、数千条、数亿条,甚至更多时,仅仅只通过手工已经无法解决存在的问题,必须通过工具或者程序进行处理。 (2)对海量数据信息处理,还需要有良好的软硬件配置,合理使用工具,合理分配系统资源。通常情况下,如果需要处理的数据量非常大,超过了TB级,小型机、大型工作站是要考虑的,普通计算机如果有好的方法也可以考虑,如通过联机做成工作集群。 (3)对海量信息处理时,要求很高的处理方法和技巧,如何进行数据挖掘算法的设计以及如何进行数据的存储访问等都是研究的难点。 针对海量数据的处理,可以使用的方法非常多,常见的方法有Hash法、Bit-map法、Bloom filter法、数据库优化法、倒排索引法、外排序法、Trie树、堆、双层桶法以及MapReduce法。 Hash法 哈希函数的特点 哈希函数的构建方法 解决冲突的方法 Bit-map法 Bloom filter法 数据库优化法 倒排索引法 外排序法 Trie树 堆 双层桶法

[笔试题目] 简单总结笔试和面试中的海量数据问题

半城伤御伤魂 提交于 2019-12-08 17:49:17
最近在笔试和面试中遇到了很多关于海量数据的问题,在此进行简单的记录, 写一篇方便自己下次学习的处理海量数据的文章及 在线笔记,同时也希望对你有所帮助。当然,海量数据最出名的还是 七月July ,但这里我是想直接从实际题目出发,并参考及摘抄了他们那些大牛的文章及自己的想法进行简单总结记录。 一. 原题重现 2015年9月27日百度笔试论述题二选一,其中第一道是关于MapReduce相关的;第二道是搜索引擎中url去重,海量数据集url如何在爬取过程中避免重复爬取过的url。 PS:通常搜索引擎网页去重是通过文档特征提取,再计算相似性或集合Hash实现。 下面是常见的题型: 1.Hash算法处理海量数据部分 【题目1】(安卓越 2012) 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 【题目2】海量日志数据,提取出某日访问百度次数最多的那个IP。 【题目3】有10个文件,每个文件1G,每个文件的每一行存放的都是用户的query,每个文件的query都可能重复。要求你按照query的频度排序。 【题目4】有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词。 2.Top-K海量数据部分 【题目1】(360公司 2012) 100万条记录的文本文件