实时Hadoop应用的Lambda架构详解
1. 速度层概述
在数据处理中,批处理层的延迟使得查询难以获取最新或接近实时的数据。速度层的目的就是无延迟地提供这些数据。从功能上看,速度层与批处理层相似,都基于主数据生成视图,但二者存在明显差异:
- 批处理层使用所有数据计算视图,而速度层仅处理批处理层尚未处理的新数据或近期数据。
- 批处理层通过重新计算(或重建)来更新视图,速度层则对视图进行增量处理,仅处理自上次增量处理后执行的增量(或新)事务。
速度层视图的更新方式有同步和异步之分:
- 同步更新 :将对主数据的任何更新直接应用于速度层视图。由于集群处理更新或其他数据密集型操作的容量固定,在高峰使用时可能会因请求过多而超载,影响性能和功能。
- 异步更新 :将更新请求放入队列,实际更新在稍后进行。其延迟取决于更新量、所需处理资源、对近实时数据的功能需求等因素,但能有效处理更多请求,不受高峰使用峰值的影响。
异步更新具有诸多优势,如处理队列中的多条消息、提高吞吐量、通过缓冲额外请求来处理不同负载等。而同步更新缺乏控制更新量的机制,容易导致数据库系统超载崩溃,或出现请求丢弃、超时等错误。选择同步还是异步更新,可根据应用程序的处理类型决定:
- 同步更新适用于需要与用户界面协调、保证请求完成的事务系统。
- 异步更新更适合注重复杂计算和聚合而非交互式用户输入的分析应用程序。
2. 速度层实现所需特性
实现速度层时,需要支持以下特性:
- 随机读写
- 支持包括日期/时间在内的广泛数据类型