第十一章_大数据_2019-03-31

大数据介绍

面试中关于大数据的题目有些是和采样结合的题目,其实更适合放在概率的章节,但值得注意的是越来越大的题更注重对map-reduce的理解和掌握,Map-reduce和Hadoop逐渐成为面试的热门。

介绍哈希函数

哈希函数又叫散列函数,哈希函数的输入域可以是非常大的范围,但是输出域是固定范围。假设为s。
哈希函数的性质:
1、典型的哈希函数都拥有无限的输入值域。
2、输入值相同时,返回值一样。
3、输入值不同时,返回值可能一样,也可能不一样。
4、不同输入值得到的哈希值,整体均匀的分布在输出域s上。(重要)
MD5与SHA1算法都是经典的哈希函数算法,了解即可,面试时不要求掌握。

map-reduce

1、Map阶段→把大任务分成子任务。
2、Reduce阶段→子任务并发处理,然后合并结果。
注意点:
1、备份的考虑,分布式存储的设计细节,以及容灾策略。
2、任务分配策略与任务进度跟踪的细节设计,节点状态的呈现。
3、多用户权限的控制。

常见的海量数据处理技巧

1、分而治之。通过哈希函数将大任务分流到机器,或分流成小文件。
2、常用的hashMap或bitmap。
难点:通讯、时间和空间的估算。

经典题

  • 用map-reduce方法统计一篇文章中每个单词出现的个数
    1、预处理,生成只包含单词的文本
    2、map阶段:1)对每个单词生成词频为1的记录如:(dog,1)、(pig,1),一个单词可能有多个词频为1的记录此时还未进行合并;2)通过哈希函数得到每个单词的哈希值,并根据该值分成若干组任务,每个子任务中包含若干种单词,但同一种单词不会分配进不同的子任务中。
    3、reduce阶段:1)单个子任务中同一种单词的词频进行合并;2)所有记录统一合并
  • 排序:请对10亿个ipv4的地址进行排序,每个ip只出现一次
    ipv4的ip数量有42亿多一点
    普通方法:将10亿ip转化为对应的用4个字节32位表示的整数,对这些数排序后再转换为ip地址
    更好的方法:申请长度为232的bit类型的数组,其大小约为500m,记为bitmap,将10一个ip转化为相应的整数后,在bitmap中会有对应的位置,将其描黑,表示其出现,最后按顺序遍历bitmap即可,遍历过程中再转回ip地址。
  • 请对10亿人的年龄进行排序
    年龄的范围可以认为是0~200间,这样可以用200个桶,采用计数排序就行
  • 有一个包含20亿个全是32位整数的大文件,在其中找到出现次数最多的数。但是内存限制只有2G
    通常做法:用hash表做词频统计,但此题需要以每个数作为键,以该数出现的次数作为值创建hash表,所以一条记录需要8个字节存储,一共20亿数据就需要大约16G的内存空间,显然不合适。
    推荐做法:用hash函数对不同的数进行分流,此处假设分流为16个小文件,再利用hash表进行词频统计,找出各自的词频最高的数,再进行比较。
  • 32位无符号整数的范围是0~4294967295。现在有一个正好包含40亿个无符号整数的文件,所以在整个范围中必然有没出现过的数。可以使用最多10M的内存,只用找到一个没出现过的数即可,该如何找?
    如果供hash表做:因为只记录是否出现,不需要记录词频,所以每条记录需要4个字节,一共40亿记录的话需要大约16G,远超题目给的10m
    如果用bitmap做:这里长度为232的bit类型数组可以表示42亿多的数,所以此处申请长度为232的bit类型数组,该数组的大小大约为500m,也不满足题意
    此题推荐做法:用hash函数对每个整数进行分流,此处需要分流64份,则每份数据用bitmap的话仅仅需512 / 64 = 8m空间。
    对每个区间做词数统计,假设a区间词数小于区间长度,则遍历一次40个数,此时只关注区间a上的数,并用bitmap统计区间a上的数的出现情况,在a区间必定至少有一个数不存在。
  • 某搜索公司一天的用户搜索词汇是海量的,假设有百亿的数据量,请设计一种求出每天最热100词的可行办法
    还是用hash函数分流,然后在用hash表做词频统计,如果机器数有限,则需要分流每台机器上的文件,再用hash表做词频统计。
    创建hash表后,可以利用小根堆来进行top100筛选,得到每个小文件排序后的top100,然后再将同一台机器上所有文件的top100通过小根堆或外排得到每台机器上的排序后的top100,最后再通过小根堆或外排得到所有机器也就是所有数据桶的排序后的top100,返回即可。
  • 工程师常使用服务器集群来设计和实现数据缓存,以下是常见的策略。1,无论是添加、查询还是删除数据,都先将数据的id通过哈希函数转换成一个哈希值,记为key。2,如果目前机器有N台,则计算key%N的值,这个值就是该数据所属的机器编号,无论是添加、删除还是查询操作,都只在这台机器上进行。请分析这种缓存策略可能带来的问题,并提出改进的方案
    带来的问题:如果增加或删除机器的话,数据迁移的代价太高
    推荐的一致性hash的算法:
    1、将所有的数据id的hash结果看成一个环形。
    2、将所有的机器工具其id计算hash结果,并将其插入到数据hash结果组成的环中
    3、数据处理时,计算某条数据的hash值后,在环中找从这个hash值开始顺时针方向最近的机器即可,那么数据的增删改查都在此机器上进行
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容