首页 > 程序开发 > 综合88必发娱乐官网 > 其他综合 > 正文
分布式应用开发相关的面试题收集
2017-06-17       个评论    来源:  
收藏    我要投稿

分布式应用开发相关的面试题收集。

1. 生产系统每天会产生一个日志文件F,数据量在5000W行的级别。文件F保存了两列数据,一列是来源渠道,一列是来源渠道上的用户标识。文件F用来记录当日各渠道上的所有访问用户,每访问一次,记录一条。请问如何快速计算出各渠道上新增的用户?

2. 有50台前端服务器分布在各个节点上,每台前端下都分别有一个本地的数据库,前端服务器每秒接受10万次请求,并且需要把获取到的内容插入至本地数据库。如果某台后端服务器需要从这50台前端服务器的本地数据库里去请求一些数据,用什么方式效果最好。

3. 请介绍一下分布式两阶段提交协议?

阶段一:开始向事务涉及到的全部资源发送提交前信息。此时,事务涉及到的资源还有最后一次机会来异常结束事务。如果任意一个资源决定异常结束事务,则整个事务取消,不会进行资源的更新。否则,事务将正常执行,除非发生灾难性的失败。为了防止会发生灾难性的失败,所有资源的更新都会写入到日志中。这些日志是永久性的,因此,这些日志会幸免遇难并且在失败之后可以重新对所有资源进行更新。 * 阶段二:只在阶段一没有异常结束的时候才会发生。此时,所有能被定位和单独控制的资源管理器都将开始执行真正的数据更新。 在分布式事务两阶段提交协议中,有一个主事务管理器负责充当分布式事务协调器的角色。事务协调器负责整个事务并使之与网络中的其他事务管理器协同工作。 为了实现分布式事务,必须使用一种协议在分布式事务的各个参与者之间传递事务上下文信息,IIOP便是这种协议。这就要求不同开发商开发的事务参与者必须支持一种标准协议,才能实现分布式的事务。

4.一个很大的2D矩阵,如果某点的值,由它周围某些点的值决定,例如下一时刻(i,j) 的值取当前时刻它的8邻点的平均,那么怎么用MapReduce来实现。

参考答案及分析:

首先,让我们以WordCount为例来解释MapReduce是怎么工作的。

原始状态下,输入–Map — Shuffle — Reduce — 输出

假设有如下的两个文本文件来运行WorkCount程序:

Hello World Bye World

Hello Hadoop GoodBye Hadoop

map数据输入

Hadoop针对文本文件缺省使用LineRecordReader类来实现读取,一行一个key/value对,key取偏移量,value为行内容。

如下是map1的输入数据:

Key1 Value1

0 Hello World Bye World

如下是map2的输入数据:

Key1 Value1

0 Hello Hadoop GoodBye Hadoop

map输出/combine输入

如下是map1的输出结果

Key2 Value2

Hello 1

World 1

Bye 1

World 1

如下是map2的输出结果

Key2 Value2

Hello 1

Hadoop 1

GoodBye 1

Hadoop 1

combine输出

Combiner类实现将相同key的值合并起来,它也是一个Reducer的实现。

如下是combine1的输出

Key2 Value2

Hello 1

World 2

Bye 1

如下是combine2的输出

Key2 Value2

Hello 1

Hadoop 2

GoodBye 1

combiner视业务情况来用,减少MAP->REDUCE的数据传输,提高shuffle速度,就是在map中再做一次reduce操作。combiner使用的合适,可以在满足业务的情况下提升job的速度,如果不合适,则将导致输出的结果不正确。

对于wordcount来说,value就是一个叠加的数字,所以map一结束就可以进行reduce的value叠加,而不必要等到所有的map结束再去进行reduce的value叠加。

reduce输出

Reducer类实现将相同key的值合并起来。

如下是reduce的输出

Key2 Value2

Hello 2

World 2

Bye 1

Hadoop 2

GoodBye 1

即实现了WordCount的处理。

用MapReduce来解决上述问题,以下标对作为map的key,遇到(i,j),生成(i-1,j-1),(i-1,j),etc,然后在reduce时merge相同的key,并计算value。

点击复制链接 与好友分享!回本站首页
上一篇:elasticsearch源码分析之启动过程
下一篇:VI编辑器有关知识
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 |
版权所有: 88bifa.com--致力于做实用的IT技术学习网站