应用场景
在应用特性前,请先了解OmniRuntime中各特性的应用场景。
OmniData算子下推
OmniData算子下推特性适用于大量计算节点读取远端节点数据的大数据存算分离场景或大规模融合场景。这类场景下,大量原始数据从存储节点通过网络传输到计算节点进行处理,有效数据占比低,极大浪费网络带宽,导致出现网络瓶颈。
OmniOperator算子加速
OmniOperator算子加速特性适用于数据分析引擎,用户输入SQL在引擎执行时会转为一系列的算子,OmniOperator特性提供Native算子,分析引擎可以使用Native算子来替换分析引擎的原生算子,从而加速分析引擎的执行,提升分析性能。适用于大规模融合场景。
OmniMV物化视图
大数据OmniMV物化视图特性适用于数仓中SQL分析任务中存在较多相同的子查询的场景,对这些子查询重复地进行计算会浪费大量的计算资源,影响查询效率。通过AI算法从历史SQL查询中推荐出最优物化视图,并自动对用户SQL进行物化视图匹配,将匹配成功的物化视图替换到用户SQL的执行计划中,大幅减少重复计算,提升查询性能。
OmniShuffle特性
使用OmniOperator后Shuffle仍然写在磁盘上,进行Shuffle密集型的作业时,在Map过程完成后,仍然需要进行大量数据的跨节点交换,仍然存在瓶颈,叠加OmniShuffle后,可以达到叠加效果,带来更多的性能收益。适用于Shuffle密集作业场景。
大数据场景中,使用大数据引擎Spark进行Shuffle密集型的作业,在Map过程完成后,需要进行大量数据的跨节点交换。统计数据显示,在很多分析场景中,Spark的Shuffle过程占据了最多的时间和资源开销,比如有些可以占到Spark业务端到端时间开销的50%~80%。
大数据OmniShuffle作为Spark的性能加速组件,通过Spark提供的插件机制,实现Shuffle Manager和Broadcast Manager插件接口,无侵入式替换Spark的原生Shuffle和Broadcast。大数据OmniShuffle通过实现Shuffle Manager插件接口使能In-memory Shuffle,即在内存池中通过内存语义完成Shuffle过程,减少Shuffle数据落盘,降低数据落盘读取、序列化和反序列化、压缩和解压缩带来的时间开销和算力开销;通过实现Broadcast Manager接口使能基于内存池共享的方式进行变量广播,提升广播变量在各个Executor之间的共享传输效率。同时,大数据OmniShuffle支持RDMA(Remote Direct Memory Access)和TCP两种网络模式。相比TCP,RDMA可提高传输效率,降低对算力的要求,实现节点间数据的高效交换。
同时,OCK BoostTuning for Spark SQL通过基于历史记录的实时调整方式实现Spark SQL作业的并行度自动调整,消除用户针对并行度的调优工作量,同时消除90%以上Shuffle Reduce侧Spill,从而实现缩短作业运行时间,提高大数据集群作业吞吐量。
Spark本身具有一套插件机制,开发者可以通过实现Spark的插件接口替换Spark原有功能。
OmniAdvisor参数调优特性
离线SQL查询任务的场景下,使用OmniAdvisor参数调优特性,可以对历史的Spark、Hive SQL任务进行参数解析,然后利用AI算法智能化的对任务进行参数采样调优,最终对该任务实现端到端在线参数调优。
OmniHBaseGSI全局二级索引特性
在非主键匹配的查询场景下,可以降低应用的开发复杂性、保证数据的一致性和提高了查询效率。这类场景下,HBase原生scan会进行一次全表扫描,效率极低,尤其在数据表比较大的时候,表现更差。
OmniData算子下推叠加OmniOperator算子加速特性
将OmniData算子下推和OmniOperator算子加速两个特性进行适配,达到叠加效果,带来更多的性能收益。
OmniShuffle Shuffle加速叠加OmniOperator算子加速特性
使用OmniOperator算子加速后Shuffle仍然写在磁盘上,进行Shuffle密集型的作业时,在Map过程完成后,仍然需要进行大量数据的跨节点交换,仍然存在瓶颈,叠加OmniShuffle Shuffle加速后,可以达到叠加效果,带来更多的性能收益。适用于Shuffle密集作业场景。