● 摘要
Storm分布式流式处理框架在实时数据分析,处理中广泛使用。通过分析Storm作业分配策略,监控Storm集群的物理资源(IO、网络带宽和CPU)利用率、分析Storm作业的执行日志发现,Storm系统在用户作业任务分配过程中存在一些问题,主要表现在三个方面:一是用户作业任务并行度设置方式不合理,对用户的分布式编程经验要求高;二是在执行Storm作业过程中,任务并行度始终保持不变,缺少对数据流和外部负载的动态适应能力,导致用户作业实时性得不到保障;第三,相同资源密集型作业耦合,集群内部用户作业资源相互竞争,集群资源利用率不高。
本文通过研究Storm系统框架结构和Topology作业执行过程,分析并总结影响用户作业任务分配问题的两个主要因素:一是不灵活的任务并行度,不能对数据流和外部负载的变化及时的响应;二是Storm作业执行过程中不同任务对CPU、网络带宽、内存的使用情况存在很大差异,相同资源密集型的作业分配到同一计算节点,导致集群物理资源利用率低。
本文进一步设计了针对上述问题的弹性技术方案:首先引用了逻辑任务和物理任务的概念,并分离Storm系统中逻辑任务和物理任务,在此基础上,针对任务并行度动态伸缩问题,设计了高效的任务并行度算法,并实现了逻辑任务与物理任务的重映射方法,集成在本地任务调度中。同时,本文针对资源需求多样化的任务调度,设计了一种动态负载平衡方法。在本文系统的设计和实现中,考虑到本文设计方案与Storm作业的兼容性,保留并延续了默认Storm中的容错策略。
本文按照问题定义、问题分析、解决方案设计、系统实现的步骤对Storm系统中用户作业任务分配过程的优化过程进行详细阐述。最后设计了两类实验对系统进行分析评估:任务并行度动态伸缩测试实验,验证了任务并行度动态伸缩的合理性,验证该策略能快速的对本地资源的变化做出反馈。动态负载平衡测试实验,验证了全局动态负载平衡策略的合理性。本文设计的优化方案可以提高Storm作业对数据流和外部负载变化的动态适应能力,同时提高Storm系统集群的资源使用率。本文实现的弹性技术对多种数据处理系统的优化问题均有一定参考价值。
关键词:云计算,Storm,流式处理,任务并行度,数据处理
相关内容
相关标签