实时Hadoop应用的Lambda架构:批处理视图与服务层解析
1. 规范化与非规范化形式的优势
Lambda架构的结构带来了规范化和非规范化形式的显著优势。基于事实的模型采用规范化形式进行数据存储,数据更新通过插入带有最新时间戳的新行来处理。不过,规范化模型在查询性能方面表现不佳。因此,数据存储层和查询处理层被分离,查询由作为批处理层一部分构建的非规范化视图支持。这样,数据以规范化和非规范化两种形式保存,可兼得二者的好处。
在设计好模式后,可以采用合适的技术将其适配到NoSQL解决方案中,用于数据存储。基于事实的模型是一种概念或逻辑模型,可通过合适的NoSQL解决方案来实现。
2. 构建批处理视图
构建批处理视图的目的是提升用户访问(如查询、报告等)的性能。与大型数据集进行交互通常需要大量资源,且性能可能不佳,甚至可能因资源不足而失败。如果提前执行连接和聚合操作并将结果存储为数据对象,使用这些数据对象的查询可能会有更好的性能。预计算的数据可以进行索引,以加快读取和随机查找速度,这与可索引的RDBMS物化视图类似。这些预计算视图或批处理视图构成了Lambda架构的批处理层。
2.1 为基于事实的模型设计批处理视图
设计批处理视图时,首要目标是让针对主数据集的查询通过新设计的批处理视图上的函数执行,而非整个数据集。这样,索引后的批处理视图能快速检索所需值。可以为数据集创建多个批处理视图,以满足应用的所有功能需求。但创建的批处理视图越多,重建批处理层所需的时间就越长。因此,需要在视图数量和可用处理时间之间保持平衡,确定最佳的视图数量,以匹配处理能力、查询频率优先级和重建处理时间。
使用基于Hado