论文部分内容阅读
近年来,诸多大数据环境下的应用呈现数据多源并发、数据聚合、在线实时处理的特征。原本承载着海量数据处理任务的Hadoop MapReduce计算框架,在实时数据处理方面,存在响应时间和及时性方面的诸多限制。这促进了实时数据处理相关技术的迅速发展,实时计算成为了目前大数据领域的研究热点。Storm作为应用于实时数据处理领域的大数据处理工具,可以简单可靠地处理大量数据流,具有广泛的应用场景,国内外很多企业都在研究和构建基于Storm的实时计算系统。但是早期的Storm集群中,Nimbus节点只有一个,存在分布式系统中的单点故障问题,降低了集群的可用性,很难保证对外提供持续不间断的服务。而且在现如今的实际生产环境中,集群版本和业务类型复杂多样,Storm自身又缺少完整的监控运维系统,如果不能及时发现异常情况,将给企业和用户造成难以预计的损失。如何避免损失,实现Storm集群的高可用性,成为企业不得不面临的一个重要问题。本文首先研究了实时计算系统Storm,详细分析了Storm的工作原理、作业提交处理流程以及各个节点的工作机制。针对Nimbus的单点故障问题,进一步分析了分布式协调系统Zookeeper,对其体系结构、数据模型、ZAB协议以及典型的应用场景进行了深入的研究。在此基础上,分析探讨一种基于Zookeeper的实现单个Storm集群自动故障切换的高可用性解决方案,并从领导选举与故障转移、Topology代码共享存储、客户端与Nimbus通信等方面进行了详细的阐述。结合当前企业的多集群工作环境,提出一种基于Zookeeper的多集群Storm高可用性解决方案,集群间提供冗余机制,当一个集群整体故障时可以快速把拓扑迁移到其他集群。通过制定计划任务和实现实时报警服务完善监控运维模块,实时监控集群状况和拓扑运行状态,保证集群的高效稳定。最后,通过搭建实验环境对高可用性解决方案进行测试,验证了该方案的可行性和有效性。实验结果表明,该方案能够及时发现定位问题并完成故障恢复工作,提高了Storm集群的可用性。