美文网首页实时计算技术
双11大规模数据流处理技术- Galaxy

双11大规模数据流处理技术- Galaxy

作者: 曹振华 | 来源:发表于2017-01-19 13:45 被阅读228次

每年双11除了“折扣”,阿里人关注的另一个焦点,就是面向全世界媒体 直播的“实时大屏”(如下图所示)。包括总成交量在内的各项指标,通过数字 维度展现了双11狂欢节这一是买家,卖家及物流小二共同创造的奇迹!

Paste_Image.png
              图 3:双11媒体直播大屏 

为实现这一大屏,背后需要实时处理海量的、庞大电商系统各个模块产生的 交易日志。例如双 11 当天产生的日志量达到了 PB 级别,而每秒处理的峰值更 是高达近1亿事件! 如此大规模、高吞吐和低延时计算,带来一系列世界级的技术挑战,包括:

  1. 实时编程:流式的数据处理给业务逻辑的表达和推理带来了很多的复
    杂性。特别面对不断变化的业务需求,如何帮助用户快速地编写和验证实时计算 逻辑是至关重要的。
  2. 低延时:实时计算强调计算延时和结果的时效性。例如实时大屏对计算 延时特别敏感,每年的双11都超越前一年更早地达到相同的成交量,系统需要 在秒级甚至毫秒级反应出每一笔交易。即使在流量高峰时(双 11 晚 0:00 点) 也需要保证延时!
  3. 集群利用率:为提高资源利用率,我们将不用业务的实时处理逻辑共 享一个集群。这样的共享也带来性能隔离的问题,即如何让同一台物理机上的不 同逻辑任务不互相干扰。这也是大部分开源框架忽略的重要问题。
  4. 严格容错及数据一致性:随着应对高吞吐而不断扩大的集群规模,各 种软硬件故障都难以避免。如何保证实时计算在任何故障下都能产生准确、一致的计算结果,不遗漏、重复事件输出,也不引起内部状态的偏差,是另一个重大 挑战。
  5. 多样化场景支持:随着实时决策对业务的价值越来越多,系统还需要 支持越来越复杂和多样化的场景,如在线机器学习、结合图计算实现的动态关系 网络分析等等。 下文介绍Galaxy的重要技术创新,简要描述它们如何帮助应对以上技术挑 战。

2.1 SQL 与增量计算——复用熟悉的离线思维,自动实
现增量(流式)计算 为了简化用户编程,特别是利用原有的离线计算作业快速实现实时计算, Galaxy允许通过高层描述性语言,如用户熟悉的SQL来编写流计算作业。例如 下面的例子,通过简单几行SQL代码就可以实现过滤、双流关联等业务逻辑。

Paste_Image.png

在执行时,由于数据是以流式进入系统的,用户的 SQL 就像数据库视图一 样,被自动增量更新,并以一定的频率输出结果,供下游计算和展示。 这一独特的编程设计,不仅帮助用户借助熟悉的离线处理思维表达实时计算 逻辑,也因为同样的程序可以在离线系统运行,使得结果的对比变得易如反掌。

2.2 高性能优化引擎——实现低延时计算!

用户的SQL脚本经过编译优化,生成数据流图,然后运行于Galaxy的分布 式引擎之上。相比开源数据流引擎,Galaxy 引擎在“阿里巴巴规模”下,面对 真实复杂的业务场景做了很多优化。包括自适应的消息打包、自定义序列化、数 据行+列压缩、先进的内存管理、和内部缓存队列和线程模型,以及基于下游向 上游“反向”传递压力的流控策略等。

Paste_Image.png

经过以上一系列的优化,Galaxy 相比去年提升了 6 倍左右的吞吐性能。下 图显示了 Galaxy 相比开源系统的性能优势。在面对今年双 11 3 倍于去年的峰 值情况下,表现非常稳健。

Paste_Image.png

图 5:开源框架性能对比,通过“窗口 WordCount(6 组参数)”基准测 试获取.

2.3 灵活的资源调度

Galaxy 面对阿里巴巴集团众多业务场景,将不同业务放置于大规模(几千 台服务器组成的)共享集群中,以提高资源利用率。另一方面也随之带来了“多 租户”环境下的作业资源隔离问题,它直接影响资源的有效利用和作业的计算性 能。 经过多年的积累,Galaxy支持CPU、内存、网络和磁盘I/O等多维度资源 的隔离。例如,对于 CPU 的隔离支持灵活的 min-max 策略,既保证了每个作 业基本的资源需求,也使的空闲的资源被大限度利用。

Paste_Image.png
      图6:作业维度的CPU资源min-max共享模型 

不一样的技术创新
166
在此基础上,Galaxy 的资源调度还支持一定比例的“超卖”、作业优先级 调度、动态负载均衡和微作业共享单一物理核等多种机制。对于资源消耗特别大 的作业还支持动态按需分配(即资源的弹性分配)。在满足复杂的运维要求和实 时计算连续性的同时,实现了高效的资源利用和性能隔离。

2.4容错与状态管理 流计算需要连续处理可能无界的输入和连续产生输出。在长时间运行中,大 规模计算集群的各种软件或硬件故障难以避免。由此对于计算和中间结果(如内 存状态)的容错就至关重要。为了做到精确的容错和故障恢复,保证结果的准确 性。Galaxy 支持多种灵活的容错策略,以在不同计算特性下,权衡容错资源消 耗和恢复性能。如基于输入的重新计算、状态检查点(checkpoint),甚至是 多副本的状态和计算容错等。 特别是自动的分布式增量检查点功能,系统自动利用内存、本地磁盘和远程 存储构成的多级存储,在不影响流计算延时的情况下异步实现了计算状态的持久 化。当有故障发生时,保存的状态可以被快速加载。这一切对用户都是无感知的。

Paste_Image.png
           图7:自动利用多级存储的流计算状态管理 

2.5 开放可编程 API(兼容 Apache Beam)

除了SQL这样高层的描述语言和用户自定义逻辑(UDF),Galaxy还支持 Apache Beam API,以提供更为灵活的实时逻辑编程。Beam是一个统一开放 的大数据应用编程接口,可以同时描述离线和在线逻辑,早由 Google 提出。 Beam提供了功能丰富的编程接口,能有效的处理有界、无界、乱序的数据流输 入。 下面显示了通过Beam实现的流式WordCount的例子: 1.指定Runner(底层计算引擎)创建一个Pipeline。 2.使用Source在 Pipeline上生成一个PCollection,输入数据。 3.对 PCollection应用Transforms操作,比如wordCount中的count操作。 4.对后的PCollection应用Sink,输出结果到外部存储中。 5.Run Pipeline到底层的计算引擎中。 使用Beam实现WordCount代码样例

public static class CountWords extends PTransform<PCollection<String>, PCollection<KV<String, Long>>> {   
     @Override   public PCollection<KV<String, Long>> apply(PCollection<String> lines) {     
         // Convert lines of text into individual words.    
         PCollection<String> words = lines.apply(         
               ParDo.of(new ExtractWordsFn()));     
              // Count the number of times each word occurs.   
                PCollection<KV<String, Long>> wordCounts =         words.apply(Count.<String>perElement());    
             return wordCounts; 
   } 
}

借助Beam,用户可以利用高性能的Galaxy引擎,定制面向特定领域的系 统交互接口。同时,Galaxy 今后也将兼容更多生态(如 Spark Streaming 和 Flink Streaming API)。

2.6 可视化集成开发平台和自动化运维

Galaxy 还提供了“一站式”的集成开发环境——贝叶斯(Bayes, https://data.aliyun.com/product/sc)和自动化运维平台——特斯拉(Tesla)。 通过它们,用户可以方便地管理流计算应用的生命周期,包括编程、调试、监控 运维,极大地降低了流计算系统的使用门槛。

Paste_Image.png
              图8:贝叶斯集成开发环境 

2.7 双 11 的宝贵工程经验
为保障系统在双11平稳支撑业务,在以上功能基础上,我们还总结了完整 的全链路保障方法: • 主备双链路容灾:利用 Galaxy 对多副本执行的支持,面向双 11 重点 媒体大屏等实时业务,实现了跨机房的多链路副本。哪怕是整个机房的故障,都 能在秒级自动切换到另一副本上执行,保障了双11系统高可用。 • 实时全链路监控:我们从数据采集、读取、消费、入库各个环节都增加 延时指标的埋点,可以清晰地看到整条链路各个阶段的延时,快速分析哪个组件 性能瓶颈。另外,针对作业本身运行情况,比如输入吞吐、流量、CPU 和内存 消耗,都做了实时分析和展示的系统,能在秒级发现作业的异常。

• 运维诊断工具:为应对各种应急响应,我们做了一套完整的运维诊断工 具用于发现集群热点机器、热点作业。在Tesla页面上能快速找到集群的热点机 器,通过“机器分析”工具查看这台机器上实时跑的任务,并且能定位到相应的 业务和用户。通过“作业分析”工具能自动诊断异常,结合作业的优先级,实现 了一键负载均衡、启停、续跑等运维操作。 通过这些保障设施,双11当天,即使在发生交换机硬件故障的情况下,面 向全球直播的媒体大屏业务并没有受到任何影响!

2.8 小结
拥有这些和其它诸多能力,Galaxy 已经具备了相当完善的实时计算能力, 也提供了“一站式”的解决方案。今年双11当天,Galaxy处理了PB级别数据, 处理峰值达到了 1 亿事件每秒,平均处理延迟在毫秒级!除了双 11 媒体大屏, Galaxy 还支撑着阿里巴巴集团内外众多实时业务,包括数据运营、广告营销、 搜索个性化、智能客服、物流调度、支付宝、聚划算等

相关文章

网友评论

    本文标题:双11大规模数据流处理技术- Galaxy

    本文链接:https://www.haomeiwen.com/subject/xodibttx.html