海量数据

海量数据处理方法总结

青春壹個敷衍的年華 提交于 2019-12-08 17:59:16
下面的方法全部来自http://hi.baidu.com/yanxionglu/blog/博客 一、Bloom filter   适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集   基本原理及要点:对于原理来说很简单,位数组+k个独立hash函数。将hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明存在,很明显这个过程并不保证查找的结果是100%正确的。同时也不支持删除一个已经插入的关键字,因为该关键字对应的位会牵动到其他的关键字。所以一个简单的改进就是 counting Bloom filter,用一个counter数组代替位数组,就可以支持删除了。   还有一个比较重要的问题,如何根据输入元素个数n,确定位数组m的大小及hash函数个数。当hash函数个数k=(ln2)*(m/n)时错误率最小。在错误率不大于E的情况下,m至少要等于n*lg(1/E)才能表示任意n个元素的集合。但m还应该更大些,因为还要保证bit数组里至少一半为0,则m应该>=nlg(1/E)*lge 大概就是nlg(1/E)1.44倍(lg表示以2为底的对数)。   举个例子我们假设错误率为0.01,则此时m应大概是n的13倍。这样k大概是8个。   注意这里m与n的单位不同,m是bit为单位,而n则是以元素个数为单位(准确的说是不同元素的个数)

海量数据处理 经典案例

百般思念 提交于 2019-12-08 17:58:48
本篇涉及到的问题:海量日志数据,如何提取出某日访问淘宝次数最多的IP;上亿数据,统计其中出现次数最多的前N个数据;海量数据分布在100台电脑上,想办法高效地统计出这些数据的TOP10;5亿个int,找出他们的中位数;两个文件,各存放50亿条URL,每个URL占用64个字节,内存限制是4GB,找出两个文件中相同的URL;有40亿个不重复的undesigned int的整数,没排过序,现在给一个数,如何快速判断这个数是否在这40亿个数当中; 提示:分治、Hash映射、堆排序、双层桶划分、Bloom filter、bitmap、数据库索引、mapreduce。 海量日志数据,如何提取出某日访问淘宝次数最多的IP 首先是这一天,并且是把访问淘宝的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率最大的几个)及相应的频率。然后再在这1000个最大的IP中,找出那个频率最大的IP,即为所求。 算法思想:分而治之+Hash 1.IP地址最多有2^32=4G种取值情况,所以不能完全加载到内存中处理; 2.可以考虑采用“分而治之”的思想,按照IP地址的Hash(IP)%1024值

海量数据处理常用的方法

蓝咒 提交于 2019-12-08 17:57:50
通过对海量数据的挖掘能有效地揭示用户的行为模式,加深对用户需求的理解,提取用户的集体智慧,从而为研发人员决策提供依据,提升产品用户体验,进而占领市场。 本文内容总结自《Java程序员面试笔试宝典》。 海量处理的基本方法: 1. Hash法 构造hash表和处理冲突的方法和上面介绍的一样。 在处理海量数据的过程中,使用Hash方法一般可以快速存取、统计某些数据,将大量数据进行分类,例如提取某日访问网站次数最多的ip。 2. BitMap法 BitMapde(位图)法的基本原理是使用数组来表示某些元素是否存在。 BitMapde(位图)法的时间复杂度为O(n),比一般的排序都快,但它是以空间换时间,而且又一些限制,即数据状态不是很多,例如排序前集合大小最好已知,而且集合中元素的最大重复次数必须已知。 3. Bloom Filter 法(适用于对低错误率可以容忍的场合) Bloom Filter是一种空间效率和时间效率都很高的随机数据结构,可用来检测一个元素是否属于一个集合。其基本原理是位数组与Hash函数的联合使用。首先,Bloom Filter是一个包含m位的位数组,数组的每一位都初始化为0;其次定义k个不同的hash函数,每个函数都可以将集合中的元素映射到位数组中的某一位,这样k个hash函数就将某个元素映射到了位数组中的k个位。查询的时候

海量数据问题总结

南楼画角 提交于 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:57:11
海量数据分析处理方法 一、Bloom filter 适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集 基本原理及要点: 对于原理来说很简单,位数组+k个独立hash函数。将hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明存在,很明显这个过程并不保证查找的结果是100%正确的。同时也不支持删除一个已经插入的关键字,因为该关键字对应的位会牵动到其他的关键字。所以一个简单的改进就是 counting Bloom filter,用一个counter数组代替位数组,就可以支持删除了。 还有一个比较重要的问题,如何根据输入元素个数n,确定位数组m的大小及hash函数个数。当hash函数个数k=(ln2)*(m/n)时错误率最小。在错误率不大于E的情况下,m至少要等于n*lg(1/E)才能表示任意n个元素的集合。但m还应该更大些,因为还要保证bit数组里至少一半为0,则m应该>=nlg(1/E)*lge 大概就是nlg(1/E)1.44倍(lg表示以2为底的对数)。 举个例子我们假设错误率为0.01,则此时m应大概是n的13倍。这样k大概是8个。 注意这里m与n的单位不同,m是bit为单位,而n则是以元素个数为单位(准确的说是不同元素的个数)。通常单个元素的长度都是有很多bit的。所以使用bloom filter内存上通常都是节省的。 扩展:

海量数据处理:算法

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

海量数据处理--简易版

Deadly 提交于 2019-12-08 17:55:38
//2015年5月1日 一、分治法 map reduce(注意mapreduce要实现全排序的难点) 分治法注意点:你分的是否有规律 1.你用hash分,则不同部分间不可能有相同的数据 二、int型与string型数据 前者 bitmap 后者 trie tree 三、top N 分治法则每个map中取top N,最后在reduce中合并为一个Top N 或者堆排序,K个元素的最大堆 四、近似算法 只会考布隆过滤器,判重,求交集 来源: CSDN 作者: 王凯2012 链接: https://blog.csdn.net/u013599826/article/details/45419307

大数据时代下的海量数据存储技术有哪些?

若如初见. 提交于 2019-12-08 17:54:40
高清、长周期呈现海量存储需求 高清已经在安防行业全面铺开应用。除了带给用户能够看得更清的良好视觉感受外,对存储容量的需求亦成几何式增长。例如:前端IPC有130W到500W像素,码流也从有2Mbps到8Mbps,而一个130W像素,8Mbps码流的前端,录像一个月就需要2531.3GB,数据量不可小觑。 存储周期方面,现在也有了政府的有力推动。对当前整个安防市场来讲,特别是大公安、大交通、楼宇、司法监所、金融、文教卫、能源项目等行业迅猛发展,甲方客户的需求及大集成商的存储解决方案越来越倾向集中化。需要保存的数据也成线性增长。应对如此巨大的数据量,数据存储及客户数据快速有效查询就变得至关重要。海康一直紧跟行业发展方向,致力于推出更符合用户需求与行业需求的监控/数据中心解决方案。 现有的安防存储模式 1. DVR/NVR前端本地存储 此种模式,一般应用于实施较早项目,使用的是DVR/NVR前端本地存储,随着大数据时代的来临,采用了比较直接的方法,在DVR/NVR直接连接扩展柜来实现容量的扩容。原来系统及原数据保持不变。此种模式由于采用DVR/NVR存储容量相对较小,况且DVR/NVR性能较低,信息孤岛现象严重,无法满足大数据需求。 2. 集中存储模式 客户数据采用磁盘阵列模式。可以采用在存储节点后直接增加扩展柜的模式,随着集群的推出也可以通过增加存储节点来实现容量增加。相对于DVR

十道海量数据处理面试题与十个方法大总结

筅森魡賤 提交于 2019-12-08 17:53:38
海量数据处理:十道面试题与十个海量数据处理方法总结 作者:July、youwang、yanxionglu。 时间:二零一一年三月二十六日 本文之总结: 教你如何迅速秒杀掉:99%的海量数据处理面试题 。有任何问题,欢迎随时交流、指正。 出处: http://blog.csdn.net/v_JULY_v 。 第一部分、十道海量数据处理面试题 1、海量日志数据,提取出某日访问百度次数最多的那个IP。 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率最大的几个)及相应的频率。然后再在这1000个最大的IP中,找出那个频率最大的IP,即为所求。 或者如下阐述(雪域之鹰): 算法思想:分而治之+Hash 1.IP地址最多有2^32=4G种取值情况,所以不能完全加载到内存中处理; 2.可以考虑采用“分而治之”的思想,按照IP地址的Hash(IP)%1024值,把海量IP日志分别存储到1024个小文件中。这样,每个小文件最多包含4MB个IP地址; 3.对于每一个小文件,可以构建一个IP为key,出现次数为value的Hash map

浅析海量数据处理问题

百般思念 提交于 2019-12-08 17:52:55
生活中我们经常会遇到一些海量数据处理的问题,那么怎样的问题就算是海量数据了呢?来看以下这几个问题: 给定一个大小超过 100G 的文件, 其中存在 IP 地址, 找到其中出现次数最多的 IP 地址 。 给定100亿个整数, 找到其中只出现一次的整数(位图变形, 用两位来表示次数)。 有两个文件, 分别有100亿个query(查询词, 字符串), 只有1G内存, 找到两个文件的交集。 给上千个文件, 每个文件大小为1K - 100M, 设计算法找到某个词存在在哪些文件中。 首先第一个问题很明确有100G的数据;第二个问题100亿个整数所占的空间大小是:100亿*4byte = 40G;第三个问题100亿也就是10G……要知道我们日常使用的电脑也就是4G、8G的内存大小,远不能满足这里的100G、40G……的数据处理的需求。但是我们又必须要处理类似这样的问题,难道就束手无策了么!!! 为了解决类似这样的问题,我们可以借助之前学的哈希表,位图,布隆过滤器这样的数据结构,接下来我们来了解一下相关知识。 哈希表 详情请移步: 哈希表 位图 详情请移步: 位图 布隆过滤器 详情请移步: 布隆过滤器 哈希切分 所谓的切分就很好理解,就是将一个东西切分开,将一个整体划分为多个更小的小整体。那么这里的哈希切分又是什么操作呢?提到哈希我们就要想到这其中使用了哈希函数,同样 的哈希切分