在学习spark的过程中,笔者了解到spark中对于广播变量采用的是bt机制,于是去膜拜了一下相关的论文,即《Performance and Scalability of Broadcast in Spark》。于是针对这篇论文中提到的四种广播机制做了一些总结。
本文讨论了四种广播机制: Centralized HDFS Broadcast (CHB) ,Chained Streaming Broadcast (CSB), BitTorrent Broadcast (BTB), and SplitStream Broadcast (SSB)
对于广播机制的评价
广播机制应当满足的4点要求:performance, scalability, falut tolerance, topology independence。其中对于第四点topology independence,由于数据并行作业的集群是根据每个作业分配的,所以广播机制必须满足并不依赖于任何一种固定的拓扑结构。由于上述提到的四种广播机制全部满足topology independence,所以对各个广播机制进行比较时,并不比较此方面。
Centralized HDFS Broadcast (CHB)
概述
spark中最初采取的的广播机制CHB是采用中心化的方式,即sender将数据放在hdfs中,然后receiver去取,不难看出对于这样的广播策略,当集群规模相当大时,hdfs便成为了性能瓶颈。
分析
performance:worker每次都去距离自己最近的副本去读取变量,所以性能很好,但是随着集群规模增加,hdfs将成为性能瓶颈
scalability:在到达分界点之前,广播