近年来,随着互联网信息技术的不断发展,大量传感器,终端接入互联网,上传了海量的数据。所以使用Hadoop之类的大数据平台存储大量数据成了许多公司的选择。
但随着不断有新的大数据离线计算、实时计算任务新增到生产环境机器中来。目前的计算资源大都用于实时计算。为了不影响实时计算的时效性,离线计算部分的资源只有很少一部分。并且离线任务的启动会给实时计算带来很大的压力,容易产生数据延时等问题。下面介绍部分实践中的问题,并提供我方的解决思路,希望达到抛砖引玉的效果。
一)大数据平台消息处理拥塞的问题
下图显示了在数据流量小时,大数据平台能够轻易的同时处理实时和历史计算业务。两者能够和谐共处,各行其是。
而一旦实时数据业务和历史分析业务发生资源争抢时,情况就会发生如下图的逆转,对整个平台信息处理的时效性造成毁灭性打击,导致客户体验直线下降。
二)WEB前台展示分析过于依赖传统关系型数据库
大数据平台类似于Hadoop平台对于SQL的支持非常差,尤其是复杂的SQL(大量join,distinct)几乎是无能为力。导致了最终WEB与大数据平台严重割裂的结果,数据需要大数据组件处理完,再导入到Mysql类的关系型数据库中,导致数据处理的时效和Mysql数据库严重的性能问题。
大数据平台处理完的数据均需要录入到Mysql这种传统关系型数据库里面才能供前台WEB使用,导致作为中间数据承载的Mysql数据库承担了巨大的压力。尽管Mysql可以读写分离,新建从节点解决一部分读的问题,或者联合使用Redis内存缓存来解决热点低变化数据的读取问题。终归是治标不治本,一旦达到Mysql集群扩展的性能极限。伪分布式解决方案终究会遇到无法解决的性能问题