ali 电面

今天接到ali电面,从前到后问了一堆问题,突然发现自己差得不是一点两点,怎么办?慢慢补呗微笑


在何方何处,又如何知道这一切的开始结束。。。


mapreduce --> hadoop的问题:

HDFS具体问题,MapReduce具体过程,主要shuffle的过程,Job之间的调度算法了解。

宏观上,Hadoop每个作业要经历两个阶段:Map phase和reduce phase。

对于Map phase,又主要包含四个子阶段:从磁盘上读数据-》执行map函数-》combine结果-》将结果写到本地磁盘上;

对于reduce phase,同样包含四个子阶段:从各个map task上读相应的数据(shuffle)-》sort-》执行reduce函数-》将结果写到HDFS中。

性能降低点:1. map中间结果写到磁盘; 2. shuffle阶段采用http将各个map task上远程拷贝结果


        如图所示,每个reduce task都会有一个后台进程GetMapCompletionEvents,它获取heartbeat中(从JobTracker)传过来的已经完成的task列表,并将与该reduce task对应的数据位置信息保存到mapLocations中,mapLocations中的数据位置信息经过滤和去重(相同的位置信息因为某种原因,可能发过来多次)等处理后保存到集合scheduledCopies中,然后由几个拷贝线程(默认为5个)通过HTTP并行的拷贝数据,同时线程InMemFSMergeThread和LocalFSMerger会对拷贝过来的数据进行归并排序。

Job调度:
1. 默认的调度器FIFO
作业的优先级高低,再按照到达时间的先后选择被执行的作业
2.  计算能力调度器Capacity Scheduler
支持多个队列,每个队列可配置一定的资源量,每个队列采用FIFO调度策略,为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定。调度时,首先按以下策略选择一个合适队列:计算每个队列中正在运行的任务数与其应该分得的计算资源之间的比值,选择一个该比值最小的队列;然后按以下策略选择该队列中一个作业:按照作业优先级和提交时间顺序选择,同时考虑用户资源量限制和内存限制。
3公平调度器Fair Scheduler
同计算能力调度器类似,支持多队列多用户,每个队列中的资源量可以配置,同一队列中的作业公平共享队列中所有资源


数据结构,算法,最小堆(大在头)最大堆(小在头)
1、常见数据结构
线性:数组,链表,队列,堆栈,块状数组(数组+链表),hash表,双端队列,位图(bitmap)
树:堆(大顶堆、小顶堆),trie树(字母树or字典树),后缀树,后缀树组,二叉排序树,二叉平衡树,B+/B-,AVL树,Treap,红黑树,splay树,线段树,树状数组
图:图
其它:并查集
2、常见算法
(1)       基本思想:枚举,递归,分治,模拟,贪心,动态规划,剪枝,回溯
(2)       图算法:深度优先遍历与广度优先遍历, 最短路径,最小生成树,拓扑排序
(3)       字符串算法:字符串查找,hash算法,KMP算法
(4)       排序算法:冒泡,插入,选择,快排,归并排序,堆排序,桶排序
(5)       动态规划:背包问题,最长公共子序列,最优二分检索树
(6)       数论问题:素数问题,整数问题,进制转换,同余模运算,
(7)       排列组合:排列和组合算法
(8)       其它:LCA与RMQ问题


goosip协议


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值