BigData

作者: coderjiege | 来源:发表于2020-02-03 10:20 被阅读0次

只用2GB内存在20亿个整数中找到出现次数最多的数

解法:哈希表?

  1. key代表整数,value代表这个数出现的次数
  2. 即使1个数出现了20亿次,也可以用32位整数(2^31 = 21,4748,3648,刚好超过21亿)表示出其出现的次数
  3. 所以哈希表key需要占用4B(可以存放32位整数),value也需要4B(可以存放20亿的次数)
  4. 当哈希表记录数为2亿(2*10^8)个时,需要1.6GB(1.6 * 2^30)内存。
  5. 但如果20亿个数不同的数超过2亿种,内存就会不够,有风险。

1GB = 2^10MB = 2^20KB = 2^30B > 10亿B

最优解:哈希函数 + 哈希表
把一个大的集合通过哈希函数分配到多台机器中,或者分配到多个文件里(分批次处理),这种技巧是处理大数据面试题时最常用的技巧之一。但是到底分配到多少台机器,分配到多少文件,在解题时一定要确定下来。

把包含20亿个数的大文件用哈希函数分成16个小文件,同一种数会被哈希到同一个文件上,每个小文件的数一定不会大于2亿种,先取得每个小文件中出现次数最多的数,再将这16个小文件出现次数最多的数取第一名即可。

常用的hash函数是选一个数m取模(余数),这个数在课本中推荐m是素数,但是经常见到选择m=2n,因为对2n求余数更快

找到100亿个URL中重复的URL以及搜索词汇的top K问题

  • 内存要求?
  • 计算时间要求?

哈希函数 -> 多台机器/小文件 -> 哈希表
哈希表遍历,每个小文件都有自己的小根堆(词频top100)
对不同机器top100再进行外排序或者小根堆,最终求出百亿数据top100

对于topK问题,除哈希函数分流和用哈希表做词频统计之外,还经常用堆结构和外排序进行处理

相关文章

  • 大数据集群监控框架

    一、监控框架 Bigdata1Bigdata2Bigdata3Zabbixzabbix-server zabbix...

  • 四 Zookeeper实战

    4.1 分布式安装部署 0)集群规划 在bigdata111、bigdata112和bigdata113三个节点上...

  • ZooKeeper从入门到精通10:演示选举leader

    ZooKeeper集群环境介绍: bigdata131 192.168.126.131bigdata132 192...

  • BIgData

    4V:规模性(Volume)、高速性(Velocity)、多样性(Variety)、价值性(Value) 大数据时...

  • BigData

    只用2GB内存在20亿个整数中找到出现次数最多的数 解法:哈希表? key代表整数,value代表这个数出现的次数...

  • ogg实时同步到Kafka

    目标库(Linux) 安装OGG for bigdata 解压OGG_BigData 再次解压 安装java 1....

  • BigData -MapReduce

    MapReduce适合PB级以上海量数据的离线处理MapReduce不擅长什么 实时计算 像MySQL一样,在毫秒...

  • bigdata术语

    A 聚合(Aggregation)– 搜索、合并、显示数据的过程 算法(Algorithms)– 可以完成某种数据...

  • Linux下Hadoop集群安装与配置

    环境基础 三台虚拟机,本文以三台CentOS6.9为例(分别命名:bigdata1 bigdata2 bigdat...

  • CentOS7 hadoop集群配置-2

    5), 拷贝到从节点 6), 启动 在bigdata01节点上启动 7), 查看 在bigdata02 和 bi...

网友评论

    本文标题:BigData

    本文链接:https://www.haomeiwen.com/subject/egthxhtx.html