背景
假如(假如。。。)我是Facebook,Twitter,或者是Weibo的工程师(额,,,);
每天有上亿用户在这个平台上发牢骚,晒经历,秀恩爱,炫富什么的,记得有每天有上亿条消息,
我们就想知道,下面这些问题:
- 最近一天(小时,分钟)大概有多少个不同的人在发牢骚?
- 最近一天(小时,分钟)秀恩爱次数排名前10(100,1000)的用户大概有哪些?
- 假设每个人每天的发推的数量是正态分布,找出发推数异常高的用户?
这些问题在数据量小的时候很容易解决,哈希,或者堆什么的记录一下就行了,最后再扫描一遍。
但是当数据量大到100G左右的时候,一台机器都没法放下这么大的哈希表;而且老大也不想加机器去做这么无聊的功能;更不想用Hadoop工具栈的分布式什么的把系统搞得很庞大,工程师人手也不足(话说两百个不到的工程师要支撑几亿用户也很那个啥)。
总的来说现有算法在大数据上有这些缺点
- 需要扫多次数据;这就需要把数据库库存到硬盘上,又把它读出来,对大数据凡是遇到硬盘都是比较蛋疼的事情;(因为硬盘不够多,读