e淘海量数据处理架构:从离线到实时

需积分: 0 1 下载量 177 浏览量 更新于2024-07-22 1 收藏 1.89MB PDF 举报
"本文介绍了e淘在海量数据处理方面的实践,包括其面临的挑战、采用的架构以及实时处理技术。" 在e淘网的海量数据处理架构中,他们面临着一系列的挑战,如每天需处理数十亿条新的Log数据,数据量达到TB级别,并且需要对3个月甚至更长时间的数据进行分析。此外,复杂离线算法模型的处理、准实时的轻量快速算法数据更新以及高并发、高容量、快速响应的实时对外服务都是他们需要解决的关键问题。 在离线处理方面,e淘采用了大规模的Hadoop集群,拥有2000多个节点,提供了20000个Map任务和10000个Reduce任务的计算资源,存储容量达到了PB级别。这样的架构保证了高可用性和良好的扩展性,但离线处理的实效性较差,通常每天或每小时进行一次。 为了降低数据延迟,e淘探索了不同的方法。尽管基于MapReduce的实时计算可以实现秒级别的延迟,但由于调度开销高,他们选择了一种介于离线和实时之间的处理方式。他们利用TimeTunnel,一个遵循AMQP协议的企业消息交换平台,实现高效率、安全的消息交换。TimeTunnel具备实时高可靠收集日志、高性能分布式消息队列和完善的监控及错误恢复机制。然而,TimeTunnel在计算能力扩展性、处理复杂业务逻辑和编码复杂性方面存在不足。 为了解决这些问题,e淘进一步采用了Storm进行流计算。Storm是一个分布式RPC框架,支持持续计算,具备水平扩展性、并行计算能力以及动态增减节点的特性。它的核心功能包括可靠的消息处理、事务机制来防止重复计算,以及强大的容错性。Nimbus作为Storm的主控节点,负责任务分配和集群管理。 类似的技术还有Facebook的scribe、Cloudera的flume和LinkedIn的Kafka等,这些工具在实时数据收集和处理领域都有广泛应用。例如,Yahoo的S4和Facebook的puma(尚未开源)也提供了分布式事件处理的能力。 e淘的海量数据处理策略是一个综合性的解决方案,结合了离线处理的Hadoop集群、实时数据收集的TimeTunnel以及流计算的Storm,以应对大规模数据处理中的各种需求,包括实时性、可靠性、扩展性和复杂业务逻辑的处理。这些技术和实践经验对于其他需要处理海量数据的公司具有重要的参考价值。