大数据

哈希函数又叫散列函数,输入域可以是很大的范围,输出域是固定范围。(MD5)

Map-Reduce
1.map 阶段 :将大任务分为子任务
2.reduce 阶段:子任务并发处理,然后合并结果

常见海量处理题目关键:
1.分而治之,通过哈希函数将大任务分流到机器,或分流到小人物。
2.常用到hashmap 或则bitmap

1.请对十亿个IPV4的IP地址进行排序,每个ip只出现一次
思路:ipv4 =42 亿个,ip->转化为无符号整数
十亿个IP(每个整数4字节,空间4G),然后进行排序。
bitmap:申请2的32次方的bit类型数组,对十亿个ip 位置,设置对应的值为1,然后扫描bitmap,依次提取1对应的位置整数还原成 ip.

2.有一个包含20亿个全是32位整数的大文件,在其中找到出现次数最多的书,内存限制只有2G.
思路:如果用hashmap,key 记录32位整数(四字节) value 记录出现次数(4字节) 则一条记录8字节,记录条数为2亿时候,大约1.6G…所以哈希表直接统计20亿个整数的方案导致内存不足。
解决方案:使用哈希函数进行分流分流成16个文件,得到16个文件中出现次数最多的数,然乎比较选择。

3.32位无符号整数范围 0~4294967295。现在有一个正好包含40亿无符号整数的文件,所以必有没有出现过的数,现在最多用10M的内存,只用找到一个没出现过的数即可?
思路:
hashmap :每条记录4字节 40亿 则是16GB pass
bitmap:申请长度2的32次方的byte. 也需要512 MB pass
0~2^32 :分成64 个区间,单个区间应该装下 2^32/64个数,总共范围42亿,但是数一共40亿,存在某一个区间计数不满,在该对应的空间用bitmap 做词频统计,差不多占用8 M 空间。

4.某公司一天用户搜索词汇是海量的,假设百亿的数据量,设计出每天百热词的可行办法。
思路:
step1:使用哈希函数进行分流
step2:得到每个小文件的词频统计,利用小根堆进行Top100的筛选【如果要选出前K大,则将数据中的前K个元素建立成一个小根堆,从第K+1个元素开始往后依次比较,如果元素大于小根堆的堆顶,那么就和堆顶交换,交换后重新调整为小根堆。这样变量一遍所有数据,最后得到的大小为K的小根堆就是前K大的树】(一般升序大根堆,此时是所有数据放入到堆中)
step3:再次利用小根堆或则外排序获得总体的top100.

一致性哈希算法。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值