持续分享有用、有价值、精选的优质大数据面试题
致力于打造全网最全的大数据面试专题题库
61、分布式集群中为什么会有Master?
参考答案:
在分布式环境中,有些业务逻辑只需要集群中的某一台机器进行执行,其他的机器可以共享这个结果,这样可以大大减少重复计算,提高性能,于是就需要进行leader选举。
62、zk节点宕机如何处理?
参考答案:
Zookeeper本身也是集群,推荐配置不少于3个服务器。Zookeeper自身也要保证当一个节点宕机时,其他节点会继续提供服务。
如果是一个Follower宕机,还有2台服务器提供访问,因为Zookeeper上的数据是有多个副本的,数据并不会丢失;
如果是一个Leader宕机,Zookeeper会选举出新的Leader。
ZK集群的机制是只要超过半数的节点正常,集群就能正常提供服务。只有在ZK节点挂得太多,只剩一半或不到一半节点能工作,集群才失效。
所以3个节点的cluster可以挂掉1个节点(leader可以得到2票>1.5),2个节点的cluster就不能挂掉任何1个节点了(leader可以得到1票<=1)。
63、Zookeeper有哪几种几种部署模式?
参考答案:
部署模式:单机模式、伪集群模式、集群模式。
64、集群最少要几台机器,集群规则是怎样的?
参考答案:
集群规则为2N+1台,N>0,即3台。
65、Zookeeper集群支持动态添加机器吗?
参考答案:
其实就是水平扩容了,有两种方式:
全部重启:关闭所有Zookeeper服务,修改配置之后启动。不影响之前客户端的会话。
逐个重启:在过半存活即可用的原则下,一台机器重启不影响整个集群对外提供服务。这是比较常用的方式。3.5版本开始支持动态扩容。
66、Zookeeper对节点的watch监听通知是永久的吗?为什么不是永久的?
参考答案:
不是。
官方声明:一个Watch事件是一个一次性的触发器,当被设置了Watch的数据发生了改变的时候,则服务器将这个改变发送给设置了Watch的客户端,以便通知它们。
为什么不是永久的,举个例子,如果服务端变动频繁,而监听的客户端很多情况下,每次变动都要通知到所有的客户端,给网络和服务器造成很大压力。
一般是客户端执行getData(“/节点A”,true),如果节点A发生了变更或删除,客户端会得到它的watch事件,但是在之后节点A又发生了变更,而客户端又没有设置watch事件,就不再给客户端发送。
在实际应用中,很多情况下,我们的客户端不需要知道服务端的每一次变动,我只要最新的数据即可。
67、Zookeeper的java客户端都有哪些?
参考答案:
java客户端:zk自带的zkclient及Apache开源的Curator。
68、chubby是什么,和zookeeper比你怎么看?
参考答案:
chubby是google的,完全实现paxos算法,不开源。zookeeper是chubby的开源实现,使用zab协议,paxos算法的变种。
69、说几个zookeeper常用的命令。
参考答案:
常用命令:ls get set create delete等。
70、ZAB和Paxos算法的联系与区别?
参考答案:
相同点:
(1)两者都存在一个类似于Leader进程的角色,由其负责协调多个Follower进程的运行。
(2)Leader进程都会等待超过半数的Follower做出正确的反馈后,才会将一个提案进行提交。
(3)ZAB协议中,每个Proposal中都包含一个 epoch 值来代表当前的Leader周期,Paxos中名字为Ballot。
不同点:
ZAB用来构建高可用的分布式数据主备系统(Zookeeper),Paxos是用来构建分布式一致性状态机系统。