大数据面试题总结

1.HashTable,HashMap,CurrentHashMap
HashTable:哈希表,该哈希表将键映射到相应的值。任何非null对象都可以用作键或值。
HashMap:基于哈希表的Map接口实现。此实现提供所有可选的映射操作,并允许使用null值和null键。
(除了非同步和允许使用null之外,HashMap类与Hashtable大致相同。)此类不保证映射的顺序。
特别是它不保证该顺序恒久不变。
CurrentHashMap:此类与Hashtable相似,但与 HashMap不同,它不允许将null用作键或值。
2.Hive表关联查询,如何解决数据倾斜问题?
1.首先过滤掉无用的数据。
2.通过参数控制set
hive.groupby.skewinda=true;实现负载均衡,
3.通过优化sql语句,比如casewhen实现数据的负载均衡
3.Yarn的新特性
(1)ResourceManager HA
在apache hadoop 2.4或者CDH5.0.0版本之后,增加了
ResourcemManager HA特性,支持基于Zookeeper的热主备切换
(2)磁盘容错
在apache hadoop 2.4或者CDH5.0.0版本之后,增加了几个对多磁盘非常友好地参数,这些参数允许YARN更好地使用NodeManager上的多块磁盘,相关jira为:YARN-1781,主要新增了三个参数;
yarn.nodemanager.disk-health-checker.min-healthy-disks;
NodeManager上最少保证健康磁盘比例,当健康磁盘比例低于该值时,NodeManager不会在接收和启动新的Container,默认值为0.25,表示25%;
yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage;一块磁盘的最高使用率,当一块磁盘使用率超过该值时,则认为该盘为坏盘,不再使用该盘,默认是100,表示100%,可以适当调低;
yarn.nodemanager.disk-health-checker.min-free-space-per-disk-mb;一块磁盘最少保证剩余空间大小,当某块磁盘剩余空间低于该值时,将不再使用该盘,默认是0,表示0MB。
(3)资源调度器
Fair Scheduler:Fair Scheduler增加了一个非常有用的新特性,允许用户在线将一个应用程序从一个队列转移到另外一个队列,比如将一个重要作业从一个低优先级队列转移到高优先级别队列,操作命令是:bin/yarn appalication -movetoqueue appID -queue targetQueueName,相关jira为:YARN-1721
Capacity Scheduler:Capacity Scheduler中资源抢占功能经过了充分的测试,可以使用了。
4.如何使用Mapreduce实现2个表的Join
常见的join方法介绍
假设要进行join的数据分别来自File1和File2
(1)reduce side join
reduce side join是一种最简单的join方式,其主要思想如下:在map阶段,map函数同时读取两个文件File1和File2,为了区分两种来源的key/value数据对,对每条数据打一个标签(tag),比如:tag=0表示来自文件File1,tag=2表示来自文件File2.即:map阶段的主要任务是对不同文件中的数据打标签
在reduce阶段,reduce函数获取key相同的来自File1和File2文件的value list,然后对于同一个key,对File1和File2中的数据进行join(笛卡尔乘积)即:reduce阶段进行实际的连接操作。
(2)map side join
之所以存在reduce side join ,是因为在map阶段不能获取所有需要的join字段,即:同一个key对应的字段可能位于不同map中。
Reduce side join是非常低效的,因为shuffle阶段要进行大量的数据传输。
map side join是针对以下场景进行的优化:两个带连接表中,有一个表非常大,而另一个表非常小,以至于小表可以直接存放到内存中,这样,我们可以将小表复制多份,让每个map task内存中存在一份(比如存放到hash table中),然后只扫描大表:对于大表中的每一条记录key/value,在hash table中查找是否有相同的key的记录,如果有,则连接后输出即可。
为了支持文件的复制,Hadoop提供了一个类DistributedCache,使用该类的方法如下:
用户使用静态方法DistributedCache.addCacheFile()指定要复制的文件,它的参数是文件的URI(如果是HDFS上的文件,可以这样:hdfs://namenode:9000/home/XXX/file,其中9000是自己配置的NameNode端口号)JobTracker在作业启动之前会获取这个URL列表,并将相应的文件拷贝到各个TaskTracker的本地磁盘上。
(2)用户使用DistributedCache.getLocalCacheFiles()方法 获取文件目录,并使用标准的文件读写API读取相应的文件。
(3)SemiJoin
SemiJoin,也叫半连接,是从分布式数据库中借鉴过来的方法,它的产生动机是:对于reduce side join,跨机器的数据传输量非常大,这成了join操作的一个瓶颈,如果能够在map端过滤掉不会参加join操作的数据,则可以大大节省网络IO。
实现方法很简单;选取一个小表,假设是File1,将其参与join的key抽取出来,保存到文件File3中,File3文件一般很小,可以放到内存中。在map阶段,使用DistributedCache将File3复制到各个TaskTracker上,然后将File2中不在File3中的key对应的记录过滤掉,剩下的reduce阶段的工作与reduce side join相同。
更多关于半连接的介绍,可参考:半连接介绍;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大数据面试题v3.0 pdf》是一本常见的大数据面试题集合。该书主要涵盖了大数据领域的各个方面,包括数据处理、数据存储、数据分析以及大数据工具和技术等。该书的目的是帮助面试者更好地准备大数据面试,提高他们在面试过程中的竞争力。 《大数据面试题v3.0 pdf》这本书非常受欢迎的原因有以下几点: 1. 广泛而全面的内容:该书囊括了大数据领域的众多方面,从数据的采集、清洗、存储,到数据分析、可视化、机器学习等,涵盖了各种重要的技术和工具。面试者可以通过阅读这本书,全面了解大数据的各个方面,做到知识全面、准备充分。 2. 实战性强:书中的题目都是实际工作中常见的问题,具有一定的实战性。通过解答这些问题,读者可以提高自己的实际操作能力和解决问题的能力,更好地应对实际面试中的挑战。 3. 简洁清晰的表达:该书的题目都是精心设计的,问题清晰明了,答案简洁明了,容易理解。这样的设计能够帮助面试者更好地掌握每个问题的重点,并能够简明扼要地回答。 《大数据面试题v3.0 pdf》是一本很好的大数据面试准备资料,帮助面试者系统地学习和复习重要的大数据知识点,并提供了经典的面试题目,能够帮助面试者更好地应对大数据岗位的面试挑战。无论是对于准备面试的人还是对于大数据领域感兴趣的人来说,都是一本非常值得阅读的书籍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值