什么是分布式系统?
分布式系统是建立在网络上的软件系统,正是因为软件的特性,所以分布式系统具有内聚性和透明性;
在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像一个系统似的.并且在这样一个分布式系统中一般都会设立一个主节点作为客户端接口(告诉客户端到集群中哪台主机中存储与获取数据),现代化的分布式系统还应部署为高可用的(HA)架构;
主要是解决互联网下大数据时代数据的存储和计算等问题.
什么是高可用(HA)架构?
高可用架构应具备但不限于以下特征:
1.主从切换
当主节点宕机后,从节点能够快速切换状态为主节点,并在原主节点回复后,快速切换回备用节点状态.
2.负载均衡
当服务的请求量比较高时,一台服务器无法满足需求,这时候需要多台机器提供相同的服务,将请求均衡的分发到不同机器上,从而减轻个别机器的负担.
甚至还能根据集群部署的不同数据节点的远近情况,网络情况和主机的配置情况来分发任务,从而提高客户端的相应速度和个别服务端的压力.
3.易于横向扩张
当用户量急剧增加,已有的服务无法承载更多的用户时,便需要对服务进行扩展.在Hadoop集群中数据节点之间通过管线来实现数据的快速传输.
你知道什么高可用方式吗?
Hadoop集群通过Zookeeper架构来实现高可用,该架构主要利用心跳证明服务来确认主节点与数据节点的情况,是否发生宕机,若是长时间无法访问,考虑到可能是点与点之间的网络拥塞导致,因此他还会通过其他节点在测试,确保机器是否真实宕机,若主节点发生宕机,需要切换备用节点,若是数据节点宕机,则需要根据集群的数据冗余度来调制数据块部署.
如何实现高可用?
高可用的实现可以通过部署多一台服务器作为备用主节点,当主节点宕机时,备用主节点快速继任(standby->active).
若是备用节点也宕机(概率非常低),则需要声明一台服务器,实现冷启动(对于一个大型并拥有大量文件和数据块的集群,冷启动需要花费大约30分钟)来顶替.
什么是冷启动?
Hadoop分布式系统的冷启动表示重启HDFS系统,主节点(NameNode)在该期间执行如下操作:
1.从fsimage中加载元数据到内存中(因此没有DataNode的信息,导致它认为所有的block都已丢失)
2.进入安全模式(SafeMode)
3.数据节点(DataNode)启动后,会定期向主节点汇报自身所持的blockID信息
4.随着数据节点陆续启动并汇报信息,主节点将内存元数据中的block所在DataNode信息更新补全
5.主节点找到所有block 的位置,从而自动退出安全模式.
你知道有哪些常用的负载均衡方式?
- DNS负载均衡 DNS是提供域名解析服务的,在我们访问网站的时候,首先需要DNS服务器将域名映射到IP,而这种映射关系是一对多的,这时候DNS服务器就实现了负载均衡;
- 网络层负载均衡 通过对IP层数据包的IP地址和端口号的修改,达到负载均衡的效果.在负载均衡服务器收到客户端的IP包时,通过修改IP包的目的IP地址和端口,然后原封不动的投递到内部网络中,数据包流入实际服务器.实际服务器处理完后,又会将数据包投递回负载均衡服务器,再修改目标IP地址为用户IP地址;
- 反向代理负载均衡 属于应用层的负载均衡,其作为应用服务器的上层,会设置内外两个网卡,对外接收并响应客户端请求,对内将客户端请求转发给应用服务器并接收应用服务器的返回.典型的反向代理负载均衡有Nginx+keepalived(实现高可用), Hadoop中Zookeeper即可实现负载均衡.